자바 모니터 와 필터 자세히 알 아 보기

10882 단어 자바모니터필터
1.소개:
1)Servlet 규범 에서 나 온 인터페이스 로 모두 8 개의 인터페이스 가 있다.Tomcat 에 Servlet-api.jar 패키지 에 존재 합 니 다.
2)모니터 인 터 페 이 스 는 개발 자가 직접 구현 해 야 하 며,Http 서버 가 제공 하 는 jar 에는 대응 하 는 구현 클래스 가 없습니다.
3)모니터 인 터 페 이 스 는[역할 영역 대상 수명 주기의 변화 시간]과[역할 영역 대상 이 데 이 터 를 공유 하 는 변화 시간]을 감시 하 는 데 사용 된다.
2.역할 영역 대상:
1)Servlet 규범 에서 서버 메모리 에서 특정한 조건 에서 두 개의 Servlet 간 에 데이터 공유 방안 을 제공 할 수 있다 고 생각 하 는 대상 을[역할 영역 대상]이 라 고 합 니 다.
2)Servlet 규범 에서 의 역할 영역 대상:ServletContext:전역 역할 영역 대상HttpSession:세 션 역할 영역 대상HttpServletRequest:역할 영역 대상 요청
3.모니터 인터페이스 실현 유형 개발 규범:3 단계
1)감청 의 실제 상황 에 따라 해당 하 는 감청 기 인 터 페 이 스 를 선택 하여 구현
2)모니터 인터페이스 에 설 명 된[감청 사건 처리 방법]을 다시 쓴다.
3)웹.xml 파일 에서 모니터 인터페이스 구현 클래스 를 Http 서버 에 등록
4、ServletContextListener
1)역할:이 인 터 페 이 스 를 통 해 전역 역할 영역 대상 을 합 법 적 으로 검사 하 는 두 시간
초기 화 되 었 을 때 소각 되 었 을 때
2)감청 사건 처리 방법public void contextInitialized():전역 역할 영역 대상 이 Http 서버 에 초기 화 되 어 호출 됨public void contextDestroyed():전역 역할 영역 대상 이 Http 서버 에 의 해 삭 제 될 때 호출 됨
5.ServletContextAttributeListener 인터페이스:
1)역할:이 인 터 페 이 스 를 통 해 전역 역할 영역 대상 이 데이터 변 화 를 공유 하 는 시간 을 합 법 적 으로 검사 합 니 다.
2)감청 사건 처리 방법:public void contextAdded():전역 역할 영역 대상 에 공유 데 이 터 를 추가 할 때 호출public void contextReplaced():전역 역할 영역 대상 이 공유 데 이 터 를 업데이트 할 때 호출public void contextRemoved():전역 역할 영역 대상 이 공유 데 이 터 를 삭제 할 때 호출
6.전역 역할 영역 대상 공유 데이터 변화 시간ServletContext application=request.getServletContext(); application.setAttribute("key1",100); //공유 데이터 추가application.setAttribute("key1",200);//공유 데이터 업데이트application.removeAttribute("key1"); //공유 데이터 삭제
코드 구현
다음은 ServletContextListener 인터페이스 와 ServletContextAttributeListener 인터페이스 로
첫 번 째 단계:ServletContextListener 인 터 페 이 스 를 선택 하여 실현
두 번 째 단계:모니터 인터페이스 성명 을 다시 쓰 는[감청 사건 처리 방법]

public class OneListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("Initialized............");
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("Destroyed.............");
    }
}
세 번 째 단계:웹.xml 에서 모니터 인터페이스 구현 클래스 를 Http 서버 에 등록 합 니 다.

<listener>
    <listener-class>school.xauat.listener.OneListener</listener-class>
</listener>
ServletContext[전역 작용 대상 의 생명주기]가 사이트 의 전체 운행 기간 을 관통 하기 때문에
Servlet 간 데이터 공유 에는 구체 적 인 Servlet Context 라 이 프 사이클 이 있 습 니 다.
따라서 Tomcat 서버 시작 과정 에서 contextInitialize()방법 을 실행 합 니 다.
Initialized............
Tomcat 서버 가 종료 하려 고 할 때 contextDestroyed()방법 을 실행 합 니 다.
Destroyed.............
첫 번 째 단계:ServletContextAttributeListener 인 터 페 이 스 를 선택 하여 실현
두 번 째 단계:모니터 인터페이스 성명 을 다시 쓰 는[감청 사건 처리 방법]

public class OneListener implements ServletContextAttributeListener {
    @Override
    public void attributeAdded(ServletContextAttributeEvent scae) {
        System.out.println("ServletContextAttribute is added......");
    }
    @Override
    public void attributeRemoved(ServletContextAttributeEvent scae){
        System.out.println("ServletContextAttribute is removed......");
    }
    @Override
    public void attributeReplaced(ServletContextAttributeEvent scae){
        System.out.println("ServletContextAttribute is replaced......");
    }
}
세 번 째 단계:웹.xml 파일 에서 모니터 인터페이스 구현 클래스 를 Tomcat 서버 에 등록 합 니 다.

<servlet>
    <servlet-name>OneServlet</servlet-name>
    <servlet-class>school.xauat.controller.OneServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>OneServlet</servlet-name>
    <url-pattern>/one</url-pattern>
</servlet-mapping>
<listener>
    <listener-class>school.xauat.listener.OneListener</listener-class>
