Spring学習(五)——ユーティリティ

12403 ワード

1.Springブロッキング
Springブロッキングは、DispatcherServiceletの要求をブロッキングし、Controllerの処理結果を変更することができます.ログインしていないユーザーのアクセスページをブロックするか、プロセッサが例外を投げ出した後に例外を処理するために使用できます.(1)一つのブロッキングクラスを実現する
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @ program: SpringMVC02
 * @ description:    
 * @ author: NiuChen
 * @ create: 2020-08-19 17:46
 **/
public class SomeInterceptors implements HandlerInterceptor {
    @Override
    /**
     *  postHandle    ,   preHandle  true    。
     * @param request:
     * @param response:
     * @param handler:
     * @param ex:         ,               
     * @return: void
     **/
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
    }

    @Override
    /**
     * Controller              DispatcherServlet  ,
     *   postHandler        。
     * @param request:
     * @param response:
     * @param handler:
     * @param modelAndView:
     * @return: void
     **/
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    @Override
    /**
     * DispatcherServlet          ,      true, 
     *          ;  ,       。
     * @param request:
     * @param response:
     * @param handler:
     * @return: boolean
     **/
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;
    }
}

(2)遮断器の配置

    <mvc:interceptors>
        <mvc:interceptor>
            
            <mvc:mapping path="/**"/>
            <bean class="com.niuchen.springmvc.interceptors.SomeInterceptors"/>
        mvc:interceptor>
    mvc:interceptors>

2.Spring簡易異常処理
(1)簡易異常プロセッサa.簡易異常プロセッサの構成
    
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                
                <prop key="java.lang.Exception">error1prop>
            props>
        property>
    bean>

b.異常処理ページの追加
(2)実用@ExceptionHandler注記プロセッサクラスに異常処理方法を追加し,@ExceptionHandler注記を使用する.異なる異常タイプに応じて、それぞれ処理を行うことができます.最後に異常に対して、自分で異常処理ページを追加すればよい.
@ExceptionHandler
    //      
    public String exHandler(Exception e, HttpServletRequest request){
        System.out.println("exHandler");
        //            
        if (e instanceof NumberFormatException){
            request.setAttribute("errorMsg", "       ");
            return "error";
        }else if(e instanceof StringIndexOutOfBoundsException){
            request.setAttribute("errorMsg", "    ");
            return "error";
        }else {
            return "system_error";
        }

    }