자바 의 Struts 2 차단기 상세 설명

4007 단어 struts차단기
최근 struts 차단 기 를 배우 고 있 습 니 다.지금 정리 해 보 겠 습 니 다.
1.차단기 가 무엇 입 니까?
차단 기 는 필터 에 해당 합 니 다.원 하지 않 는 것 을 제거 하고 원 하 는 것 을 남 기 는 것 입 니 다.차단 기 는 일부 코드 를 추상 화하 여 원래 의 action 을 보완 할 수 있다.동시에 코드 의 번 거 로 움 을 줄 이 고 재 활용 율 을 높 일 수 있다.쉽게 말 하면 그물 로 필요 없 는 모래 를 걸 러 내 고 물 에 남 기 는 것 이다.
2.차단기 의 역할:
차단 기 는 특정한 기능 을 구성 할 수 있다.예 를 들 어 권한 인증,로그 기록,로그 인 판단 등 입 니 다.
3.차단기 의 원리:
  
모든 Action 요청 은 차단기 에 있 습 니 다.모든 action 은 작업 을 아래 의 차단기 에 전달 할 수도 있 고 인터페이스 로 직접 종료 할 수도 있 습 니 다.
4.정의 차단기:
(1)Interceptor 인 터 페 이 스 를 사용자 정의 합 니 다.(그러나 초보 자 는 프레임 워 크 의 Interceptor 를 직접 실현 합 니 다)
(2)struts.xml 에 정 의 된 차단 기 를 등록 합 니 다.
(3)필요 한 action 에서 차단 기 를 참조 할 수 있 습 니 다.
Interceptor 인 터 페 이 스 는 세 가지 방법 을 설명 했다.

public interface Interceptor extends Serializable {
 
  void destroy();
 
  void init();
 
  String intercept(ActionInvocation invocation) throws Exception;
}
Init 방법 은 action 작용 전에 호출 되 는 것 으로 썩 은 기계 에 대한 초기 화 작업 을 시작 하 는 것 입 니 다.
Destory 방법 은 차단기 가 쓰레기 로 회수 되 기 전에 호출 되 어 init 방법 으로 초기 화 된 자원 을 회수 합 니 다.
interceptor 방법 은 차단기 의 주요 조작 입 니 다.후속 Action 이나 차단 기 를 호출 하려 면 이 방법 에서 invocation.invoke()방법 을 호출 하면 됩 니 다.이 방법 이 호출 된 전후 에 Action 호출 전후 차단 기 를 삽입 할 수 있 습 니 다.
현재 사용자 로그 인 을 차단 합 니 다.코드 는 다음 과 같 습 니 다.

public String intercept(ActionInvocation invocation) throws Exception {
    
    System.out.println(" action    ");
    ActionContext actionContext=invocation.getInvocationContext();
    Map<String,Object> session=actionContext.getSession();
    
    Object currentUser=session.get("currentUser");
    String result=null;
    if(currentUser!=null){
      result=invocation.invoke();
      
    }else{
      
      HttpServletRequest request=(HttpServletRequest)invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST);
      request.setAttribute("error", "    ");
      result="error";
    }
    System.out.println("result+"+result);
    System.out.println(" action    ");
    return result;
  }

등록 차단기:

<interceptors>
       <interceptor name="myInterceptor"
       class="com.fangchao.interceptor.MyInterceptor"></interceptor>
       <interceptor name="loginInterceptor"
       class="com.fangchao.interceptor.LoginInterceptor"></interceptor>
       
       <interceptor-stack name="myStack">
         <interceptor-ref name="loginInterceptor"></interceptor-ref>
         <interceptor-ref name="defaultStack"></interceptor-ref>  
       </interceptor-stack>
     </interceptors>
위 코드 의 interceptor-stack 은 차단기 스 택 입 니 다.지금까지 아래 에서 인용 할 때 비교적 편리 하 다.일반적으로 모든 action 은 defaultStack 을 사용 합 니 다.
차단기 파라미터:
설정 매개 변수:
  • excludeMethods:차단 기 를 사용 하지 않 는 방법 을 걸 러 냅 니 다
  • include Methods:차단 기 를 사용 하 는 방법
  • 두 가지 설정 방식 이 있 습 니 다:
    
    <interceptor-ref name="validation">
     <param name="excludeMethods">myValidationExcudeMethod</param>
    </interceptor-ref>
    <interceptor-ref name="workflow">
     <param name="excludeMethods">myWorkflowExcludeMethod</param>
    </interceptor-ref>
    혹은
    
    <interceptor-ref name="defaultStack">
      <param name="validation.excludeMethods">myValidationExcludeMethod</param>
      <param name="workflow.excludeMethods">myWorkflowExcludeMethod</param>
    </interceptor-ref>
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기