Servlet 필터 (필터 2)
6363 단어 servlet
1. 브 라 우 저 캐 시 모든 동적 페이지 의 필터 금지:
(1) 3 개의 HTTP 응답 헤더 필드 가 현재 페이지 의 브 라 우 저 캐 시 를 금지 할 수 있 습 니 다. Servlet 의 인 스 턴 스 코드 는 다음 과 같 습 니 다. response. setDateHeader ("Expires", - 1);
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
(2) 모든 브 라 우 저가 위의 세 개의 응답 헤드 를 완전히 지원 할 수 있 는 것 은 아니 므 로 위의 세 개의 응답 헤드 를 동시에 사용 하 는 것 이 좋 습 니 다.
(3) Expires 데이터 헤더: 값 은 GMT 시간 값 이 고 - 1 은 브 라 우 저가 페이지 를 캐 시 하지 않 는 것 을 가리킨다.
2. Cache - Control 응답 헤드 는 두 개의 상용 값 이 있 습 니 다.
(1) no - cache 는 현재 페이지 를 캐 시 하지 않 는 브 라 우 저 를 말한다.
(2) max - age: xxx 는 브 라 우 저 캐 시 페이지 xxx 초 를 가리킨다.
실례:
package com.hbsi.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class NoCatchFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
resp.setDateHeader("expires",-1);
resp.setHeader("Cache-Control","no-cache");
resp.setHeader("Pragma","no-cache");
chain.doFilter(req, resp);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
2. Filter 에서 흔히 볼 수 있 는 응용 (3) --- 브 라 우 저 캐 시 페이지 의 정적 자원 을 제어 하 는 필터
1. 장면: 일부 동적 페이지 에서 일부 그림 이나 css 파일 을 인용 하여 페이지 효 과 를 수식 합 니 다. 이 그림 과 css 파일 은 항상 변 하지 않 기 때문에 서버 의 압력 을 줄 이기 위해 filter 를 사용 하여 브 라 우 저 캐 시 를 제어 하여 서버 의 성능 을 향상 시 킬 수 있 습 니 다.
실례:
package com.hbsi.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ExpiresFilter implements Filter {
private FilterConfig config;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest) request;
HttpServletResponse resp=(HttpServletResponse) response;
String uri=req.getRequestURI();
if(uri.endsWith(".css")){
long time=Integer.parseInt(config.getInitParameter("css"))*1000;
resp.setDateHeader("expries", System.currentTimeMillis()+time);
}else if(uri.endsWith(".jpg")){
long time=Integer.parseInt(config.getInitParameter("jpg"))*1000;
resp.setDateHeader("expries",System.currentTimeMillis()+time);
}else if(uri.endsWith(".js")){
long time=Integer.parseInt(config.getInitParameter("js"))*1000;
resp.setDateHeader("expries",System.currentTimeMillis()+time);
}
chain.doFilter(req, resp);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.config=filterConfig;
}
}
웹. xml 의 필터 설정:
<filter>
<filter-name>ExpiresFilter</filter-name>
<filter-class>com.hbsi.filter.ExpiresFilter</filter-class>
<init-param>
<param-name>css</param-name>
<param-value>120</param-value>
</init-param>
<init-param>
<param-name>jpg</param-name>
<param-value>120</param-value>
</init-param>
<init-param>
<param-name>js</param-name>
<param-value>120</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>*.jpg</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>ExpiresFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
3. Filter 에서 흔히 볼 수 있 는 응용 (4) --- Filter 를 사용 하여 URL 등급 의 권한 인증 을 실현 합 니 다.
상황: 실제 개발 에서 우 리 는 민감 한 작업 을 수행 하 는 servlet 을 일부 특수 디 렉 터 리 에 투사 하고 filter 로 이 특수 디 렉 터 리 를 보호 하 며 해당 하 는 접근 권한 을 가 진 사용자 만 이 디 렉 터 리 에 있 는 자원 에 접근 할 수 있 도록 제한 합 니 다.따라서 우리 시스템 에서 URL 등급 의 권한 기능 을 실현 합 니 다.
요구: Filter 가 유 니 버 설 성 을 가지 도록 Filter 가 보호 하 는 자원 과 해당 하 는 접근 권한 을 filter 매개 변수 형식 으로 설정 합 니 다.
4. Filter 에서 흔히 볼 수 있 는 응용 (5) --- 자동 로그 인 실현
사용자 가 로그 인 에 성공 한 후에 user 라 는 쿠키 를 클 라 이언 트 에 보 냅 니 다. 쿠키 의 값 은 사용자 이름과 md5 암호 화 된 비밀번호 입 니 다.
AutoLoginFilter 를 만 듭 니 다. 이 filter 는 사용자 가 user 라 는 쿠키 를 가지 고 있 는 지 확인 합 니 다. 있 으 면 dao 를 호출 하여 쿠키 의 사용자 이름과 비밀번호 가 데이터베이스 와 일치 하 는 지, 일치 하 는 지 확인 하고 session 에 user 대상 (즉 사용자 로그 인 태그) 을 저장 하여 프로그램 이 자동 으로 로그 인 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
5분 안에 JSP 배우기Java 생태계는 지난 20년 동안 많이 발전했으며 이는 시장에서 변함없이 인기를 얻고 있음으로 알 수 있습니다. 글쎄, 이것은 다른 프로그래밍 언어 중 하나에 대한 탄탄한 배경이 있거나 새로운 개발자이지만 시간이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.