</listener>
감청 사건

public class OneServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //               
        ServletContext application=request.getServletContext();
        //               
        application.setAttribute("key",100);
        //               
        application.setAttribute("key",500);
        //               
        application.removeAttribute("key");
    }
}
실행 결과

Servt 규범 확장------필터 인터페이스
1.소개:
1)Servlet 규범 에서 나 온 인터페이스 로 Tomcat 에servlet-api.jar가방 에 존재 합 니 다.
2)Filter 인터페이스 구현 클래스 는 개발 자가 제공 하 며,Http 서버 는 제공 하지 않 습 니 다.
3)Filter 인 터 페 이 스 는 Http 서버 에서 자원 파일 을 호출 하기 전에 Http 서버 를 차단 합 니 다.
2.구체 적 인 역할:
1)Http 서버 차단,Http 서버 가 현재 요청 의 합 법성 을 검사 하도록 돕 기
2)Http 서버 차단,현재 요청 에 대한 증강 작업
3.Filter 인터페이스 실현 류 의 개발 절차:3 단계
1)자바 클래스 필터 인터페이스 만 들 기
2)Filter 인터페이스의 doFilter 재 작성 방법
3)웹.xml 파일 에서 필터 인터페이스 구현 클래스 를 Http 서버 에 등록
필터 검사 요청 합 법성
첫 번 째 단계:자바 클래스 를 만 들 고 Filter 인 터 페 이 스 를 실현 합 니 다.
두 번 째 단계:doFilter 인터페이스 에 있 는 doFilter()방법 다시 쓰기

/**
 * http://localhost:8080/myWeb/mm.jpg?age=89
 */
public class OneFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //                     ,             
        String age=servletRequest.getParameter("age");
        //           Http             
        if(Integer.valueOf(age)<70){
            //               Tomcat, Tomcat        
            filterChain.doFilter(servletRequest,servletResponse);
        }else{
            //     Http         
            servletResponse.setContentType("text/html;charset=utf-8");
            PrintWriter out=servletResponse.getWriter();
            out.print("<center><font style='color:red;font-size:40px'>   !!!!</font></center>");
        }
    }
}
세 번 째 단계:웹.xml 파일 에서 필터 인터페이스 구현 클래스 를 Http 서버 에 등록 합 니 다.

<!--         Tomcat-->
<filter>
    <filter-name>OneFilter</filter-name>
    <filter-class>school.xauat.filter.OneFilter</filter-class>
</filter>
<!--  Tomcat                    -->
<filter-mapping>
    <filter-name>OneFilter</filter-name>
    <url-pattern>/mm.jpg</url-pattern>
</filter-mapping>
필터 가 요청 대상 에 대한 증강 서 비 스 를 진행 합 니 다.
post 로 서버 에 접근 을 요청 할 때 각 Servlet 인터페이스 구현 클래스 에서 doPost()방법 을 다음 과 같이 조작 하여 개발 의 난이 도 를 높 여야 합 니 다.
response. setCharacterEncoding("utf-8")
필터 의 역할 을 보 여 줍 니 다:
첫 번 째 단계:자바 필터 인터페이스 만 들 기
두 번 째 단계:Filter 인터페이스 에 있 는 doFilter()방법 다시 쓰기

public class OneFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        filterChain.doFilter(servletRequest,servletResponse);
    }
}
세 번 째 단계:웹.xml 파일 에서 필터 인터페이스 구현 클래스 를 Http 서버 에 등록 합 니 다.

<servlet>
        <servlet-name>OneServlet</servlet-name>
        <servlet-class>school.xauat.controller.OneServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OneServlet</servlet-name>
        <url-pattern>/one</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>TwoServlet</servlet-name>
        <servlet-class>school.xauat.controller.TwoServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>TwoServlet</servlet-name>
        <url-pattern>/two</url-pattern>
    </servlet-mapping>
    <!--  Filter -->
    <filter>
        <filter-name>OneFilter</filter-name>
        <filter-class>school.xauat.filter.OneFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OneFilter</filter-name>
        <!--  Tomcat                OneFilter    -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
OneServlet

public class OneServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //                 
        String userName=request.getParameter("userName");
        System.out.println("OneServlet----->"+userName);
    }
}
TwoServlet

public class TwoServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //                 
        String userName=request.getParameter("userName");
        System.out.println("TwoServlet---->"+userName);
    }
}
4.Filter 주소 차단 형식
1)명령 형식:


차단 주소

2)명령 역할:
차단 주 소 는 Tomcat 이 어떤 자원 파일 을 호출 하기 전에 원 필터 로 차단 해 야 하 는 지 알려 줍 니 다.
3)Tomcat 에 구체 적 인 파일 을 호출 하기 전에 OneFilter 를 호출 하여 차단 하도록 요구
/디 렉 터 리/파일 이름
4)Tomcat 은 어떤 폴 더 아래 에 있 는 모든 자원 파일 을 호출 하기 전에 OneFilter 를 호출 하여 차단 하도록 요구 합 니 다.
/디 렉 터 리/*
5)Tomcat 에 게 임의의 폴 더 에 있 는 어떤 종류의 파일 을 호출 하기 전에 OneFilter 차단 을 사용 하도록 요구 합 니 다.
*.jpg
6)Tomcat 이 웹 사이트 의 임의의 파일 을 호출 할 때 OneFilter 차단 을 사용 하도록 요구
/*
총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기