小编Rae*_*vik的帖子

配置Spring MVC控制器将文件发送到客户端

我认为我的情景很常见.我有一个数据库,我希望我的Spring MVC应用程序接受控制器中的请求,调用数据库服务来获取数据并将该数据作为CSV文件发送到客户端.我正在使用JavaCSV此处找到的库来协助此过程:http://sourceforge.net/projects/javacsv/

我发现了一些人做类似事情的例子,并拼凑出看似正确的东西.但是当我尝试这种方法时,实际上并没有发生任何事情.

我认为将数据写入HttpServletResponse'outputStream就足够了,但显然,我遗漏了一些东西.

这是我的控制器代码:

@RequestMapping(value="/getFullData.html", method = RequestMethod.GET)
public void getFullData(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException{
    List<CompositeRequirement> allRecords = compReqServ.getFullDataSet((String)session.getAttribute("currentProject"));

    response.setContentType("data:text/csv;charset=utf-8"); 
    response.setHeader("Content-Disposition","attachment; filename=\yourData.csv\"");
    OutputStream resOs= response.getOutputStream();  
    OutputStream buffOs= new BufferedOutputStream(resOs);   
    OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs);  

    CsvWriter writer = new CsvWriter(outputwriter, '\u0009');  
    for(int i=1;i <allRecords.size();i++){              
        CompositeRequirement aReq=allRecords.get(i);  
        writer.write(aReq.toString());  
    }     
    outputwriter.flush();   
    outputwriter.close();

};
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么一步?基本上,净效应是......没有.我原本以为设置标题和内容类型会导致我的浏览器接收响应并触发文件下载操作.

java csv file-io spring servlets

24
推荐指数
2
解决办法
4万
查看次数

Heatmap.js无法渲染

我正在尝试将heatmap.js与Google地图集成以进行一些可视化工作.我提到了这个:

http://www.patrick-wied.at/static/heatmapjs/example-heatmap-googlemaps.html

因此,我本地示例中的代码看起来几乎相同:

<!DOCTYPE html>
<html lang="en">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">    </script>
<div id="heatmapArea" style="width:1024px;padding:0;height:768px;cursor:pointer;position:relative;"></div>
<script type="text/javascript" src="js/jquery-1.8.2.js"></script>
<script type="text/javascript" src="js/heatmap.js"></script>
<script type="text/javascript" src="js/heatmap-gmaps.js"></script>
<script type="text/javascript">
    window.onload = function(){
    // standard gmaps initialization
    var myLatlng = new google.maps.LatLng(48.3333, 16.35);
    // define map properties
    var myOptions = {
      zoom: 3,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      disableDefaultUI: false,
      scrollwheel: true,
      draggable: true,
      navigationControl: true,
      mapTypeControl: false,
      scaleControl: true,
      disableDoubleClickZoom: false
    };
    // we'll use the heatmapArea 
    var map = new google.maps.Map($("#heatmapArea")[0], myOptions);

    // let's …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-maps heatmap

21
推荐指数
1
解决办法
5017
查看次数

使用预准备语句和变量将Java中的Order By与JDBC驱动程序绑定在一起

我正在使用

  1. jdbcTemplate与mySQL数据库建立JDBC连接
  2. 准备好的语句尽可能地保护自己免受SQL注入攻击
  3. 需要接受来自用户的请求,以对十几个不同列中的任何一列进行数据排序
  4. 以下声明

    jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?", colName, sortOrder);
    
    Run Code Online (Sandbox Code Playgroud)

当然这不起作用,因为变量绑定不应该仅为查询中的表达式的参数值指定列名.

那么......人们如何解决这个问题呢?只是在Java代码中进行排序似乎是一个简单的解决方案,但是因为我得到一个用于排序的列的变量字符串,并且一个变量告诉我排序顺序....这是一个丑陋的比较器条件数量到覆盖.这似乎应该是解决它的常见模式的常见问题......

java sorting collections jdbc jdbctemplate

18
推荐指数
1
解决办法
2万
查看次数

在类路径上没有检测到Spring WebApplicationInitializer类型

我的Eclipse项目突然不再正确部署.我无法追溯到我对环境所做的任何特殊改变.

我已经使用多个源控制项目进行了测试,它们的行为方式相同:

May 01, 2013 12:00:45 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in     production environments was not found on the java.library.path: C:\Program Files   (x86)\Java\jdk1.7.0_11\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\NVIDIA     Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows \System32\WindowsPowerShell\v1.0\;.
May 01, 2013 12:00:45 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:fismacm' did not find a matching property.
May 01, 2013 12:00:45 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
May 01, 2013 12:00:45 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
May …
Run Code Online (Sandbox Code Playgroud)

model-view-controller spring tomcat servlets spring-mvc

17
推荐指数
4
解决办法
11万
查看次数

Android - 为摘要身份验证配置Retrofit/Apache HttpClient

我正在开发一个Android项目并试图让摘要身份验证与Retrofit一起使用.我有点惊讶Retrofit本身并不支持它(或者更准确地说,OkHttp不支持它),但我认为没有必要抱怨.

我在这里浏览了很多线程,看起来正确的解决方案是将Apache HttpClient(原生支持Digest Auth)与Retrofit集成.这需要使用retrofit.client.Client实现包装HttpClient.必须解析改进的传入值并将其内置到新的HttpClient响应中,然后将其发送回Retrofit以进行正常处理.感谢Jason Tu和他的例子:https://gist.github.com/nucleartide/24628083decb65a4562c

问题是,它不起作用.我每次都会获得401 Unauthorized,我不清楚为什么.这是我的客户impl:

public class AuthClientRedirector implements Client {
    private final CloseableHttpClient delegate;

    public AuthClientRedirector(String user, String pass, String hostname, String scope) {
        Credentials credentials = new UsernamePasswordCredentials(user, pass);
        AuthScope authScope = new AuthScope(hostname, 443, scope);

        CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
        credentialsProvider.setCredentials(authScope, credentials);

        delegate = HttpClientBuilder.create()
        .setDefaultCredentialsProvider(credentialsProvider)
        .build();
   }

    @Override 
    public Response execute(Request request) {
    //
    // We're getting a Retrofit request, but we need to execute an Apache
    // HttpUriRequest instead. Use …
Run Code Online (Sandbox Code Playgroud)

authentication android digest-authentication apache-httpclient-4.x retrofit

11
推荐指数
1
解决办法
1106
查看次数

Android主动降噪功能

我正在开展一项雄心勃勃的项目,通过耳机或耳机在Android上实现主动降噪.

我的目标是用Android手机麦克风记录环境噪音,反相(从音频记录中拉出的短值上的简单*-1),并通过耳机播放倒置的波形.如果延迟和幅度接近正确,则应该使环境中的大量机械结构噪声无效.

这是我到目前为止所得到的:

@Override
    public void run()
    {
        Log.i("Audio", "Running Audio Thread");
        AudioRecord recorder = null;
        AudioTrack track = null;
        short[][] buffers  = new short[256][160];
        int ix = 0;

    /*
     * Initialize buffer to hold continuously recorded audio data, start recording, and start
     * playback.
     */
        try
        {
            int N = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);
            recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10);
            //NoiseSuppressor ns = NoiseSuppressor.create(recorder.getAudioSessionId());
            //ns.setEnabled(true);

            track = new AudioTrack(AudioManager.STREAM_MUSIC, 8000,
                    AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10, AudioTrack.MODE_STREAM);
            recorder.startRecording();
            track.play();
        /*
         * Loops until …
Run Code Online (Sandbox Code Playgroud)

audio android signal-processing noise-reduction audiorecord

8
推荐指数
1
解决办法
1万
查看次数

Windows环境中的Spring Security单点登录

我有一种感觉,我偶然发现了一个技术黑洞.有很多问题,并没有很多(最近的)答案.

简短的摘要:

我有一个Windows环境,使用域控制器和Active Directory实现(很快将使用Quest的身份验证服务).我有一系列基于Spring的Web应用程序,我想部署到这个环境,我们需要它们使用域凭据与Single Sign-On无缝协作.

看起来答案是这样的:

http://blog.springsource.org/2009/09/28/spring-security-kerberos/

一些本地AD管理员告诉我,ktpass是不安全的(主文件和密钥存储在纯文本文件中)和过时的解决方案.鉴于上面链接的博客是3年,很难说.

然后我遇到了这个:

http://forum.springsource.org/showthread.php?134465-JDK-7-0-and-Spnego-Extension-don-t-work!

大约一周左右发布,看起来最近集成SPNEGO扩展的努力表明它与JDK 7不兼容,不再支持!

对于人们来说,这似乎是常见的事情.我很惊讶,有一个像Spring一样广泛的框架,没有一种简单的方法可以实现这一点.我还没有在文档中找到另一种方法吗?

感谢您的任何见解或建议.

spring kerberos active-directory spring-security spnego

7
推荐指数
1
解决办法
1万
查看次数

如何在Spring MVC的会话中保存字符串?

我是Spring MVC的新手,我正在试图找出合适的方法来做一些我认为非常简单的事情.

我有一个简单的jQuery AJAX调用:

    var dataString = 'existingProject='+ $("#existingProject").val() + '&newProjName=' +      $("#newProjName").val();

    $.ajax({  
        type: "POST",  
        url: "manageProjects.html",  
        data: dataString            
    });
Run Code Online (Sandbox Code Playgroud)

我想为用户的会话设置此用户设置"项目".这个AJAX调用来自JS文件中的javascript并连接到我的Spring MVC控制器.

Controller正在获取这些变量,但我不知道如何处理它以使这些数据传入会话特定.

我已经搜索了这个主题,并遇到了6个不同的选项(使用自动装配注入会话范围的bean,使用xml配置和cgl-nodep库的bean,HttpServlet属性,@ ModelAttribute,@ SessionAttribute等等).我尝试使用Session scoped bean并定义以下内容:

@Component
@Scope("session")
public class UserSettings
Run Code Online (Sandbox Code Playgroud)

......但豆子并未被锁定在会议中.我在我的控制器中使用了@Autowire,发现它在会话之间仍然是相同的实例,所以我清楚地搞砸了.

我只是想保存一个怪异的字符串!必须有一个101级简单的方法来做到这一点......

ajax model-view-controller session jquery spring

3
推荐指数
1
解决办法
9088
查看次数

在 Android 中使用 MediaRecorder 和 NoiseSuppressor

我正在开始一个项目,使用如下代码试验 Android 麦克风:

    mRecorder = new MediaRecorder();
    mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    mRecorder.setOutputFile(mFileName);
    mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
Run Code Online (Sandbox Code Playgroud)

之后,准备()和开始()开始录制麦克风音频。

问题是,我还尝试添加一些音频处理效果,例如 NoiseSuppressor。API 文档声明 NoiseSuppressor 是这样完成的:

 NoiseSuppressor create (int audioSession)
Run Code Online (Sandbox Code Playgroud)

初始化录制流并获取该流的 audioSession 的适当方法是什么?我很惊讶地发现我无法从 mediaRecorder 获取 audioSession。

为什么存在两种设置音频流的方法?我看到了 AudioRecord 方法,但是 API 文档建议首选上述方法。

是什么赋予了?

audio android microphone noise mediarecorder

3
推荐指数
1
解决办法
5688
查看次数

Spring安全配置导致重定向循环

我最近开始学习spring security并尝试将其合并到我现有的Web应用程序中.该应用程序配置简单,所以我很困惑,我已经设法搞砸了.

我的web.xml

<!-- FilterChain proxy for security -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/appname-servlet.xml</param-value>
</context-param>


<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> 

<servlet>
    <servlet-name>nistreq</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/appname-servlet.xml</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>appname</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>mainpage.jsp</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)

和security-config.xml

<security:http access-denied-page="/denied.jsp" use-expressions="true">
    <security:form-login login-page="/login.jsp"
        authentication-failure-url="/login.jsp?login_error=true" />     
    <security:intercept-url pattern="/*" access="isAuthenticated()"/>
    <security:logout/>
</security:http>
Run Code Online (Sandbox Code Playgroud)

在我为springSecurityFilterChain("/ ")映射的 URI ,servlet映射的URL模式("/")和security:intercept-url模式("/ ")之间看起来有一些不好的魔力.这会导致重定向循环.我已经经历了无数变化的移动术语,将内容推送到子包以避免保护应用程序根目录等.我总是最终得到404的抓包,重定向循环等.

我正在做一些非常愚蠢的事情,并会欣赏另一双眼睛.感谢您的任何见解......

java spring spring-mvc spring-security

1
推荐指数
1
解决办法
6749
查看次数

Spring MVC Controller代码:已经为此响应调用了getOutputStream()

我正在尝试从一些数据库数据中组装一个CSV文件,并从我的Spring MVC控制器(和相关服务)发送到客户端.我正在使用SuperCSV来处理写作和输出:http://supercsv.sourceforge.net/

所以,这是控制器方法:

@RequestMapping(value="/getFullReqData.html", method = RequestMethod.GET)
public void getFullData(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException{
    logger.info("INFO:  ******************************Received request for full Req data dump");

    List<Requirement> allRecords = reqService.getFullDataSet(ProjectService.getProjectID((String)session.getAttribute("currentProject")));
    response.setContentType("text/csv;charset=utf-8"); 
    response.setHeader("Content-Disposition","attachment; filename=nistData.csv");
    OutputStream fout= response.getOutputStream();  
    OutputStream bos = new BufferedOutputStream(fout);   
    OutputStreamWriter outputwriter = new OutputStreamWriter(bos); 

    ICsvBeanWriter writer = new CsvBeanWriter(outputwriter, CsvPreference.EXCEL_PREFERENCE);
    try {
      final String[] header = new String[] { 
              "ReqID", 
              "ColName1",
              "ColName2",
              "ColName3",
              "ColName4",
              "ColName5", 
              "ColName6",
              "ColName7",
              "ColName8",                                 
              "ColName9",
              "ColName10" };

      // the actual writing
      writer.writeHeader(header);

      for(Requirement …
Run Code Online (Sandbox Code Playgroud)

java csv spring exception spring-mvc

1
推荐指数
1
解决办法
1万
查看次数