자바 모니터 와 필터 자세히 알 아 보기
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 차단 을 사용 하도록 요구 합 니 다.
6)Tomcat 이 웹 사이트 의 임의의 파일 을 호출 할 때 OneFilter 차단 을 사용 하도록 요구
총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.