每一个应用,应该都会出现异常,那么在就有必要做一个异常拦截机制,那么在controller层就可以把异常抛出去,然后让该异常跳转到相应的页面
1 异常拦截,spring 有一个一次拦截接口,因此可以写一个类,实现该接口,然后处理业务的异常流程
public class MyHandlerException implements HandleExceptionResolver{
public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response,Object obj){
system.out.println("异常拦截");
return new ModelAndView("redirect:/errorJsp");
}
}
在servlet.xml 里面配置 该异常的处理
<bean id=“myHandlerException”class="web.MyHandlerException" />
在建一个 errorJsp的controller 让其跳转到指定的错误页面即可
2 在应用访问的时候 肯定需要初始化一些数据,那么就需要写一个类,实现spring自定义的接口 WebBindingInitializer
public class commandBindInit implements WebBindingInitializer {
@override
public void initBinder(WebDataBinder binder,WebRequest request){
BaseCommand baseCom = (BaseCommand)binder.getTarget();
if(baseCom !=null){
baseCom.setUserIp("127.0.0.1");
}
}
}
public class BaseCommand {
private String userIp;
}
以上写完之后,需要在servlet.xml里面添加下面配置,CommandBindInit类才能够实现初始化
<bean class="org.springframework.web.servlet.mvc.annotaion.AnnotationMethodHandlerAdapter">
<property name="WebBindingInitializer">
<bean class="web.CommandBindInit" />
</property>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list><value>text/html;charset=UTF-8</value></list>
</property>
<property name="writeAcceptCharset" value="false">
</property>
</bean>
</list>
</property>
</bean>
添加以上配置后发现还是不能初始化信息,调查发现 需要将servlet.xml里面的 <mvc:annotation-driven /> 放到 CommandBindInit 配置的后面方可以使用
1 异常拦截,spring 有一个一次拦截接口,因此可以写一个类,实现该接口,然后处理业务的异常流程
public class MyHandlerException implements HandleExceptionResolver{
public ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response,Object obj){
system.out.println("异常拦截");
return new ModelAndView("redirect:/errorJsp");
}
}
在servlet.xml 里面配置 该异常的处理
<bean id=“myHandlerException”class="web.MyHandlerException" />
在建一个 errorJsp的controller 让其跳转到指定的错误页面即可
2 在应用访问的时候 肯定需要初始化一些数据,那么就需要写一个类,实现spring自定义的接口 WebBindingInitializer
public class commandBindInit implements WebBindingInitializer {
@override
public void initBinder(WebDataBinder binder,WebRequest request){
BaseCommand baseCom = (BaseCommand)binder.getTarget();
if(baseCom !=null){
baseCom.setUserIp("127.0.0.1");
}
}
}
public class BaseCommand {
private String userIp;
}
以上写完之后,需要在servlet.xml里面添加下面配置,CommandBindInit类才能够实现初始化
<bean class="org.springframework.web.servlet.mvc.annotaion.AnnotationMethodHandlerAdapter">
<property name="WebBindingInitializer">
<bean class="web.CommandBindInit" />
</property>
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list><value>text/html;charset=UTF-8</value></list>
</property>
<property name="writeAcceptCharset" value="false">
</property>
</bean>
</list>
</property>
</bean>
添加以上配置后发现还是不能初始化信息,调查发现 需要将servlet.xml里面的 <mvc:annotation-driven /> 放到 CommandBindInit 配置的后面方可以使用