当我们在使用SpringMVC框架进行开发的时候,我们希望在程序运行中出现异常的时候能够进行处理,这时候就需要用到SpringMVC的异常处理器和拦截器。下面是实现这两个功能的代码:
SpringMVC异常处理器的实现
- 首先在SpringMVC配置文件中配置SimpleMappingExceptionResolver,它可以捕获所有未处理的异常,并将它们映射到一个特定的视图文件。
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.Exception">error</prop>
</props>
</property>
</bean>
- 然后在web.xml文件中配置DispatcherServlet,让它能够识别SpringMVC中的配置文件和异常处理器。
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 在控制器中抛出异常,然后让SimpleMappingExceptionResolver自动捕获并处理它。
public class TestController {
@RequestMapping(value = "/test")
public void test() throws Exception {
throw new Exception("Test Exception");
}
}
SpringMVC拦截器的实现
- 首先实现一个HandlerInterceptor接口,并实现它的三个方法before(), after(), and completion()。
public class TestInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("Pre-handle method is called");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("Post-handle method is called");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("After-completion method is called");
}
}
- 在SpringMVC配置文件中配置拦截器,并将它添加到SpringMVC框架中。
<mvc:interceptors>
<bean class="com.example.TestInterceptor"/>
</mvc:interceptors>
- 在控制器中添加一个映射,然后访问这个映射以触发拦截器。
@Controller
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello";
}
}
以上就是SpringMVC异常处理器及拦截器实现代码的详细攻略。其中包含了两个示例来演示异常处理器和拦截器的实现。您可以根据这些示例来实现您的代码逻辑。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springmvc异常处理器及拦截器实现代码 - Python技术站