/**
* 作用:過濾編碼
*/
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
{
private String targetEncoding;
{
targetEncoding = "gb2312";//直接初始化0912
}
{
filterConfig = filterconfig;
//targetEncoding = filterconfig.getInitParameter("encoding");//web.xml掛參初始化
}
throws IOException, ServletException
{
HttpServletRequest httpservletrequest = (HttpServletRequest)servletrequest;
httpservletrequest.setCharacterEncoding(targetEncoding);
System.out.println("使用" targetEncoding "對請求進行編碼過濾");
filterchain.doFilter(servletrequest, servletresponse);
}
{
filterConfig = filterconfig;
}
{
filterConfig = null;
}
}
/**
* 作用:過濾外界非法的進入頁面
* 注意:使用該功能時,一定要把登錄頁與被過濾文件夾設爲同級,否則會出現循環
*/
package filter;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
{
protected FilterConfig filterConfig;
{
LOGIN_PAGE = "/login.jsp";
}
throws IOException, ServletException
{
HttpServletRequest request = (HttpServletRequest) servletrequest;
HttpServletResponse response = (HttpServletResponse) servletresponse;
HttpSession session = request.getSession();
String key = "";
try
{
//通過驗證時在session中存的一個標誌
key = (String) session.getAttribute("key");
if (key!= null&&key.equals("ok"))
{
filterchain.doFilter(servletrequest, servletresponse);
}
else
{
response.sendRedirect(LOGIN_PAGE);
System.out.println("被攔截一個未認證的請求");
}
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
{
filterConfig = filterconfig;
}
{
filterConfig = null;
}
throws ServletException
{
filterConfig = filterconfig;
}
}
2、在web.xml中做一些設置
<filter>
<filter-name>code</filter-name>
<filter-class>filter.EncodingFilter</filter-class>
</filter>
<filter>
<filter-name>manage</filter-name>
<filter-class>filter.ManageFilter</filter-class>
</filter>
<filter-name>code</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>manage</filter-name>
<!-- <url-pattern>/ShuiBaoRHPWK_NEW/system/ruhepaiwukou/*</url-pattern>-->
<url-pattern>/servlets-examples/*</url-pattern>
</filter-mapping>
OK,基本FILTER應該做的基本就這樣,你只需要在程序中驗證通過時,在session中存個標誌進去,好讓ManageFilter可以找到,就可以了!