Filteræ为滤éæè è¿æ»¤å¨ï¼å®ç¨äºServletä¹å¤å¯¹requestæresponseè¿è¡ä¿®æ¹ãç»å¤§å®¶è¯´ä¸ªéä¿ææçååï¼åå¦ä½ å¨æ²¡æ没æç»å½qq空é´çæ¶åï¼å¨urlå°åæ ç´æ¥è¾å ¥ä½ ç空é´å°åãå®æ¯ä¸ä¼è·³è½¬å°ä½ ç空é´çï¼èæ¯è·³è½¬å°ç»å½çé¢ãå®ç°è¿ä¸åè½çå°±æ¯æ们ä»å¤©ç´¢è¦è®²çFilterè¿æ»¤å¨:ï¼
1ï¼Filteræ¥å£
ä¸ä¸ªFilterå¿ é¡»å®ç°javax.servlet.Filteræ¥å£ï¼Filteræ¥å£æ3个æ¹æ³ï¼
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;
public class test implements Filter {
public void init(FilterConfig arg0) throws ServletException {
//webç¨åºå¯å¨æ¶è°ç¨æ¤æ¹æ³ï¼ç¨äºåå§å该Filter
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
}
public void destroy() {
//ç¨äºwebç¨åºå ³éæ¶è°ç¨æ¤æ¹æ³ï¼ç¨äºéæ¯ä¸äºèµæº
}
}
è¿3个æ¹æ³ä¸initï¼ï¼ä¸destroyï¼ï¼æ¹æ³åªä¼è¢«è°ç¨ä¸æ¬¡ï¼åå«æ¯å¨webç¨åºå è½½æè å¸è½½çæ¶åè°ç¨ãèé½Filteræ¹æ³æ¯æ¬¡æ客æ·è¯·æ±é½ä¼è¢«è°ç¨ä¸æ¬¡ãFilterçææå·¥ä½é½éä¸å¨doFilterï¼ï¼æ¹æ³ä¸ã
2ï¼Filteré ç½®
Filteréè¦åweb.xmlä¸é ç½®åæè½çæï¼é常ä¸ä¸ªFilteréè¦é ç½®<filter>ä¸<filter-mapping>æ ç¾ï¼é ç½®å¦ä¸ï¼
<filter>
<filter-name>è¿æ»¤å¨å</filter-name>
<filter-class>æå¨çå </filter-class>
<init-param>
<param-name></param-name>
<param-value>带ææ¤åçæ¾è¡ï¼å¤ä¸ªç¨éå·éå¼</param-value>
</init-param>
<init-param>
<param-name></param-name>
<param-value>å符é</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name></filter-name>
<url-pattern>/*</url-pattern>//ææçé½éè¦å¹é æ¤è¿æ»¤å¨
</filter-mapping>
<dispatcher>é ç½®å°è¾¾Servletçæ¹å¼æ4ä¸åå¼ï¼REQUEST,FORWARD,INCLUDE.ERRORãå¯ä»¥åæ¶å¹é å¤ä¸ª<dispatcher>,é»è®¤ç为ï¼requestã
requestï¼è¡¨ç¤ºä» å½ç´æ¥è¯·æ±Servletæ¯æçæã
forwardï¼è¡¨ç¤ºä» å½æServletéè¿forwardå°è¯¥Servletæ¶æçæã
includeï¼jspä¸å¯ä»¥éè¿<jsp:include />请æ±æServletãä» å½è¿ç§æ åµä¸æçæã
errorï¼jspä¸å¯ä»¥éè¿<%@page errorPage=âerror.jspâ %>æå®é误å¤ç页é¢ï¼ä» å½è¿ç§æ åµä¸æçæã
<url-pattern>ä¸<dispatcher>çå ³ç³»æ¯âä¸âçå ³ç³»ï¼åªæå ¨é¨æ»¡è¶³è¿ä¸¤è çæ¡ä»¶æ¶ï¼Filteræä¼çæã
ä¸ä¸ªwebå¯è½ä¼æå¤ä¸ªFilterï¼å¤ä¸ªFilteræ§è¡çå å顺åºæ¯<Filter-mapping>é ç½®å¨åé¢çFilterå æ§è¡ãä»ä»¬å¯è½ä¼ç¸äºå½±åã
ç»å½ç¨æ·åä¾åï¼
package 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;
import javax.servlet.http.HttpSession;
public class loginFilter implements Filter {
private FilterConfig config;
public void destroy() {
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) arg0;
HttpServletResponse response = (HttpServletResponse) arg1;
HttpSession session = request.getSession();
String noLoginPaths = config.getInitParameter("noPaths");
String charset = config.getInitParameter("charset");
if (charset == null) {
charset = "UTF-8";
}
request.setCharacterEncoding(charset);
  if (noPaths != null) {
String[] str = noPaths.split(";");
for (int i = 0; i < str.length; i++) {
if (strArray[i] == null || "".equals(strArray[i]))
continue;
if (request.getRequestURI().indexOf(strArray[i]) != -1) {
arg2.doFilter(arg0, arg1);
return;
}
}
}
if (session.getAttribute("username") != null) {
arg2.doFilter(arg0, arg1);
} else {
response.sendRedirect("login.jsp");
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
web.xmlé ç½®ï¼
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>filter.loginFilter</filter-class>
<init-param>
<param-name>noPaths</param-name>
<param-value>login.jsp;fail.jsp;loginServlet</param-value>
</init-param>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
以ä¸æ¯Filteråweb.xml代ç ã
Â