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了。

 

转载于:https://www.cnblogs.com/kinome/p/9024178.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Spring MVC 时,如果在构建过程中出现程序包不存在或不到符号的错误信息,可能有以下几个原因: 1. 缺少依赖项:您的项目可能依赖于其他 Spring MVC 相关的程序包或库,但这些依赖项未正确安装或配置。请确保您的项目的依赖项(如Spring MVC、Spring Core等)已经正确添加到项目的构建文件(如pom.xml、build.gradle)中,并且已经正确下载和安装。 2. 包命名错误:请检查您的代码中是否正确引入了所需的程序包,包括正确的包名和类名。如果程序包不存在或不到符号,可能是因为包名或类名拼写错误或未正确导入。 3. 项目结构问题:请确保您的项目结构符合 Spring MVC 的要求,包括正确的文件夹结构和配置文件位置。例如,配置文件(如web.xml、springmvc-servlet.xml)应该放置在正确的位置,并且在构建过程中能够被正确加载。 4. 版本冲突:如果您的项目中存在依赖项版本冲突,可能会导致程序包无法到或加载。请检查您的依赖项版本,并尝试更新或调整以解决冲突。 5. 编译问题:如果您在构建过程中遇到不到符号的错误,可能是因为编译出现了问题。请检查您的代码中是否存在语法错误或逻辑错误,并确保您的代码能够正确编译。 请根据上述原因逐一排查,确定造成程序包不存在和不到符号的具体原因,并采取相应的解决措施。如果您有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值