3.3springmvc-异常体系基本使用

这几天在完成一些基本添删改查功能,说实话这个还是比struts2要烦很多呀,因为struts2中有validate功能,使用契约模式,凡是以validateXXX(其中XXX是方法名),在执行XXX前会先执行,这样等于是个pre-check,并且还能起到一些参数的初始化能力。

 

可惜在springmvc中,只有一个@initbinder,他如同一个全局函数,与WebDataBinder绑定。不过他也有个毛病,就是在我的requestMapping方法参数中必须添加一个entity类型的,才会触发initbinder的函数。

 

回来说下,这个springmvc基本上可以把异常分成两类:

 

  • 一类是有用户自己在try catch块中定义的
对于,这类spring到时提供了很好的解决方法,那就是
/**
	 * 文章id不正确
	 * @param bindingResult
	 * @param defaultPage
	 * @return
	 */
	@ExceptionHandler(ObjectNotFoundException.class)
	public ModelAndView handleNotFoundEx(BindingResult bindingResult, String defaultPage) {
		if(bindingResult == null) return handleErrors(defaultPage);
		return handleErrors(bindingResult, defaultPage);
	}
  @ExceptionHandler这个还是挺好额,具体的spring自带的pdf中有说明,不过可惜,他不能支持如同:
@ExceptionHandler({xxx.class,xxx.class})
  • 一类是由spring内置的
比如在用@PathVariable Long id时,如果id无法转换为long就会抛出一个typemis什么spring内置exception,这个实在很早很早还没有进入你的controller时就产生了,这时他调用的是在xxx-servlet.xml文件中定义的exception handler来处理。

<!-- Mapping exception to the handler view -->
    <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    	<!-- to /commons/error.jsp -->  
		<property name="defaultErrorView" value="/commons/error"/>
        <property name="exceptionMappings">
            <props>
            </props>
        </property>
    </bean>
 这里的 exceptionMappings是能让你对应不同的exception,来进行处理的。不过具体代码还没有仔细看,spring自带的好像写得也不是很详细了
只好自己研究了。呵呵


 

你可能感兴趣的:(spring,jsp,bean,Web,servlet)