filter用法
来源:互联网 发布:福州淘宝运营培训班 编辑:程序博客网 时间:2024/06/05 23:39
如何实现一个过滤器呢?
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>
</filter>
<filter-mapping>
<filter-name>login</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- filter用法
- Filter用法
- filter用法
- filter用法。
- CSS FILTER:的用法
- java filter用法大全
- MIDIDecoder Filter的用法
- File Filter用法
- CSS filter:RevealTrans 用法
- filter用法详细介绍
- filter 的用法
- MATLAB filter 函数用法
- css中filter用法
- CSS filter:RevealTrans 用法
- Filter的用法总结
- yii的filter用法
- filter的基本用法
- jQuery -> filter用法
- PL SQL Developer中文乱码问题如何解决
- Bash 实例,第 2 部分-更多的 bash 基本编程
- 简单servlet
- ASCII字符代码
- Bash 实例,第 3 部分-探讨 ebuild 系统
- filter用法
- 马云收购YAHOO后给员工上的第一堂课
- 使用 Bash shell脚本进行功能测试
- 有用的链接与网址
- Yacc 与 Lex 快速入门
- ARRAY_SIZE
- javabean开发要求和规范
- Linux 技巧: Bash 测试和比较函数
- Linux 技巧: Bash 参数和参数扩展