一、Servlet过滤器
过滤器是进行过滤预处理的装置。
Servlet过滤器是一种特殊的Servlet,可以对用户的请求信息和响应信息进行过滤,当访问Servlet过滤器对应的Servlet时,会先执行Servlet过滤器,对请求和响应的信息进行过滤。
Servlet过滤器类需要实现javax.servlet.Filter接口,同时需要继承HttpServlet类。接口中的方法如下:
init(FilterConfig):初始化方法,完成Servlet过滤器类的初始化。
doFilter(ServletRequest, ServletResponse,FilterChain):完成过滤操作。
destory():销毁过滤器。
二、Demo
过滤器LoginFilter类实现登录时的过滤,如果帐号或密码为空的话,则不防问Login.java。该例子接上一篇:JavaEE学习笔记之JSP+Servlet(一)
在上一个工程中,建一个LoginFilter类,实现过滤功能。源代码如下:
package edu.cn.filters; import java.io.IOException; import java.io.PrintWriter; 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.HttpServlet; public class LoginFilter extends HttpServlet implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterchain) throws IOException, ServletException { String username = request.getParameter("username"); String password = request.getParameter("password"); if(username.length()==0||password.length()==0){ //设定response返回的编码 response.setContentType("text/html;charset=gb2312"); try{ PrintWriter out = response.getWriter(); out.print("用户名或口令为空,请"); out.print("<a href='Login.jsp'>"); out.print("重新登录"); out.print("</a>!"); out.flush(); return; }catch(Exception e){ } } try{ filterchain.doFilter(request, response); }catch(Exception e){ } } public void init(FilterConfig config) throws ServletException { } }还需要在配置文件中配置过滤器,此时的配置文件内容为
<?xml version="1.0" encoding="GB2312"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>Login</servlet-name> <servlet-class>edu.cn.servlets.Login</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet-name> <url-pattern>/Login</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>Login.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>LoginFilter</filter-name> <filter-class>edu.cn.filters.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/Login</url-pattern> </filter-mapping> </web-app>其中红色的为配置过滤器的代码。
转载请注明出处:http://blog.youkuaiyun.com/ljp2009012843/article/details/7590813