Java过滤器Filter使用说明.doc_第1页
Java过滤器Filter使用说明.doc_第2页
Java过滤器Filter使用说明.doc_第3页
Java过滤器Filter使用说明.doc_第4页
Java过滤器Filter使用说明.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java过滤器1. 过滤器的产生背景在基于JSP页面开发的Web项目中,会遇到一种情况,除了登陆页面或者注册页面以外,其它页面在用户未登陆的情况下是不允许访问的。对用户身份的验证是基于session实现的,即在登陆成功后在session中放入标识,当用户再次访问其它页面时,根据session的标识来确认用户是否可以访问。这样的话,在很多页面中都需要添加判断代码,同样代码的重复增加了多余的代码,不符合Java编程习惯且不利于维护。而过滤器的产生解决了这一问题。 服务器端2. 过滤器的实现 请求过滤器服务器端页面用户(浏览器)响应使用Servlet过滤器实现JSP页面中的用户身份验证,首先必须实现Filter接口,且重写doFilter()方法,由doFilter()方法去处理过滤业务;其次,在web.xml文件中配置Servlet过滤器,指定过滤器的名称、过滤器包所在类的名称及过滤器的映射范围等。3. 过滤器的介绍3.1 Servlet过滤器接口的构成所有的Servlet过滤器都必须实现javax.servlet.filter接口,该接口中定义了3个过滤器必须实现的方法: void init(FilterConfig):过滤器的初始化方法,Servlet容器在创建过滤器实例时调用这个方法,在这个方法中可以读出在web.xml文件中为该过滤器配置的初始化参数。 void doFilter(ServletRequest,ServletResponse,FilterChain):用于完成实际的过滤操作,当客户请求访问与过滤器相关联的URL时,Servlet容器将先调用过滤器的这个方法,FilterChain参数用于访问后续过滤器。 void destroy():过滤器在被取消前执行这个方法,释放过滤器申请的资源。 3.2创建一个Servlet过滤器需要下面的步骤: 1.创建一个实现了javax.servlet.Filter接口的类。 2.重写init(FilterConfig)方法,读入为过滤器配置的初始化参数,申请过滤器需要的资源3. 重写方法doFilter(ServletRequest,ServletResponse,FilterChain),完成过滤操作,可以从ServletRequest参数中得到全部的请求信息,从ServletResponse参数中得到全部的响应信息。4. 在doFilter()方法的最后,使用FilterChain参数的doFilter()方法将请求和响应后传。 5.对响应的Servlet程序和JSP页面注册过滤器,在部署描述文件(web.xml)中使用和元素对过滤器进行配置。4. Java代码1 新建Java类,实现Filter接口package com.lacom;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.HttpSession;public class LoginFilter implements Filter private String times;Overridepublic void destroy() Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException /通过判断session中标识确定用户身份,若无则让其访问登陆页面或进行其它操作/若需要用到session,可用以下方法得到HttpServletRequest req = (HttpServletRequest)request;HttpSession session = req.getSession();chain.doFilter(request, response);/若判断用户为已登录,调用此方法,让用户访问页面/此处为服务器响应后的操作Overridepublic void init(FilterConfig config) throws ServletException this.times = config.getInitParameter(times);/从配置文件中读出设置的参数2 在web.xml中进行配置LoginFiltercom.lacom.LoginFilter自定义名字,只需要保证两者一致即可,一般采用类名times1000 LoginFilter*.do!- 设置需要过滤的url请求路径,有三种写法1,完全匹配 /test/list.do 即指定的url2,目录匹配 /test/* 即/test/下的所有url3,扩展名匹配 *.do 所有以.do结尾的url -*.jsp5. Demo(网上找的一个实例,禁止未授权的IP访问站点)使用过滤器禁止未授权的IP访问站点是过滤器常见的应用,本例演示了如何利用过滤器实现禁止未授权的IP访问站点。1.编写过滤器类IPFilter.javapackage com.lacom;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class IPFilter implements Filter private String filterIP, error;public FilterConfig config;Overridepublic void init(FilterConfig filterConfig) throws ServletException this.config = filterConfig;filterIP = config.getInitParameter(IP);if (filterIP = null)filterIP = ;error = config.getInitParameter(ERROR);if (error = null)error = error.jsp;Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws ServletException, IOException RequestDispatcher dispatcher = request.getRequestDispatcher(ErrorInfo.jsp);String remoteIP = request.getRemoteAddr();/ 得到客户的IP地址if (remoteIP.equals(filterIP) dispatcher.forward(request, response);return; elsechain.doFilter(request, response);Overridepublic void destroy() config = null;在这个过滤器中,在doFilter()方法内,通过request对象得到客户端的IP地址,如果客户端的IP是被禁止的IP,则使用request对象将请求转发给一个出错页面。2.修改web.xml,配置过滤器 IPFilter com.lacom.IPFilter IP ER

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论