文档章节

过滤器和监听器

c
 chuiyuan
发布于 2014/06/21 11:07
字数 871
阅读 13
收藏 0
点赞 0
评论 0

一。为什么要过滤 器

   前面 的内容 中,我们知道 

request.setCharacterEncoding("gb2312");

这是将 request 内的数据编码设置成 gb2312 ,在以 post 方式请求时,如果 目标页面没有这句 , tomcat 服务器将会把中文参数 显示为乱码。

然而 一个大的工程中,如果 这样 会要写很多这样的内容 。

在请求被 处理前,有一个公共的模块,专门负责进行编码的转换,这样 对于编码工作就不用反复编写了。

这可以用过滤 器实现 。

二。编写 过滤 器

先写两个jsp 文件,一个接收输入 ,一个得到结果 。

query.jsp

<b>查询学生数据库</b>
    <form action="queryResult.jsp"  method ="post">
    请输入学生的帐号:<input type ="text"  name ="account">
    <input  type ="submit"  value="查询">
    </form>

queryResult.jsp

 查询的关键字为:<%=request.getParameter("account") %>

传统方法要在 queryResult中解决乱码问题,过滤器可以只要在 web.xml 文件中配置,能够对 JSP ,HTML ,Servlet 进行过滤 ,编写 一个过滤 器要两个步骤 。

(1)实现 Filter接口

(2)实现 三个方法

初始化方法:  

public void init(FilterConfig config);

消亡方法:

public void destroy();

过滤方法:过滤器过滤 时的动作

public void doFilter(ServletRequest request ,ServletResponse pesponse, FilterChain chain);

上面 的三个方法都 在实现 ,因为他们是定义 在Filter 接口中的。

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

第二名是将请求请求传递,如果 没有这句 ,过滤 器在收到请求处理后,不会传递给目标页面。

(3) 过滤 器的配置

要想让系统 能够 识别 ,还要在 web.xml 中进行配置。

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

其中,url-pattern 是配置过滤 器的映射,用于指定过滤 器折过滤模式。有三种:

a。过滤所有的 文件

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

b. 过滤 一个or 多个Servlet (JSP )文件

<filter-mapping>
  <filter-name>FilterName</filter-name>
  <url-pattern>/PATH1/ServletName1(JSPName1)</url-pattern>
 </filter-mapping>
 <filter-mapping>
  <filter-name>FilterName</filter-name>
  <url-pattern>/PATH2/ServletName2/(JSPName2)</url-pattern>
 </filter-mapping>

c. 过滤 一个或者 多个文件目录

<filter-mapping>
  <filter-name>FilterName</filter-name>
  <url-pattern>/PATH1/*</url-pattern>
 </filter-mapping>

注意,

 过滤 器的初始化是在服务器运行的时候自动进行的。 doFilter()是在每次提交 被 处理前被调用 的。

大项目中会用到很多过滤 器,但是如果每一个过滤 器如果都在服务器中实例 化,会有很大的开销,所以如果 不是核心的安全功能 ,我们放在客户端完成 。


三。过滤 器的其它应用

1. 检查 session

session查检有两个方面的意思 ,一是没有登录的用户不能访问受限的页面。二是已经登录的用户不能访问登录页面。

这里只要用一个 session检查就可以了,在访问任何页面前,检查session 中是否有 account 的信息。进行session 检查呢,可以 在过滤 器中完成 。

2. cookie检查

在访问页面前,过滤 器中读取Cookie的值 ,将cookie中的帐号的密码 ,用 DAO进行验证,如果 成功,直接 跳转到登录成功的页面。

3. 权限检查


四,监听 器

当用户登录,信息存入  session中时,要将登录时间保存在日志中,退出时,也是的,这就是一些 额外 的工作,将额外 的工作与业务逻辑分开,这就是servlet容器的监听器的作用。



© 著作权归作者所有

共有 人打赏支持
c
粉丝 9
博文 91
码字总数 40993
作品 0
海淀
Java程序员从笨鸟到菜鸟之(二十一)java过滤器和监听器详解

过滤器 1、Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求...

长平狐 ⋅ 2012/11/12 ⋅ 0

CAS之5.2x版本之Jira单点登录-yellowcong

将Cas和jira搞一起,他们都是一家公司的产品。将Jira和cas整合在一起,主要有一下几步骤:1、配置web.xml,需要注意的是过滤器和监听器的位置,是得放在指定的地方。2、配置seraph-config.xml...

yelllowcong ⋅ 04/13 ⋅ 0

《Genesis-3D游戏引擎系列教程-高级篇》1:后期效果

注:本系列进阶教程仅针对引擎编辑器:v1.2.2及以下版本 音频处理 素材资源 工程文件 声音是游戏中非常重要的组成部分,Genesis-3D提供了多样的声音特效处理方式,方便用户制作丰富多彩的声音...

Genesis-3D ⋅ 2014/01/24 ⋅ 0

Java面试题之JavaWeb高级

一、Filter和Listener Filter:从J2EE1.3开始,Servlet2.3规范中加入对Filter的支持。Filter就称之为过滤器,它是Servlet技术中最激动人心的技术WEB开发人员通过Filter技术可以对web服务器管理...

年轻诠释我们的梦想_705b ⋅ 06/02 ⋅ 0

servlet 拦截器、过滤器、监听器区别

过滤器,是在JavaWeb中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后在传入Servlet或者Struts2的,action进行业务逻辑,比如过滤掉非法URL(不是login.do的请...

小风89 ⋅ 2016/06/30 ⋅ 0

Servlet技术 - Servlet应用

转发与重定向 浏览器把请求发送给ServletA,ServletA把请求传递给ServletB,由ServletB进行继续处理,最后输出资源响应。 转发 请求转发 forward ServletA调用forward方法把请求转发给Servl...

抢小孩糖吃 ⋅ 2016/09/08 ⋅ 0

Spring Boot - Servlet、过滤器、监听器、拦截器

Spring Boot - Servlet、过滤器、监听器、拦截器 上一篇,我们讲解了spring boot(json,jsp,freemarker)配置及整合方法,不清楚的可以点击了解 Servlet的两种实现方式 通过@Bean手动注入 实现...

刘忠旭 ⋅ 2017/06/10 ⋅ 0

Tomcat源码深析之web.xml组件的处理

这篇文章主要是带着读者通过分析Tomcat的源码,深入了解Tomcat对web.xml配置的组件的的处理,文章内容主要包括Tomcat对上下文参数(contextParams),过滤器(Filters),应用监听器(listene...

Float_Luuu ⋅ 2016/01/01 ⋅ 0

JavaWeb17-HTML篇笔记(一)

1.1 上次课内容回顾: Listener : 监听器就是一个JavaBean用来监听其他Bean变化. 事件源:被监听的对象. 监听器:监听的对象. 事件源与监听器的绑定: 事件:事件源改变.通过事件对象获得事...

我是小谷粒 ⋅ 06/05 ⋅ 0

过滤器、监听器、拦截器的区别

1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客...

Java编程思想 ⋅ 2014/07/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

来自一个优秀Java工程师的简历

写在前面: 鉴于前几天的一份前端简历,虽然带着很多不看好的声音,但却帮助了很多正在求职路上的人,不管评论怎么说,我还是决定要贴出一份后端的简历。 XXX ID:357912485 目前正在找工作 ...

颖伙虫 ⋅ 14分钟前 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部