




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
过滤器在项目开发中的应用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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小儿留置针穿刺课件
- 农副品委托销售合同范本
- 三伏天养生课件
- 丝织物商铺转让合同范本
- 上海大型仓库租赁协议书
- 油画定制合同范本模板模板
- 工厂物流仓库出租合同范本
- 农场小规模养殖合同范本
- 2025年私人住宅租赁信托协议
- 期货从业资格之《期货法律法规》练习题库及答案详解【基础+提升】
- 2025至2030中国金属键合线行业战略规划及投融资动态研究报告
- 企业会计准则实施典型案例
- 降低留置针堵管发生率:PDCA质量持续改进
- 居间工程合同协议书范本
- 香港应聘简历模板
- 高考英语一轮专项复习:高考试题中的熟词生义(含解析)
- 2025年全国卷高考历史小论文题指导分析及例题鉴赏
- 《Java程序设计任务式教程》课件 603 构造方法
- 军队基本医疗设备配备标准
- 特种设备监察培训
- GB/T 23713.1-2024机器状态监测与诊断预测第1部分:一般指南
评论
0/150
提交评论