注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Lable

........................................

 
 
 

日志

 
 

Filter  

2011-12-19 11:22:56|  分类: Java笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、Filter简介< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

    Filter的基本功能是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理的前后实现一些特殊的功能

二、Filter的主要功能

       对用户请求进行统一认证

       对用户的访问请求进行记录和审核

       对用户发送的数据进行过滤和替换

       转换图象格式

       对响应内容进行压缩,减少传输量

       对请求或响应进行加解密处理

       触发资源访问事件

       XML的输出应用XSLT

三、Filter的实现步骤

1.       首先编写Filter的实现类程序

2.       其次在Web部署描述文件Web.xml中声明该Filter

3.       将相关联的Filter与应用程序一起打包并部署

四、Filter相关的API

       Javax.servletFilter接口

·         public void init(FilterConfig filterConfig);完成初始化

·         doFilter() 实现过滤功能

·         destroy();释放Filter使用的资源

       Javax.servletFilterConfig接口

       Javax.servletFilterChain接口

五、Filter部署

       <filter>元素:用于在Web应用程序中声明一个Filter

       <filter-name>Filter指定一个名称,该元素的内容不能为空

       <filter-class>元素用于指定Filter的完整的限定类名

       <init-param>元素用于为Filter指定初始化参数,它的子元素<param-name>指定参数的名称;<param-value>指定参数的值,在Filter中,可以使用FilterConfig接口对象来访问初始化参数

       <filter-mapping>元素:用于指定Filter关联的url样式或者Servlet

       <filter-name>子元素的值必须是<filter>元素中声明过的Filter的名字

       <url-pattern>元素指定Filter关联的URL样式

       <servlet-name>元素指定Filter对应的Servlet

       <url-pattern>元素和<servlet-name>元素可以选择一个;用户在访问<url-pattern>元素指定的URL上的资源或<servlet-name>元素指定的Servlet时,该Filter才会被容器调用

六、应用:

    * 解决中文乱码问题:

    public void init(FilterConfig filterConfig) throws ServletException {

            this.charset = filterConfig.getInitParameter("charset");

    }

   

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {

        request.setCharacterEncoding("gbk");

       chain.doFilter(request, response);

    }

 

    public void destroy() { }

 

* 进行用户权限验证

    public void doFilter(ServletRequest request, ServletResponse response,

           FilterChain chain) throws IOException, ServletException {

       HttpServletRequest req = (HttpServletRequest) request;

       HttpServletResponse res = (HttpServletResponse) response;

       HttpSession session = req.getSession(true);

      

       //session里取的用户名信息

       String username = (String) session.getAttribute("username");

       //判断如果没有取到用户信息,就跳转到登陆页面

       if (username == null || "".equals(username)) {

           //跳转到登陆页面

           res.sendRedirect("http://"+req.getHeader("Host")+"/login.jsp");

       }else{

           // 已经登录

           chain.doFilter(request,response);

       }

    }

 

 

  评论这张
 
阅读(12)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017