초록 : 여러 번 우리는 다른 동료의 버그 나 이미 떠난 동료들의 버그를 수정합니다. 때로는 페이지를 클릭하고 컨트롤러가 배경에 해당하는 곳으로 이동할 수 없습니다. 이 문제에 대한 응답으로 실제로 SPRNGMVC 인터셉터를 사용하여 사용자 요청을 차단하여 페이지 요청을 알 수 있습니다. 물론,이 인쇄 된 로그 정보는 생산 환경에 배치에 적합하지 않을 수도 있고,이 인터셉터도 불필요합니다. . . .
1. 핸들러 인터셉터 사용
1 단계 : 인터셉터를 등록하십시오
<!-레지스터 인터셉터-> <mvc : interceptors> <bean /> < /mvc : interceptors>
2 단계 : 핸들러 인터셉터를 상속하고 인터셉터를 구현하십시오
package com.iflashbuy.limanman; import java.util.iterator; import java.util.map; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.slf4j.logger; org.slf4j.log; org.springframework.web.servlet.handlerinterceptor; import org.springframework.web.servlet.modelandview; public class controlinterceptor emberlerinterceptor {private logger = loggerfactory.getlogger (getclass ()); AfterCompletion (httpservletrequest request, httpservletrequest response, 객체 Arg2, Exception Arg3)은 예외 {} @overridepublic void posthandle (httpservletrequest arg0, httpservletrequest arg0, httpservletrequest arg1, object arg2, modelandview arg3) {// to auto-generated method-stub}@to-generated into-generated propertrows {// 부울 프리 핸들 (httpservletrequest request, httpservletrequest arg1, object arg2)은 예외 {int i = 1; try {@suppresswarnings ( "선택 취소")지도 <문자열, object> parmmap = request.getParameTerMap (); (iter.hasnext ()) {object key = iter.next (); object value = parmmap.get (key); logger.info ( "th" + i + "param ----> {}-{}", 키, 값); i = i + 1;}} catch (예외 e) {i = 1;} i = 1;2. 배경 인쇄 정보의 효과
3. 기본 HTTP 인증을 달성하기 위해 인터셉터 사용을 확장합니다.
/** * 컨트롤러를 실행 한 후 호출, 즉 */@atriadepublic void afthCompletion (httpservletrequest request, 객체 arg2, 예외 Arg3)을 떠날 때 예외 {logger.info ( "classname --->" + arg2); logger.info ( " + request); posthandle (httpservletrequest 요청, httpservletresponse 응답, Object Arg2, ModelandView Arg3)은 예외를 {}} @overridepublic boolean prehandle (httpservletrequest request, object arg2) {string requestion = (string) (string) ( "). (sessionAuth! = null) {System.out.println ( "이것은 다음 단계입니다"); NextStep (요청, 응답);} else {if (! checkheaderuth (요청, 응답)) {reponse.setstatus (401); 응답 .setheader ( "cache-control", "no-store"); 응답. 0); response.setheader ( "www-authenticate", "기본 영역 =/"관리자 계정 암호/""); return;}} true;} 개인 부울 checkheaderauth (httpservletrequest request) ioexception {string auth = request. Base64에서 인코딩 된 " + getfrombase64 (auth)); if ((auth! = null) && (Auth.length ()> 6)) {auth = auth = auth = auth = auth.substring (6, auth.length ()); String decodedauth = getfrombase64 (auth); system.out.println ("auth decoded as " + as" + decodedauth); request.getSession (). setAttribute ( "auth", decodedauth); return true;} else {return false;} else {return em String (encodebase64);} catch (UnsupportedencodingException e) {return null;}} public void nextstep (httpservletrequest request, httpservletreponse 응답) ioexception {system.out.println ( "컨트롤러로 갈 수 있습니다");}.요약
위는 SpringMVC 인터셉터 핸들러 interceptor의 사용 코드 코드 예제에 대한이 기사의 전체 내용입니다. 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
스프링 인터셉터 핸들러 인터셉터 인터셉터 인터페이스 코드 분석
로그인 인터셉터 코드 공유 Spring MVC에서 구현
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!