此处将为大家介绍关于SpringMVC:如何修改从Spring控制器发送的响应?的详细内容,并且为您解答有关springmvc的控制器方法中如何实现转发和重定向的相关问题,此外,我们还将为您介绍关于j
此处将为大家介绍关于Spring MVC:如何修改从Spring控制器发送的响应?的详细内容,并且为您解答有关springmvc的控制器方法中如何实现转发和重定向的相关问题,此外,我们还将为您介绍关于java day62【 响应数据和结果视图 、 SpringMVC 实现文件上传 、 SpringMVC 中的异常处理 、 SpringMVC 中的拦截器 】、java – Spring MVC:如果我在控制器动作中启动线程会发生什么?、JavaEE——SpringMVC(13)--SpringMVC运行流程 在 Spring 的环境下使用 SpringMVC、JSON – Spring MVC:如何将json数据发布到spring MVC控制器的有用信息。
本文目录一览:- Spring MVC:如何修改从Spring控制器发送的响应?(springmvc的控制器方法中如何实现转发和重定向)
- java day62【 响应数据和结果视图 、 SpringMVC 实现文件上传 、 SpringMVC 中的异常处理 、 SpringMVC 中的拦截器 】
- java – Spring MVC:如果我在控制器动作中启动线程会发生什么?
- JavaEE——SpringMVC(13)--SpringMVC运行流程 在 Spring 的环境下使用 SpringMVC
- JSON – Spring MVC:如何将json数据发布到spring MVC控制器
Spring MVC:如何修改从Spring控制器发送的响应?(springmvc的控制器方法中如何实现转发和重定向)
我有一个使用Spring MVC 3.1.3的应用程序,以及使用Dojo
1.4开发的UI。该应用程序有几个控制器可以处理通过上载的二进制文件dojo.io.iframe.send
。控制器发送一个json响应,该响应必须包含
<html><body><textarea>{my json response}</textarea></body></html>.
我已经实现了在web.xml中定义的自定义过滤器:
<filter> <filter-name>dojoIframeFilter</filter-name> <filter-class>com.app.web.MultipartAjaxFilter</filter-class></filter><filter-mapping> <filter-name>dojoIframeFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
过滤器的doFilter具有此行为,该行为取自http://www.oracle.com/technetwork/java/filters-137243.html
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (request.getContentType() != null && request.getContentType().contains("multipart/form-data")) { CharResponseWrapper wrapper = new CharResponseWrapper((HttpServletResponse) response); chain.doFilter(request, wrapper); log.info(wrapper.toString()); //Modify response here } else { chain.doFilter(request, response); }}
包装器的输出为空。我还尝试了许多其他组合,例如为spring的调度程序servlet放置自定义过滤器,取消了doFilter内的if块,这些都不起作用。我还尝试编写Spring拦截器,但也失败了。有人可以提出其他想法吗?
提前致谢。
更新: 我禁用了spring安全性,并使用普通spring mvc进行了测试,但是问题仍然存在。我修改了标题和问题描述。
答案1
小编典典朋友,除了成功修改ServletResponse之外,我们还需要子类ServletOutputStream。请参阅http://docstore.mik.ua/orelly/xml/jxslt/ch08_04.htm了解详细解决方案。
java day62【 响应数据和结果视图 、 SpringMVC 实现文件上传 、 SpringMVC 中的异常处理 、 SpringMVC 中的拦截器 】
第 1 章 响应数据和结果视图
1.1 返回值分类
1.1.1 字符串
1.1.2 void
1.1.3 ModelAndView
1.2 转发和重定向
1.2.1 forward 转发
1.2.2 Redirect 重定向
1.3ResponseBody 响应 json 数据
1.3.1 使用说明
1.3.2 使用示例
第 2 章 SpringMVC 实现文件上传
2.1 文件上传的回顾
2.1.1 文件上传的必要前提
2.1.2 文件上传的原理分析
2.1.3 借助第三方组件实现文件上传
2.2springmvc 传统方式的文件上传
2.2.1 说明
2.2.2 实现步骤
2.2.2.1 第一步:拷贝文件上传的 jar 包到工程的 lib 目录
2.2.2.2 第二步:编写 jsp 页面
2.2.2.3 第三步:编写控制器
2.2.2.4 第四步:配置文件解析器
2.3springmvc 跨服务器方式的文件上传
2.3.1 分服务器的目的
2.3.2 准备两个 tomcat 服务器,并创建一个用于存放图片的 web 工程
2.3.3 拷贝 jar 包
2.3.4 编写控制器实现上传图片
2.3.5 编写 jsp 页面
2.3.6 配置解析器
第 3 章 SpringMVC 中的异常处理
3.1 异常处理的思路
3.2 实现步骤
3.2.1 编写异常类和错误页面
3.2.2 自定义异常处理器
3.2.3 配置异常处理器
3.2.4 运行结果:
第 4 章 SpringMVC 中的拦截器
4.1 拦截器的作用
4.2 自定义拦截器的步骤
4.2.1 第一步:编写一个普通类实现 HandlerInterceptor 接口
4.2.2 第二步:配置拦截器
4.2.3 测试运行结果:
4.3 拦截器的细节
4.3.1 拦截器的放行
4.3.2 拦截器中方法的说明
4.3.3 拦截器的作用路径
4.3.4 多个拦截器的执行顺序
4.4 正常流程测试
4.4.1 配置文件:
4.4.2 拦截器 1 的代码:
4.4.3 拦截器 2 的代码:
4.4.4 运行结果:
4.5 中断流程测试
4.5.1 配置文件:
4.5.2 拦截器 1 的代码:
4.5.3 拦截器 2 的代码:
4.5.4 运行结果:
4.6 拦截器的简单案例(验证用户是否登录)
4.6.1 实现思路
4.6.2 控制器代码
4.6.3 拦截器代码
java – Spring MVC:如果我在控制器动作中启动线程会发生什么?
在Spring MVC Controller中我想启动一个在我的控制器发送响应时继续工作的线程.这适用于spring-mvc吗?
最佳ReaGrds,
海因里希
你确实需要确保线程实际上在某个时刻停止运行,或者通过将守护进程设置为true(如果没有通知就停止服务器杀死线程)或者确保其run方法中的代码总是在某个时候终止.
你最好使用线程池而不是创建新线程,这样你就不会冒资源耗尽的风险(线程停顿通常不是独立事件,如果线程挂起,下一个线程可能也会挂起,所以你需要一种减少损失的方法).使用@Async注释的方法将使用您可以配置的执行程序执行,如the Spring documentation所示.
JavaEE——SpringMVC(13)--SpringMVC运行流程 在 Spring 的环境下使用 SpringMVC
需要进行 Spring 整合 SpringMVC 吗 ?
还是否需要再加入 Spring 的 IOC 容器 ?
是否需要再 web.xml 文件中配置启动 Spring IOC 容器的 ContextLoaderListener ?
spring的IOC
package com.atguigu.springmvc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private HelloWorld helloWorld;
public UserService() {
System.out.println("UserService Constructor...");
}
}
SpringMVC的IOC
package com.atguigu.springmvc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloWorld {
@Autowired
private UserService userService;
public HelloWorld() {
System.out.println("HelloWorld Constructor...");
}
@RequestMapping("/helloworld")
public String hello(){
System.out.println("success");
System.out.println(userService);
return "success";
}
}
1. 需要: 通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中).
实际上放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao.
2. 不需要: 都放在 SpringMVC 的配置文件中. 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件
问题: 若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器扫描的包有重合的部分, 就会导致有的 bean 会被创建 2 次.
解决:
1. 使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分.
*2. 使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解
springmvc.xml
<context:component-scan base-package="com.atguigu.springmvc" use-default-filters="false">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
<context:include-filter type="annotation"
expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
</context:component-scan>
bean.xml
<context:component-scan base-package="com.atguigu.springmvc">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation"
expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
</context:component-scan>
SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean.
返回来呢 ? 反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean!
JSON – Spring MVC:如何将json数据发布到spring MVC控制器
我在将jsp数据从jsp发布到控制器时遇到问题.我每次尝试都会收到ajax错误错误请求.我是JSON的新手,我真的不知道我做错了什么.我搜索并尝试了一些我可以在这个网站找到的样本,但我仍然有问题.
在我的控制器中:
@RequestMapping (method = RequestMethod.POST,headers ={"Accept=application/json"},value = "/form")
public String postJournalEntry (@RequestParam ("json") String json,Model model) {
System.out.println(json);
return "successfullySaved";
}
在我的jsp中:
$("#btnPostGlEntry").click(function () {
var glEntries = '{"glEntries":[{"generalLedgerId":"1"},{"accountId":"4"},{"amount":"344.44"},{"description":"Test Entry"},{"debit":"Yes"}]}';
$.ajax({
type: "POST",contentType: "application/json",dataType: "json",url: contextpath + "/generalLedger/journalEntries/form",data : JSON.stringify(glEntries),success: function(data) {
alert("Success!!!");
},error: function (jqXHR,textStatus,errorThrown) {
alert(jqXHR + " : " + textStatus + " : " + errorThrown);
}
});
});
注意:我甚至不确定我的控制器中的功能是否正确.我认为我的控制器和我的ajax是错误的.请帮忙.
.... method(@RequestBody MyClass data){ ... }
但是,如果您希望您的方法接受JSON作为String而不是这样做:
.... method(@RequestBody String json){ ... }
所以,基本上,如果你发布JSON,这意味着JSON不是一个参数,它是请求的主体.最后你必须使用@RequestBody注释,而不是@RequestParam.
你可以在这里找到Spring Mvc和JSON的精彩视频教程:sites.google.com/site/upida4j/example
今天关于Spring MVC:如何修改从Spring控制器发送的响应?和springmvc的控制器方法中如何实现转发和重定向的介绍到此结束,谢谢您的阅读,有关java day62【 响应数据和结果视图 、 SpringMVC 实现文件上传 、 SpringMVC 中的异常处理 、 SpringMVC 中的拦截器 】、java – Spring MVC:如果我在控制器动作中启动线程会发生什么?、JavaEE——SpringMVC(13)--SpringMVC运行流程 在 Spring 的环境下使用 SpringMVC、JSON – Spring MVC:如何将json数据发布到spring MVC控制器等更多相关知识的信息可以在本站进行查询。
本文标签: