我认为我的情景很常见.我有一个数据库,我希望我的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)
我在这里错过了什么一步?基本上,净效应是......没有.我原本以为设置标题和内容类型会导致我的浏览器接收响应并触发文件下载操作.
我正在尝试将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) 我正在使用
以下声明
jdbcTemplate.query("SELECT * FROM TABLE1 ORDER BY ? ?", colName, sortOrder);
Run Code Online (Sandbox Code Playgroud)当然这不起作用,因为变量绑定不应该仅为查询中的表达式的参数值指定列名.
那么......人们如何解决这个问题呢?只是在Java代码中进行排序似乎是一个简单的解决方案,但是因为我得到一个用于排序的列的变量字符串,并且一个变量告诉我排序顺序....这是一个丑陋的比较器条件数量到覆盖.这似乎应该是解决它的常见模式的常见问题......
我的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) 我正在开发一个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
我正在开展一项雄心勃勃的项目,通过耳机或耳机在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) 我有一种感觉,我偶然发现了一个技术黑洞.有很多问题,并没有很多(最近的)答案.
简短的摘要:
我有一个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 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级简单的方法来做到这一点......
我正在开始一个项目,使用如下代码试验 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 文档建议首选上述方法。
是什么赋予了?
我最近开始学习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的抓包,重定向循环等.
我正在做一些非常愚蠢的事情,并会欣赏另一双眼睛.感谢您的任何见解......
我正在尝试从一些数据库数据中组装一个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) spring ×6
java ×4
android ×3
spring-mvc ×3
audio ×2
csv ×2
jquery ×2
servlets ×2
ajax ×1
audiorecord ×1
collections ×1
exception ×1
file-io ×1
google-maps ×1
heatmap ×1
javascript ×1
jdbc ×1
jdbctemplate ×1
kerberos ×1
microphone ×1
noise ×1
retrofit ×1
session ×1
sorting ×1
spnego ×1
tomcat ×1