过滤器是一种在http请求处理前的prehandler
设置过滤器的方法
1 web.xml中注册
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>filterBase.EncodingFilter</filter-class>(过滤器类的定义)
<init-param>
<param-name>encodeType</param-name>(可选,在过滤器中可以获取配置的数据)
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>(对应上面的name)
<url-pattern>/*</url-pattern>(这里表示所有http请求都要经过过滤器)
<url-pattern>/a.jsp</url-pattern>(这里表示请求a.jsp的消息要经过过滤器)
</filter-mapping>
过滤器会按照webxml的书写顺序来安序执行过滤操作
2 生成过滤器类,过滤器类必须继承import javax.servlet.Filter;
3重写dofilter方法,注意要有chain.doFilter(request, response);语句来继续处理http消息
强制登陆功能的实现就可以通过过滤器来实现,检查session中是否有user属性,如果没有就强制重定向到登陆页面
dofilter实现例子
HttpServletRequest hrequest = (HttpServletRequest)request;
HttpServletResponse hresponse = (HttpServletResponse)response;
String username = (String)hrequest.getSession().getAttribute("user");
if(username == null)
{
hresponse.sendRedirect(hrequest.getContextPath() + "/index.jsp?flag=1");
}