过滤器(Filter)

2018-11-29  本文已影响0人  Jaypc

1.

Java Web的三大组件( 1)都需要交给web服务器运行  2)在web.xml文件中配置  )

1. Servlet:  javax.servlet.Servlet 通过HTTP协议接收客户端的请求,并且做出响应的一个Java应用程序。

2. Filter过滤器:javax.servlet.Filter 是一个接口,过滤请求,实现请求的拦截或者放行,并且添加新的功能。

3. Listener 监听器:  javax.servlet.XxxListener,用来监听Web容器中各种域的事件

2.1

1、场景1: 用户表单提交参数,使用POST方法提交,编写Servlet,接收参数: request.getParameter() /getParameterValues()  如果在客户端提交汉字而不做任何处理,就出现中文乱码的问题。

解决编码问题: request.setCharacterEncoding("utf-8");

Ø问题:如果在项目中的每一个Servlet都加上request.setCharacterEncoding("utf-8");

代码重复,而且后期维护也不方便。能不能把这部分公共代码抽取处理,放在一个地方执行?

2、场景2: 登录 -> 输入信息 -> 登录成功  -> 看到用户主页(欢迎xxx回来。。。)

用于验证用户是否登录成功代码:

    HttpSession session = request.getSession()

    Object obj = session.getAttribute("loginInfo");

    if(obj==null){

//没有登录标记,代表没有登录

    }else{

///已经登录了,继续访问此功能

    }

如果用户不登录,直接访问用户主页,跳转到登录页面

在其他需要登录才能访问的页面中,同样也需要加上验证用户是否登录成功代码。

Ø问题: 能不能把这部分公共验证用户是否登录成功代码抽取处理,在一个地方执行?

3. 结论:

以上两种场景出现的问题,可以使用过滤器(Filter)解决!

2.2 过滤器的作用:

1. 作用:

通过Filter技术,对Web服务器管理的所有Web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,并且添加功能,从而实现一些“共同”的功能。

2. 例如:

1) 实现URL级别的权限访问控制

2) 过滤敏感词汇

3) 自动登录

4) 压缩响应信息等一些功能。

2.3 过滤器编写步骤:

特点:过滤器不是用户主动调用的,而是根据规则自己执行

1. 编写一个java类,实现Filter接口,并实现其中的所有方法

2. 在web.xml文件中配置Filter

    <filter>

<filter-name>HelloFilter</filter-name>

<filter-class>org.newboy.filter.HelloFilter</filter-class>

   </filter>

<filter-mapping>

 <filter-name>HelloFilter</filter-name>

<url-pattern>/*</url-pattern>

 </filter-mapping>

3. 把Filter部署到tomcat服务器运行

4. 示例:

创建一个过滤器HelloFilter,在运行HelloServlet前和后分别输出一句话,在HelloServlet中也输出一句话,观察控制台的运行效果。

1) 过滤器类:

上一篇 下一篇

猜你喜欢

热点阅读