필터 코어 코드
4379 단어 java 기초
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,ServletException {
HttpServletRequest request = (HttpServletRequest) req;
String url = request.getRequestURI();
Pattern p = Pattern.compile(".(jsp|jspx|php|asp|aspx)");// Pattern
Matcher m = p.matcher(url);
boolean rs = m.find();// 。
if (url.equals("/imageUp.jsp") || url.equals("/upfile.jsp") || url.equals("/plugins/ueditor/jsp/controller.jsp") || url.equals("/controller.jsp")) {
logger.debug("ueditor file upload file!");
chain.doFilter(req, res);//
} else if (rs) {// , ,
logger.debug(".(jsp|jspx|php|asp|aspx) forbidden allow!");
request.getRequestDispatcher("/404.html").forward(req, res);
} else {
chain.doFilter(req, res);//
}
}
2. 세션 필터, 로그인 시 검증할 요청 필터
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
// String requesturi = httpServletRequest.getRequestURI();
// session ,
HttpSession session = httpServletRequest.getSession();
Operator sessionUser = (Operator) session.getAttribute(Constant.SESSION_OPERATOR);
// , ,
String servletPath = httpServletRequest.getServletPath();
String queryString = httpServletRequest.getQueryString();
List pathList = notNeedSessionCheck();
if (!pathList.contains(servletPath)) {
if (sessionUser == null) {
String redirectURL = servletPath;
if (StringUtil.isNotBlank(queryString)) {
redirectURL = httpServletRequest.getContextPath() + servletPath + "?"
+ StringUtil.isNull(queryString);
}
redirectURL = java.net.URLEncoder.encode(redirectURL, "UTF-8");
httpServletResponse
.sendRedirect(Global.getString("adminurl") + "/home.html?timeout=1&redirectURL="
+ httpServletRequest.getContextPath() + redirectURL);
return;
}
}
chain.doFilter(request, response);
}
private List notNeedSessionCheck() {
String[] paths = new String[] { "/modules/login.html", "/modules/login.action","/modules/validimg.html" };
return Arrays.asList(paths);
}
3. FilterConfig의 사용법 {FilterConfig은 웹.xml에서 분배된 필터 초기화 파라미터를 가져올 수 있습니다.}
public class EncodingFilter implements Filter {
private FilterConfig filterConfig = null;
private String encoding = null;
//
public void destroy() {
encoding = null;
}
//
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// ServletContext ,
ServletContext context = this.filterConfig.getServletContext();
context.log(" ");
String encoding = getEncoding();
if (encoding == null){
encoding = "gb2312";
}
//
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);
context.log(" ");
}
//
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
private String getEncoding() {
return this.encoding;
}
}
cacheTimeout
600
// :
filterConfig.getInitParameter("locale-sensitive"); //true
filterConfig.getInitParameter("cacheTimeout"); // 600
filterConfig.getInitParameter(request.getRequestURI());
【총괄】
웹에서.xml에서 어떤 것을 먼저 설정하고, 어떤 것을 먼저 호출합니다.Filter에서도 초기화 파라미터를 설정할 수 있습니다.Java의 Filter는 표준 서브렛이 아니며 사용자 요청을 처리할 수도 없고 클라이언트에 대한 응답을 생성할 수도 없습니다.주로 HttpServletRequest를 예처리하거나 HttpServletResponse를 후처리하는 전형적인 처리 체인입니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 네트워크 프로그래밍의 UDP 서버 및 클라이언트 프로그램서버: 클라이언트: UDP: 클라이언트를 열어 데이터를 받을 때까지 기다린 다음 서버를 열어 데이터를 보냅니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.