第09章-Java Web开发基础—从Servlet到JSP(第2版)-王斐-清华大学出版社

  • 格式:pptx
  • 大小:707.80 KB
  • 文档页数:24

下载文档原格式

  / 24
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<filte> <filte-name>x</filte-name> <filte-class>x</filte-class> </filte> <filte-mapping> <filte-name>x</filte-name> <url-pattern>/x</url-pattern> </filte-mapping>
<filte-mapping>
<filte-name>x</filte-name>
<url-pattern>/x</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filte-mapping>
部署方式2
(使用Annotation)
@WebFilter( filterName = "x", urlPatterns = {"/x"} dispatcherTypes = { DispatcherType.FORWARD, DispatcherType.ERROR, DispatcherType.REQUEST, DispatcherType.INCLUDE }
)
9.3 在项目中使用一个过滤器 eg0901
新建—其他
新建过滤器
设置过滤器的包名
配置过滤器部署
配置过滤器映射 配置过滤器部署,设置过滤器映射后
index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html>
第9章 使用过滤器
学习目标
• 了解过滤器的基本原理 • 掌握使用过滤器解决乱码问题
9.1 过滤器概述
生活场景1——拦截请求
生活场景2——放行请求
• Java EE中的过滤器也是按照规则执行,一旦满足条件就自动触 发,它主要完成两个方面的任务:
1. 在请求被送到目标之前检查请求对象,根据需要修改请求头和 请求内容
部署方式2
(使用Annotation)
@WebServlet( name ="NewServlet", urlPatterns ={"/NewServlet"} )
Filter 实现了Filter接口 初始化(调用init方法)
对外提供服务 (调用doFilter方法)
销毁对象(调用destory方法)
2. 在响应被送到目标之前检查响应对象,根据需要修改响应头和 响应内容
过滤器的基本原理图
9.2 过滤器的实现及部署
Servlet与Filter的比较
Servlet
继承/实现接口 继承自HttpServlet类
初始化(调用init方法)
生命 周期
对外提供服务 (调用Service方法,由Service根据请求类型调用相应的doXxx方法,往 往调用doGet/doPost)
请求的方式通过<dispatcher>来描述。默认是REQUEST,意即没有特别说明<dispatcher>,都按REQUEST方式处理。
<filte>
部署方式1 (使用配置文件)
<filte-name>x</filte-name>
<filte-class>x</filte-class>
</filte>
销毁对象(调用destory方法)
部署方式1 (使用配置文件)
<servlet> <servlet-name>x</servlet-name> <servlet-class>x</servlet-class>
</servlet> <servlet-mapping> <servlet-name>x</servlet-name> <url-pattern>/x</url-pattern> </servlet-mapping>
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title>
</head> <body>
<% System.out.println("index.jsp");
%> </body> </html>
过滤器中的方法和属性
NewFilter.java的doFilter方法(片段)
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)
throws IOException, ServletException { //代码略 doBeforeProcessing(request, response); //代码略 try { System.out.println("在NewFilter的chain.doFilter(request, response);语句前"); chain.doFilter(request, response); System.out.println("在NewFilter的chain.doFilter(request, response);语句后"); } catch (Throwable t) {
通过过滤器的逻辑名<filter-name>,以及该逻辑名对应的实际的类<filter-class>; 通过过滤器的逻辑名可以将<url-pattern>和实际的过滤器类<filter-class>联系起来。
3. 第3个问题就是对资源的请求方式:对这个资源或者这些资源的请求时直接发送的请求(REQUEST) 呢?还是转发器转发(FORWARD)过来的请求呢?还是转发器转发(INCLUDE)过来的请求呢? 还是通过声明式异常处理机制调用(ERROR),发送来的请求呢?
@WebFra Baidu bibliotekilter( filterName ="EncodingFilter", urlPatterns ={"/*"} )
过滤器的部署的3个小问题
1. 第1个问题就是:如何去描述某个资源?
通常都是<url-pattern>,任何一个资源都可以抽象成一个<url-pattern>。
2. 第2个问题就是:如何去描述某个过滤器?

相关主题