filter用法

Filter功能一般用于:

1.字符编码转换

2.session管理

Filter好比一个门卫过滤进来的人。而且在实现Filter接口的类的dofilter方法中,一定要执行chain.dofilter(request,response)才能继续执行。例如在web.xml设置filter-mapping中的url-pattern为/admin/*,则表明访问该工程下的admin目录下的代码才会执行设置好的filter实现类,执行别的页面则不执行。

根据filter功能1字符编码转换功能:

比如:建立一个带default表单的html页面(charset=UTF-8),建立个LoginServlet的servlet页面,从login.html传递到LoginServlet的username参数名"张三",由于html页面charset=utf-8,request读不到汉字,结果为乱码。修改方法:html修改charset=gbk,request.setCharacterEncoding("gbk"),response.setCharacterEncoding("gbk")。

      或者更为简便的方法是使用Filter,代码如下

public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  // TODO Auto-generated method stub
  request.setCharacterEncoding("gbk");
  response.setCharacterEncoding("gbk");
  chain.doFilter(request, response);
  
 }

在web.xml中添加

<filter>
   <filter-name>ef</filter-name>
   <filter-class>EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
   
   <filter-name>ef</filter-name>
   <url-pattern>/*</url-pattern>

而页面的字符集编码都不用管了。

Filter第二个功能是session管理:

比如:工程下webroot包含一个pages文件夹里含有业务页面,webroot根目录下还有一个Login.jsp,则需要设置filter过滤pages文件夹中的页面,可以设置sessionfilter类来判别每个页面是否在session中是否存有用户名,如果没有则跳转到Login.jsp并提示下您没有输入用户名。如果有则继续执行。另外要注意的是,在dofilter类中的参数是servletrequest 和servletresponse。一般我们要用到的session是从httpservletrequest获取到的,所以必须要把dofilter的servletrequest转型

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值