-
其他的SpringMVC配置代替方案
-
自定义DispacherServlet
-
添加其他的Servlet和Filter
-
实现WebApplicationInitializer接口,就可以实现往里面注册一个新的Servlet
这里的MyServlet是要继承自Servlet这个类
926bf466ad18d982c7b0f76ff2eedde9.png
Filter同理
d6644727450c432c1f40ebc315739c2d.png
如果只是注册Filter,并且这个Filter只会映射在DispatcherServlet上的话,就可以在实现AbstractAnnotationConfigDispatcherServletInitializer的类里重载getServletFilters方法,在里面返回包含你的Filter的Filter数组。
-
处理multipart形式的数据
multipart是将表单分成拆分成多个部分,每个部分对应一个输入域- 配置multipart解析器
DispatcherServlet并没有解析multipart的功能,只有实现了MultipartResolver的类才能解析Multipart。我们现在有两种方法来解析mulitpart请求
-
CommonsMultipartResolver
-
StandardServletMultipartResolver
在Spring3.1以上使用第二种会是比较好的选择。(暂时搁置,文件处理用到了再看)
- 处理异常
无论在什么时候,Servlet请求的输出都是一个Servlet响应。也就是说如果出现了异常,异常也是Servlet响应
特定的Servlet异常将会自动映射为HTTP错误码
异常上可以天添加@ResponseStatus注解,可以将其映射为一个HTTP状态码
方法上可以添加@ExceptionHandler注解,来处理异常
- 处理器默认把其他的没有定义的异常抛出的错误码定义为500,我们可以通过在一个异常类上定义@ResponseStatus(value=”HttpStatus.其中一个状态”
reason=”错误说明”)来使得把这个java异常映射到你指定的地方
f72e72eeef1d42858b57d35a14e6f9ab.png
在Controller里的方法改为
39c2009c6174782d75827e22ccdf9ea1.png
这样在寻找用户失败的时候就会报出404而不是500
- 处理异常的方法
第一种方法就是使用try
catch来捕获到这个异常,再着手处理这个异常。但是我们希望每个映射方法都可以只用专注于处理它自己的模块
所以,我们需要用到@ExceptionHandler(异常类的类对象)注解,在后面加上专门处理异常的方法,把有这种异常的情况映射到我们写好的页面上去
ef344bbd54b113b7da245ddb57fd9210.png
- 在控制器里面添加通知
如果不同的控制器会抛出相同的问题,那么我们就会在控制器里定义相同的处理器。但这样很不优雅。在Spring3.2之后我们只有使用控制器通知。凡是带有@ControllerAdvice注解的类,都会包含下面的方法
-
@ExceptionHander注解标注的方法
-
@InitBinder注解标注的方法
-
@ModelAttribute注解标注的方法
-
@ControllerAdvice已经是一个组件,使用它会被组件扫描自动获取
4e798905966f3483154616eafcf022fd.png
这样,无论哪个Controller抛出了这个异常,都会被他检测并处理
- 跨重定向请求传递数据
对于请求转发(forward)来说,请求只是被转发了,请求中的参数任然存在。但是对于重定向(redirect)来说,之前的请求早就消亡了,浏览器会重新发送一次请求。所以在新的请求中,没有任何的模型数据,只能从新计算。所以这一套方法是用来使用请求转发的时候,任然可以携带数据
-
通过URL模板进行重定向
-
使用flash属性
暂时忽略











网友评论