springmvc Interceptor ajax 차단 요청 성공 후 페이지 로 돌아 가기

3675 단어 springmvcjs
주: Interceptor 의 역할 중 하 나 는 요청 을 차단 하고 요청 이 정상 인지 판단 하 는 것 입 니 다.
 
질문: Interceptor 가 ajax 요청 을 차단 하면 false 로 돌아 갑 니 다.  그러나 ajax 에 필요 한 것 은 되 돌아 오 는 데이터 이기 때문에 이 때 차단 기 는 false 를 되 돌려 줍 니 다. 그러나 이것 은 ajax 가 요청 한 데이터 가 아니 기 때문에 해당 하 는 처 리 를 하지 않 았 습 니 다.
 
해결 방법: Interceptor 차단 후 지정 한 리 셋 요청 헤더 정 보 를 되 돌려 줍 니 다.
또한 ajax 에 complete 함 수 를 설정 하여 요청 이 완료 되면 이 함 수 를 자동 으로 실행 하여 요청 헤더 정보 가 있 는 지 여 부 를 판단 합 니 다.
존재 한다 면 다른 페이지 로 다시 설정 합 니 다.
 
springmvc interceptor 설정
    
    
        
               
              
         
               
        
    

 
코드:

//      
public class ExecuteIntercept implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // if(request.getSession().getAttribute("LOG_IN_FLAG")==null){
      
        //  ajax  
        if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {
            //  ajax     
            response.setHeader("REDIRECT", "REDIRECT");
            //  ajax       
            response.setHeader("CONTENTPATH", "error.jsp");
            response.setStatus(HttpServletResponse.SC_FORBIDDEN);
            return false;
        } else {
            //   ajax  
            response.setContentType("text/html; charset=UTF-8");
            response.getWriter().print("alert('        ,    ,     !');");
            response.getWriter().close();
            response.flushBuffer();
        }
        return true;
    }
}


        document.getElementById("submit").onclick=function(){
        document.getElementById("msg").innerHTML="";

        var name = document.getElementById("name").value;
        var password = document.getElementById("password").value;
        if(name==""){
            alert("      。");
            return ;
        }
        if(password==""){
            alert("     。");
            return ;
        }

        document.getElementById("submitDisImg").src="img/wait.gif";
        $.ajax({
            url:"user/equale",     //    
            contentType:"application/json;charset=UTF-8",  //      
            data:JSON.stringify({name:name,password: password}),  //      
            dataType:"json",   //     
            type:"post",     //    
            success:function(msg){  //data          
                if (msg=="success") {//         
                    window.location.href = 'index.jsp';
                }else{
                    document.getElementById("submitDisImg").src="";
                    document.getElementById("msg").innerHTML="       ";
                }
            },
            complete : function(xhr, status) {
                //              
                //   xhr     
                var REDIRECT = xhr.getResponseHeader("REDIRECT");
                //         REDIRECT           
                if (REDIRECT == "REDIRECT"){

                    //      login.html
                    window.location.href = xhr.getResponseHeader("CONTENTPATH");
                //window.location.href = "error.jsp";
                }
            }

        });
    }


좋은 웹페이지 즐겨찾기