Explicação detalhada do interceptor SpringMVC e mecanismo de manipulação de exceção SpringMVC

Interceptores SpringMVC

O papel do interceptador

O interceptor do Spring MVC é semelhante ao filtro no desenvolvimento de Servlet, que é usado para pré-processar e pós-processar o processador.
Os interceptores são ligados em uma determinada ordem em uma cadeia, que é chamada de Cadeia Interceptora. Quando um método ou campo interceptado é acessado, os interceptores na cadeia de interceptores são chamados na ordem em que foram definidos anteriormente. Interceptor também é uma realização concreta da ideia AOP.
 

A diferença entre interceptores e filtros

insira a descrição da imagem aqui
 

Início rápido do interceptador

O interceptor personalizado é muito simples, existem apenas três etapas:
① Crie uma classe de interceptor para implementar a interface HandlerInterceptor
② Configure o interceptor
③ Teste o efeito de interceptação do interceptor

① Crie uma classe interceptor para implementar a interface HandlerInterceptor

public class MyHandlerInterceptor1 implements HandlerInterceptor {
    
    
public boolean preHandle(HttpServletRequest request, HttpServletResponse 
response, Object handler) {
    
    
System.out.println("preHandle running...");
return true; }
public void postHandle(HttpServletRequest request, HttpServletResponse 
response, Object handler, ModelAndView modelAndView) {
    
    
System.out.println("postHandle running...");
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse 
response, Object handler, Exception ex) {
    
    
System.out.println("afterCompletion running...");
} }

② Configure o interceptor

<!--配置拦截器--> 
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/>
<bean class="com.itheima.interceptor.MyHandlerInterceptor1"/>
</mvc:interceptor>
</mvc:interceptors>

③ Teste o efeito de interceptação do interceptor (escreva o método de destino)

@RequestMapping("/quick23") @ResponseBody
public ModelAndView quickMethod23() throws IOException, ParseException {
    
    
System.out.println("目标方法执行....");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("name","itcast");
modelAndView.setViewName("index");
return modelAndView; }

 

Descrição do método do interceptor

insira a descrição da imagem aqui

 
 

Tratamento de exceção SpringMVC

Ideias de tratamento de exceção

Existem dois tipos de exceções no sistema: exceções esperadas e exceções de tempo de execução , RuntimeException.O primeiro obtém informações de exceção capturando exceções, e o último reduz principalmente a ocorrência de exceções de tempo de execução padronizando o desenvolvimento e teste de código.

O Dao, Service e Controller do sistema são todos lançados para cima por meio de throws Exception e, finalmente, o controlador front-end SpringMVC é entregue ao manipulador de exceção para tratamento de exceção, conforme mostrado na figura a seguir:
insira a descrição da imagem aqui
 
 

Duas formas de tratamento de exceções

1. Use o manipulador de exceção simples SimpleMappingExceptionResolver fornecido pelo Spring MVC
2. Implemente a interface de manipulação de exceção do Spring HandlerExceptionResolver para personalizar seu próprio manipulador de exceção
 

Manipulador de exceção simples SimpleMappingExceptionResolver

SpringMVC definiu este tipo de conversor, podendo mapear e configurar a exceção e visualização correspondente de acordo com a situação do projeto ao utilizá-lo.

<!--配置简单映射异常处理器-->
 <bean 
class=org.springframework.web.servlet.handler.SimpleMappingExceptionResolver> <property name=“defaultErrorView” value=“error”/> //默认错误视图
<property name=“exceptionMappings”> <map> //异常类型 错误视图
<entry key="com.itheima.exception.MyException" value="error"/>
<entry key="java.lang.ClassCastException" value="error"/>
</map>
</property>
</bean>

 

Etapas personalizadas de tratamento de exceções

① Criar classe de tratamento de exceção para implementar HandlerExceptionResolver
② Configurar tratamento de exceção
③ Escrever página de exceção
④ Testar salto de exceção

① Crie uma classe de manipulador de exceção para implementar HandlerExceptionResolver

public class MyExceptionResolver implements HandlerExceptionResolver {
    
    
@Override
public ModelAndView resolveException(HttpServletRequest request, 
HttpServletResponse response, Object handler, Exception ex) {
    
    
//处理异常的代码实现
//创建ModelAndView对象
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("exceptionPage");
return modelAndView;
} }

 

② Configure o manipulador de exceção

<bean id="exceptionResolver" 
class="com.itheima.exception.MyExceptionResolver"/>

 

③ Escreva uma página de exceção

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html> <head><title>Title</title>
</head> <body>
这是一个最终异常的显示页面
</body>
</html>

 

④ Salto de exceção de teste

@RequestMapping("/quick22")
@ResponseBody
public void quickMethod22() throws IOException, ParseException {
    
    
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
simpleDateFormat.parse("abcde");
}

Acho que você gosta

Origin blog.csdn.net/JIAYOUYAA/article/details/124253244
Recomendado
Clasificación