SpringMVC: interceptores y problema de la basura el poste chino

SpringMVC: interceptores y problema de la basura el poste chino

1, interceptores

Spring MVC El interceptor (Interceptor) similar al filtro (Filter) Servlet es, es principalmente para interceptar una petición de usuario y procesadas en consecuencia.

La diferencia entre el filtro y el interceptor: Blocker es una aplicación de pensamiento AOP.

filtro

  • Parte de la especificación servlet, cualquier proyecto Java Web se puede utilizar
  • Después de configurar / url-pattern en el *, puede interceptar todos los recursos que desea acceder

interceptador

  • Interceptores son SpringMVC marco de su propia, sólo para utilizar el proyecto para utilizar el marco de SpringMVC
  • Interceptor interceptará método de control de acceso, si la visita es jsp / html / css / imagen / js no serán interceptados

Costumbre interceptor de aplicación:

Mediante la implementación de HandlerInterceptorAdapterla interfaz, y Spring MVC registrados pueden utilizar un interceptor personalizado.

HandlerInterceptorAdapter Interfaz proporciona tres métodos:

  • preHandle() procesador de servicio se llama antes de procesar la solicitud

    • Este método será ejecutado antes de que el método Controller
    • El valor de retorno indica si continuar con las operaciones posteriores:
    • Return true, lo que indica que se va;
    • Devuelve FALSE, interrupciones todas las operaciones posteriores (incluyendo método de interceptación de llamadas y la siguiente ejecución controlador).
  • postHandle() Después de la petición realiza procesador servicio de procesamiento se ha completado, antes de realizar generar vistas

    • Después de Controlador llamadas a métodos de análisis y ejecutan antes vista.
    • Este método puede hacer más cambios en el modelo y la vista.
  • afterCompletion() En DispatcherServlet completamente terminado de procesar la solicitud después de las llamadas, se puede utilizar para limpiar los recursos.

    • Este método se lleva a cabo después de la finalización (es decir, extremo vista rendering) de toda la solicitud.
    • Se puede lograr algo de limpieza de recursos, registros y otra información para el trabajo a través de este método.
public class MyInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return false;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

configuración del resorte-web.xml:

<mvc:interceptors>
  <bean class="com.xu.web.interceptor.MyInterceptor1"/> <!-- 1 -->

  <mvc:interceptor> <!-- 2 -->
    <mvc:mapping path="/**"/> <!-- 3 -->
    <mvc:exclude-mapping path=""/> <!-- 4 -->
    <bean class="com.xu.web.interceptor.MyInterceptor2"/> <!-- 5 -->
  </mvc:interceptor>

  <mvc:interceptor> <!-- 6 -->
    <mvc:mapping path="/hello"/> <!-- 7 -->
    <bean class="com.xu.web.interceptor.MyInterceptor3"/> <!-- 8 -->
  </mvc:interceptor>

</mvc:interceptors>
  • Como 1se muestra, registrada en los interceptores son intercepta interceptor interceptor globales todas las solicitudes
  • Como 2 | 6se muestra, registrado con el interceptor interceptor es un bloqueador parcial, necesidad de configurar de forma explícita el interceptor solicitud que interceptan.
  • Como 3se muestra, bloquear todos los caminos representa
  • Como 4se muestra, bajo la premisa representa intercepción determinadas solicitudes, excepto / no intercepta algunas peticiones
  • Como 7se muestra, expresado bloquea todas las /hellorutas que comienzan con

Cuando una pluralidad de interceptores, llamando secuencia prensa preHandlemétodo y luego llama inversa cada interceptor postHandley afterCompletionmétodos, a saber:

  • Una de
  • B para
  • para C
  • C-post
  • C-después de
  • B-post
  • B-después de
  • Una publicación
  • A-después de

2, POST solicita ilegible china

Spring MVC proporciona una petición POST filtro dedicado a resolver el problema de la basura, usted debe estar configurado para utilizar el archivo web.xml:

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

solicitud get, en general, se pueden resolver mediante la modificación de la configuración de los ajustes Tomcat archivo.

Supongo que te gusta

Origin www.cnblogs.com/whitespaces/p/12455031.html
Recomendado
Clasificación