springmvc 使用 response 的注意事项以及解决500 空指针异常找不到 response 的方法
使用注解方式在类中(Controller)来装载request时,是可以正常使用request的(必须在启动时才注入,所以不支持热部署),但是同样使用这种方式在已经装载了 request的情况下装载 response时却导致找不到response 500 空指针异常
@Autowired
HttpServletRequest request;
因为Request 和 Response 都是针对一次请求的
如果只用@Autowired 或者 @Resource 注解,依赖都是在应用启动时注入的,当应用启动的时候请求还没来,所以还没有 Request和Response对象。
所以当需要Request 和Response对象时,需要将其放到controller的方法的参数中,这样每次请求时,Spring MVC框架就会自动将HttpServeletRequest 或 HttpServeletResponse对象注入。
Request对象表示一次请求,里面包含了本次请求的所有信息,包括Http Header和 Body,
Response对象表示对请求的响应,可以设置响应的header和body
但是如果要使用 response,那么就不要在类中(Controller)使用 @Autowired 来装载 request 或者 request 和 response,前者是为了避免在方法中传入 request和response时起冲突,后者是因为这样装载的response是不能使用的,所以在springmvc中使用response要满足以下条件:
1. 不要使用 @Autowired 来装载 request 或者 request 和 response
2. 因为@Autowired 不支持热部署,所以对 request和response的修改不能实时查看,所以在需要修改并实时查看的场景不使用 @Autowired 来装载 request 或者 request 和 response
3. 必须同时在方法中传入 request 和 response,像这样
public ModelAndView showRepoByUidForPager(PageInfo<RepoEntity> pi,HttpServletRequest request,HttpServletResponse response){
如果是用的 @Autowired 来装载的 request,用方法注入的 response,或者 request和response都是用 @Autowired 来装载的,这些情况下都会导致 500,空指针异常,即找不到 response,所以必须同时在方法中传入 request 和 response,这样就可以正常使用 response和request了。
springmvc 使用 response 的注意事项以及解决500 空指针异常找不到 response 的方法的更多相关文章
- request、response 中文乱码问题与解决方式
request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码: response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码: ...
- jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
jsp出现getOutputStream() has already been called for this response异常的原因和解决方法 在tomcat5下jsp中出现此错误一般都是在js ...
- 解决json日期格式问题的3种方法
这篇文章主要介绍了解决json日期格式问题的3种方法 ,需要的朋友可以参考下 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后 ...
- jsp的服务器响应,out.println 与response.setIntHeader的报错解决方案,附:导入jar包的方法
在九大内置对象中,笔者认为用的最多的就是out.println 与response.setIntHeader,今天刚写了一个服务器响应的代码,也总是这两个报错.具体请看图. 先来说说response. ...
- 解决ajax跨域问题的一种方法
解决ajax跨域问题的一种方法 前后端分离经常用json来传输数据,比较常见的问题就有ajax跨域请求的错误问题,这里是我的一种解决方法: 在java中加入如下的注解类: import org.spr ...
- 转(解决GLIBC_2.x找不到的编译问题)
Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题) 分类: 开发环境 Linux2014-09-24 10:32 8933人阅读 评论(5) ...
- Java_java动态编译整个项目,解决jar包找不到问题
java动态编译整个项目,解决jar包找不到问题原文:http://itzyx.com/index.php/javac/ 动态将java文件编译为class文件解决方案:将temp\sdl\src目录 ...
- 终于解决了IE8不支持数组的indexOf方法,array的IndexOf方法
/* 终于解决了IE8不支持数组的indexOf方法 */ if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (el ...
- <转载>CSS解决图片过大撑破DIV的方法
DIV+CSS网页内容中如果插入大于DIV层宽度显示,过大的图片将会撑破网页宽度显示从而网页严重变形,您是否遇到过?这里DIVCSS5给大家介绍几种解决图片撑破撑开网页DIV层方法. 图片撑破宽度解决 ...
随机推荐
- P2149 [SDOI2009]Elaxia的路线
题目描述 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间. Elaxia和w**每天都要奔波于宿舍和实验室之间,他们 希望在 ...
- hdu_1009 贪心
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Android SDK Manager仅有一个版本的问题
搭建好MonkeyRunner的环境之后,建立虚拟器的时候发现SDK的管理器中只有4.3的版本,查阅了一下百度,问题解决如下: (1)在c:\Windows\System32\etc\hosts文件中 ...
- 《AngularJS即学即用》读书笔记(一)
最近在学习angularJS,就买了一本<AngularJS即学即用>作为自己的入门书籍,到目前为止看了两章的内容,感觉这本书还是不错的,东西讲的浅显易懂.之所以写这篇文章,一是督促自己能 ...
- BroadcastReceiver(接收广播)
Broadcast Receiver用于接收并处理广播通知(broadcast announcements).多数的广播是系统发起的,如地域变换.电量不足.来电来信等.程序也能够播放一个广播. 程序能 ...
- JavaScript this用法
当this为全局变量时,this为window对象 <script> // 在全局变量中,this为window window.onload= function(){ alert(wind ...
- 对于PHP绘图技术的理解
要使用PHP绘图,就得在php.ini文件中设置一下 找到这个位置 ;extension=php_gd2.dll,然后把前面的分号去掉,重启下apache就可以了 几乎每行代码我都写了注释,方便看懂 ...
- Extjs 中callParent的作用
callParent 是 Sencha 类系统提供的一个用于调用你父/祖先类中的方法. 这个通常用于当你 继承一个框架类 或者 覆写一个类中提供的方法(比如 onRender) 时. 当你在一个带参数 ...
- Centos 批量分发脚本
## Centos / ## #!/bin/sh file="$1" remotedir="$2" filename=$(|awk -F '/' '{print ...
- 课时17.WebStorm安装(理解)
开发工具(工欲善其事,必先利其器) 为了让大家更快的融入到编程的世界中去,不被繁琐的英文单词所困扰,不用每天编写很多没有意义的重复代码,提升大家的开发效率,今后的课程中我们统一采用开发工具来编写网页 ...