Excel不相邻列如何打印在一起-英雄云拓展知识分享
138
2023-10-25
【摘要】 本书摘自《Java+EE应用开发实践教程》一书中第1章,第4节,由涂祥著。
实验四 Servlet 过滤器和监听器
一、实验目的
1.理解并掌握 Servlet 过滤器和监听器的概念及工作原理。
2.掌握 Servlet过滤器和监听器的编程接口。
3.掌握 Servlet过滤器和监听器的两种部署方式。
4.掌握运用过滤器和监听器开发 Web 应用的方法。
二、基础知识
1.过滤器概念及工作原理。
Servlet 过滤器(Filter)是在 Java Servlet 规范2.3中定义的小型 Web 组件。主要用于 拦截请求和响应,并对请求和响应进行检查和修改。需要注意的是,Servlet 过滤器本身并不产生请求和响应对象,它只能提供过滤作用。 Filter 负责过滤的 Web 组件可以是 Servlet、JSP或者 HTML 文件,即动态或静态的 web 资源。
Filter总是在资源被调用之前截获请求,检查 ServletReqest,然后根据需要修改 Request头和 Request 数据;在资源被调用之后截获 ServletResponse,根据需要修改 Response头和 Response 数据。
具体建立一个过滤器涉及下列5个步骤。
(1)建立一个实现了Filter 接口的类。
(2)在doFilter方法中实现过滤行为。
(3)调用 FilterChain 对象的 doFilter方法。
(4)对相应的Servlet 或JSP 页面等注册过滤器。
2.监听器概念及工作原理。
Servlet 监听器(Listener)也是在Java Servlet 2.3 中定义的一个Java Web 组件,是一个 实现特定接口的Java应用程序。其作用是监听另一个Java 对象(包括: Servlet Context, Http Session、Servlet Request)的方法调用或属性改变。当被监听对象的方法被调用或属 性发现改变时监听器被触发执行。
使用监听器时,通常先创建实现监听器接口的类,然后绑定需要被监听的监听对象,当 被监听对象的相应事件发生时,事件监听机制自动触发之前绑定的监听器方法。
3.过滤器和监听器的部署方式。
同 Servlet的部署一样,过滤器和监听器的部署也有两种方式,即 web.xml 文件配置方 式和Servlet3.0支持的注解的方式。
(1)Filter的 web.xml 文件配置方式。
(2)Filter的注解方式。
@Web Filter(urlPatterns={"/*"}, async Supported=true,
dispatcher Types={DispatcherType. REQUEST},
initParams=@WebInitParam(name="paraml", value="valuel"))
(3)Listener 的 web.xml 配置方式。
(4)Listener的注解方式。
@WebListener
在被监听对象的类定义中完成注解方式部署。
三、实验步骤
1.新建一个 Web 工程,运用Filter实现设置用户请求统一字符编码。
(1)在Eclipse中,新建一个带有 web.xml 文件的 Web 工程 p04 1。在工程中新建2个 JSP 页面,request. jsp 和 get Param.jsp。在 request. jsp 页面通过 Form 表单提交请求给 get Param.jsp页面,在get Param.jsp页面显示获取的参数值。页面部分代码如下所示。
· · ·** ·
· · ·**
· · ·**
获取的参数:${param.paraml}
(2)运行工程,发现当传递中文参数时会出现乱码,如图4-1所示。
在实验三中曾使用 request. set Character Encoding("utf-8")方法解决过请求参数 的乱码问题,但该方法过于笨拙,需要对所有的 request请求调用设置字符集方法。本 实验中将使用过滤器来解决请求参数的中文乱码问题。
(3)在工程中新建 Filter 类。右击 src 目录,在弹出的快捷菜单中选择 New Filter,新建 Filter类,如图4-2所示。
点击 Finish 按钮,创建 Encoding Filter类。同 Servlet类的创建类似,Eclipse IDE 只是帮助实现了Filter接口,并继承其相应方法,提高了代码编写效率。所以,也可以通 过创建Java类的方式新建 Filter。Encoding Filter类的部分代码如下所示。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~