Java filter过滤器在项目开发中的应用.doc_第1页
Java filter过滤器在项目开发中的应用.doc_第2页
Java filter过滤器在项目开发中的应用.doc_第3页
Java filter过滤器在项目开发中的应用.doc_第4页
Java filter过滤器在项目开发中的应用.doc_第5页
全文预览已结束

下载本文档

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

文档简介

过滤器在项目开发中的应用javaee过滤器在项目怒开发中通常有三种应用:应用一:统一项目的字符编码:我们新建一个名为Encode.java的文件,内容是:package filter;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;public class Encode implements Filter public void destroy() / TODO Auto-generated method stubpublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException request.setCharacterEncoding(utf-8); response.setCharacterEncoding(utf-8); chain.doFilter(request, response);public void init(FilterConfig arg0) throws ServletException / TODO Auto-generated method stub程序在dofilter的方法中设置了request和response的编码为utf-8,这样便可以解决开发中的乱码问题,配置文件web.xml这样写: encoding filter.Encode encoding /* 应用二:限制所有未经登陆的用户通过地址直接请求资源。我们的项目文件结构如图:所有的页面文件都在pages的文件夹下(包括第一个登陆页面)。先建一个Unlogin,java,内容为:package filter;/防止未登录访问页面的过滤器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;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class Unlogin implements Filter public void destroy() / TODO Auto-generated method stubpublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException RequestDispatcher dispatcher = request.getRequestDispatcher(/pages/login.jsp);/这里设置如果没有登陆将要转发到的页面 HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; HttpSession session = req.getSession(true); /排除登陆页面不被过滤 String request_uri = req.getRequestURI(); String ctx_path = req.getContextPath(); /这里假设是排除登陆页面login.jsp 。排除文件夹是一样的,例如排除admin文件夹:/admin if(request_uri.substring(ctx_path.length().equals( /pages/login.jsp) chain.doFilter(request,response); return; / 从session里取的用户名信息 String username = (String) session.getAttribute(name);/这里获取session,为了检查session里有没有保存用户信息,没有的话回转发到登陆页面 System.out.println(username); / 判断如果没有取到用户信息,就跳转到登陆页面 if (username = null | .equals(username) / 跳转到登陆页面 dispatcher.forward(request,response); / System.out.println(用户没有登陆,不允许操作); res.setHeader(Cache-Control,no-store); res.setDateHeader(Expires,0); res.setHeader(Pragma,no-cache); else / 已经登陆,继续此次请求 chain.doFilter(request,response); / System.out.println(用户已经登陆,允许操作); public void init(FilterConfig arg0) throws ServletException / TODO Auto-generated method stub注意在doFilter方法中先进行了对象的强制转换。设置好未登录将被转发到的请求页面,然后排除login.jsp不被过滤,注意这种用法,也可用于排除某个目录不被过滤。Web.xml这样配置: unlogin filter.Unlogin unlogin /pages/*表示所有对pages下的页面请求都会接受过滤。应用三:防止已经登陆的用户越权访问不该自己访问的目录。新建一个Bosscheck.java,用于拦截普通用户强行访问管理员的页面。管理员的页面在pages/usermanage文件夹下,内容如下:package filter;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;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class Bosscheck implements Filter public void destroy() / TODO Auto-generated method stubpublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; HttpSession session = req.getSession(true); String user=(String)session.getAttribute(usertype); if(boss.equals(user) chain.doFilter(request,response); return; RequestDispatcher dispatcher = request.getRequestDisp

温馨提示

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

评论

0/150

提交评论