1.所在的类实现Filter接口
public interface Filter
public void init(FilterConfig filterConfig)throws ServletException
过滤器初始化是在容器启动时自动初始化
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletExcepton
在标准Servlet中的doGet或doPost 方法中,传递参数为:HttpServletRequest、HttpServletResponse
过滤器销毁
public void destroy()
package cn.mldn.lxh.filter
import java.io.*;
import javax.servlet.*;
public class FirstFilter implements Filter
{
public void init(FilterConfig config)throws ServletException
{
System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException
{
System.out.println(过滤doFilter);
}
public void destroy()
{
System.out.println(过滤器销毁);
}
}
web.xml文件配置
<filter>
<filter-name>first</filter-name>
<filter-class>cn.mldn.lxh.filter.FirstFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>first</filter-name>
与servlet中的url-pattern不一样,此处表示对那个页面进行过滤,如果全部都过滤,则"/*"
<url-pattern>/*</url-pattern>
</filter-mapping>
如果过滤器要将内容传递到目的地,则需要FilterChain,将请求继续向下转发
过滤器也会执行两次:FilterChain这前执行一次,之后再执行一次
1.过滤非法文字:
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
public class CharFilter implements Filter
{
public void init(FilterConfig filterConfig)throws ServletException
{
//System.out.println("init");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
String content=request.getParameter("content");
//如果indexOf返回-1则表示没有查到所要的内容
if(content!=null)
if(content.indexOf("AAA")==-1)
{
chain.doFilter(request,response);
}
esle
{
System.out.println("有非法文字");
//如果需要的话,此处依然可以使用RequestDispatcher进行跳转
}
}
else
{
chain.doFilter(request,response);
}
}
public void destroy()
{
//System.out.println("过滤器销毁");
}
<filter>
<filter-name>char</filter-name>
<filter-class>cn.mldn.lxh.filter.CharFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>char</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.对内容进行统一的编码
setCharacterEncoding("GB2312");
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
public class EncodingFilter implements Filter
{
public void init(FilterConfig filterConfig)throws ServletException
{
//System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
try{
request.setCharacterEncoding("GB2312");
}
catch(Exception e)
{}
chain.doFilter(request,response);
}
public void destroy()
{
//System.out.println("销毁");
}
}
<filter>
<filter-name>encoding</filter-name>
<filter-class></filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.登陆验证
package cn.mldn.lxh.filter;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LoginFilter implements Filter
{
public void init(FilterCoinfig filterConfig)throws ServletException
{
//System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException,ServletException
{
//Session属于http范畴,把以ServletRequest对象需要先转换成HttpServletRequest对象
HttpServletRequest req=(HttpServletRequest)request;
HttpSession session =req.getSession();
//如果session不为空,则可以浏览其它页面
if(session.getAttribute("uname")!=null)
{
chain.doFilter(request,response);
}
else
{
//通过requestDispatcher跳转到登陆面
request.getRequestDispatcher("login.jsp").forward(request,response);
}
}
public void destroy()
{
//System,out.println("销毁");
}
}
<filter>
<filter-name>login</filter-name>
<filter-class>cn.mldn.lxh.filter.LoginFilter</filter-class>
<init-param>
<param-name>参数名称</param-name>
<param-value>参数值</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>login</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
读取web.xml中的参数的方法:
public void init(FilterConfig arg0) throws ServletException {
String 参数值= arg0.getInitParameter("参数名称");
}
转自:http://topic.csdn.net/u/20071221/15/53b6f2bd-51a3-47bb-8331-0c39e99f52fd.html
分享到:
相关推荐
该压缩包实现了利用过滤器或者拦截器对登录信息进行验证跳转登陆页的功能,利用的是SpringBoot和thymeleaf,使用前请先看使用说明
转换中文的过滤器转换中文的过滤器转换中文的过滤器转换中文的过滤器
1 用过滤器实现数据初始化 2 用过滤器实现中文编码转换 3 用servlet实现页面控件 4 sql2005 由于sql2000不支持对text类型的查询.sql2005则支持. 5 HashMap是随机从中取数据的.而采用LinkedHashMap即链表...
介绍 FFmpeg是命令行视频编辑中的事实标准,但使用非平凡的过渡将视频连接在...这个库是一个 ffmpeg 扩展,可以很容易地在 ffmpeg 过滤器图中使用 gl-transitions。 更多详情、使用方法,请下载后阅读README.md文件
本文实例讲述了Angular使用过滤器uppercase/lowercase实现字母大小写转换功能。分享给大家供大家参考,具体如下: <!DOCTYPE html> <html ng-app=myApp> <head> <meta charset=UTF-8> <...
该项目使用 Android 最新的MediaCodec API进行视频/音频编码和流行的 C ibrary librtmp(包括源代码)用于 rtmp 流,此外,还提供了在相机捕获阶段和编码阶段之前实现实时效果过滤器的能力。一些特点是: 支持 ...
JSP 开发中过滤器filter设置编码格式的实现方法 我们知道为了避免提交数据的乱码问题,需要在每次使用请求之前设置编码格式。在你复制粘贴了无数次request.setCharacterEncoding(“gb2312”);后,有没有想要一劳永逸...
就象本章前面提到的一样,模板过滤器是在变量被显示前修改它的值的一个简单方法。 过滤器使用管道字符,如下所示: {{ name|lower }} 显示的内容是变量 {{ name }} 被过滤器 lower 处理后的结果,它功能是转换文本...
主要为大家详细介绍了vue货币过滤器的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这个时候我的做法是vue写一个过滤器,将所有的数据都用这个过滤器过滤一下。 因为涉及的数据相对比较多,我就将这个过滤器挂载到了全局,这样就不用再每个页面引用了。 转换代码实现 首先创建一个文件 ...
SpringBoot+Redis+Mysql+布隆过滤器实现 短链转换
平时开发中,需要用到过滤器的地方有很多,比如单位转换、数字打点、文本格式化等,比如: Vue.filter('toThousandFilter', function (value) { if (!value) return '' value = value.toString() return ....
另外,可以对这些过滤器进行一些修改,以实现与AdGuard的更好兼容性。过滤元数据template.txt 过滤器编译器使用模板文件来准备最终的过滤器版本。 exclude.txt 正则表达式列表。 与这些排除条件匹配的规则将不包含...
要实现过滤器类,需要实现该接口中一个名为filter()的方法。 下面通过实例来演示如何使用Zend_Filter中定义的过滤器,该例演示如何实现字母转小写的功能。 代码: <?php require_once 'Zend/Filter/Stri
Brainstem gem提供了一个演示者库,用于处理将ActiveRecord对象转换为结构化JSON和一组API抽象,这些抽象使用户可以请求排序,过滤器和关联负载,从而实现更简单的实现,更少的请求和更小的响应。 为什么是脑干? ...
matlab代码影响模式过滤器和经验空过滤器 MIT许可证-所有源代码 版权(c)2020 Sherman Lo 用于模式过滤器和经验空过滤器的ImageJ插件。 模式滤波器是采用经验密度的模式的边缘保留平滑滤波器。 这可能在图像处理...
提供的功能: 1) 图像平滑(5 种过滤器) 2) 噪音添加(3 种噪音) 3) 图像整形4) 灰度转换5) 二维FFT 6) 图形用户界面
这是提出的Bloomier过滤器的Java实现 (第3节:最佳Bloomier过滤器)。 据我所知,这是唯一免费的在线实施。 它为不可变和可变结构包括单独的类。 在内部,kryo序列化库用于有效地将存储的值转换为字节数组,可以按...
自己做的一个自定义控件,里面主要是自定以弹出框,对edittext的回调处理和edittext输入时自动千分位分隔和金额限制