spring mvc
程序员文章站
2024-01-13 17:09:28
...
1.关于spring mvc中 redirect 和 forward
- 可以使用RedirectView
- 还可以使用redirect: 前缀 和 forward:前缀
- 在redirect中传递参数,除了session中加以外还可以在model、redirectAttributes和flashMap中添加
- 在flashMap中添加方法如下,RequestContextUtils 获取 flashMapManager, 此对象可以save flashMap, 在下个请求的controller 中调用flashMapManager的outFlashMap获取参数
- 在redirectAttributes中添加参数,@RequestMapping 注释的方法中支持参数 RedirectAttributes,在此对象中添加参数会以url pathVariable形式传递给目标url的controller
- 在model中传递参数,当controller的处理方法中不含有redirectAttributes时,model充当传递介质,model中的key-value都会以url PathVariable形式传递
2.关于Exception
- @ExceptionHandler用于处理该方法所在的controller里抛出的exception
- HandlerExceptionResolver用户拦截controller的exception, 默认情况下spring注册defaultHandlerExceptionResolver来处理异常,不过可以注册spring的另外一个handlerExceptionResolver来处理抛出的exception,SimpleMappingExceptionResolver是用来将不一样的exception映射到各个error page
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="Exception">error/error</prop> </props> </property> </bean>
3.新的RequestMapping的支持类:RequestMappingHandlerMapping
有点绕口的类名,在早期的(3.1之前)的springmvc中都是走DefaultAnnotationHandlerMapping来确定哪个controller然后再走AnnotationMethodHandlerAdapter来确定是哪个method进行处理,所以在HandlerInterceptor中传入的参数是classObject而不是methodObject所以非常的不方便(某土公司居然封装了这个类,而没有封装新的类)。