首页 > 学院 > 开发设计 > 正文

Filter与Listener

2019-11-14 12:30:31
字体:
来源:转载
供稿:网友
Servlet过滤器Filter:    能够对Servlet容器的请求和响应对象进行检查和修改。    Servlet过滤器本身不生成请求和响应对象,它只提供过滤作用,    Servlet过滤器可以在Servlet被调用之前检查Request对象,修改Request Header和Request内容    在Servlet被调用之后检查Response对象,修改Response Header和Response内容。    Servlet过滤器负责过滤的web组件可以是Servlet、jsp或Html文件。所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。    这个接口含有3个过滤器类必须实现的方法:    -- init(Filter Config)    -- doFilter(ServletRequest, ServletResponse, FilterChain)    -- destroy()要在web.xml中配置过滤器:    <filter>        <filter-name>LoginFilter</filter-name>        <filter-class>com.filter.LoginFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>LoginFilter</filter-name><url-pattern>/*</url-pattern>    </filter-mapping>有些初始的界面不用过滤器来验证,方法是在LoginFilter类的doFilter()方法中:    HttpServletRequest r = (HttpServletRequest)request;    String requestURL = r.getRequestURL();    if(requestURL.endsWith("login.jsp") || requestURL.endsWith("MyLoginServlet")){        chain.doFilter(request, response);return;    }验证未登录时返回到登录界面,在LoginFilter类的doFilter()方法中:    HttpServletRequest r = (HttpServletRequest)request;    Httpsession session = r.getSession();    if(null == session.getAttribute("user")){        ((HttpServletResponse)response).sendRedirect("login.jsp");return;    } else {        chain.doFilter(request, response);    }    通过调用FilterConfig的getSevletContext()方法获得ServletContext,在调用ServletContext的getAttribute()方法业获得application范围内的共享数据。Listener:Servlet监听器,可以监听客户端的请求、服务端的操作等,通过监听器,可以自动激发一些操作。    监听用户数量:当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1;    常用的监听接口有:        1>:ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性;2>:ServletContextListener监听ServletContext。    当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;    当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法;
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表