Java EE 系统开发-过滤器

合集下载

百一测评——《Web应用开发》选择题—JavaEE基础

百一测评——《Web应用开发》选择题—JavaEE基础

试卷名称:《Web应用开发》选择题(含参考答案)—JavaEE基础试卷描述:Web开发笔试题目、Java基础笔试、微信考试、在线考试试卷链接:试卷限时:50分一.多选题每题分值:2分是否题目乱序:是是否选项乱序:是是否可回溯:是难度:中1.[多选] 在Session范围中以名称"bean"放置了一个JavaBean属性,JavaBean上有个getMessage()方法,请问以下哪个方式呼叫getMessage()以取得讯息并显示出来A.<jsp:getProperty name="bean" property="message">B.${ ().getMessage() %>D.${}答案:BD解析:<jsp:getProperty>前必须先使用<jsp:useBean>并指定scope为request,否则<jsp:getProperty>只会在page范围中寻找属性。

2.[多选] 在Web应用程序中有以下的程序代码,执行后转发至某个JSP网页:List names = new ArrayList();("caterpillar");("names", names);以下哪个选项可以正确地使用EL取得List中的值A.${}B.${names[0]}C.${names.[0]}D.${names["0"]}答案:BD解析:在[]指定索引值时可以用双引号,所以D也是正确的。

3.[多选] 哪些JSTL标签可用来进行Java程序中if、的功能A.<c:if>B.<c:else>C.<c:when>D.<c:otherwise>答案:ACD4.[多选] 关于tag指示元素的body-content属性,以下说明何者正确A.可设定的值有JSP、scriptless、empty与tagdependentB.默认值是scriptlessC.设定为tagdependent时,本体内容将不作任何处理直接传入Tag File中D.如果本体中要执行Scriptlet,则要设定为JSP答案:BC解析:可设定的值只有scriptless、empty与tagdependent,预设是scriptless。

java 中filter过滤器使用方法

java 中filter过滤器使用方法

Java 中filter 过滤器的使用:Servlets Filter 是Servlet 2.3 规范中新增加的,它是截取用户从客户端提交的请求,在还没有到达需要访问的资源时运行的一个类。

它操纵来自客户端的请求,在资源还没有初发送到客户端前截取响应,并处理这些还没有发送到客户端的响应。

Filters 有许多的应用场合。

Servlet 2.3 规范建议如下的地方可以应用Filter:authentication filterslogging and auditing filtersimage conversion filtersdata compression filtersencryption filterstokenizing filtersfilters that trigger resource access eventsXSL/T filters that transform XML contentMIME-type chain filters如何实现一个过滤器呢?1.所在的类实现Filter接口public interface Filterpublic void init(FilterConfig filterConfig)throws ServletException过滤器初始化是在容器启动时自动初始化public void doFilter(ServletRequest request,ServletResponse response,FilterChainchain)throws IOException,ServletExcepton在标准Servlet中的doGet或doPost 方法中,传递参数为:HttpServletRequest、HttpServletResponse过滤器销毁public void destroy()例:如下为过滤器基本的主要结构import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class MyFirstFilter implements Filter{private String encoding;public void destroy(){System.out.println("过滤器销毁");}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out .println("过滤doFilter");chain.doFilter(request, response);}public void init(FilterConfig filterConfig) throws ServletException {System.out .println("过滤器初始化"); encoding = filterConfig.getInitParameter("encoding"}对应配置文件:<filter ><filter-name >encodingFilter </filter-name ><filter-class >com.shen.test.filter. MyFirstFilter </filter-class ><init-param ><param-name >encoding </param-name ><param-value >Shift_JIS </param-value ></init-param ></filter ><filter-mapping ><filter-name >encodingFilter </filter-name ><servlet-name >action </servlet-name ></filter-mapping ><servlet ><init-param ><<param-value >/WEB-INF/config/struts-config.xml,/WEB-INF/config/st ruts-config-contents.xml </param-value ></init-param ><init-param><param-name>debug</param-name><param-value>2</param-value></init-param><init-param><param-name>detail</param-name><param-value>2</param-value></init-param><load-on-startup>1</load-on-startup></servlet>如果过滤器要将内容传递到目的地,则需要FilterChain,将请求继续向下转发过滤器也会执行两次:FilterChain之前执行一次,之后再执行一次2:对某些文字进行过滤关键方法如下所示:public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {System.out.println("过滤doFilter");//从页面获取内容String content=request.getParameter("content");String filterchar ="色";if(content != null && !"".equals(content)){//如果indexOf返回-1则表示没有查到所要的内容if(-1 == content.indexOf(filterchar)){chain.doFilter(request, response);}else{System.out.println("有非法文字");//可以继续做处理//如果需要的话,此处依然可以使用RequestDispatcher进行跳转}}}3:设置统一编码/*** 对内容进行统一的编码*/request.setCharacterEncoding("GBK");response.setCharacterEncoding("GBK");4:登录验证:/*** 登陆验证*/public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {/*** 登陆验证*///Session属于http范畴,把以ServletRequest对象需要先转换成HttpServletRequest对象HttpServletRequest hrequest =(HttpServletRequest) request;HttpSession session =hrequest.getSession();//request.getScheme();request.getServerName();request.getServerPo rt();//如果session不为空,则可以浏览其它页面if(null != session.getAttribute("username")){chain.doFilter(request, response);}else{//通过requestDispatcher跳转到登陆面request.getRequestDispatcher("login.jsp").forward(request,respons e);}}第二部分:javax.servlet.Filter详细介绍:过滤器(Filter)位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求和响应。

注解标注过滤器

注解标注过滤器

注解标注过滤器Servlet3.0提供@WebFilter注解将一个实现了javax.servlet.Filter接口的类定义为过滤器,这样我们在web应用中使用过滤器时,也不再需要在web.xml文件中配置过滤器的相关描述信息了。

下面我们来创建一个过滤器,体验一下使用@WebFilter注解标注过滤器,如下所示:过滤器的代码如下:1package me.gacl.web.filter;2import java.io.IOException;3import javax.servlet.Filter;4import javax.servlet.FilterChain;5import javax.servlet.FilterConfig;6import javax.servlet.ServletException;7import javax.servlet.ServletRequest;8import javax.servlet.ServletResponse;9import javax.servlet.annotation.WebFilter;1011/**12* 使用注解标注过滤器13* @WebFilter将一个实现了javax.servlet.Filte接口的类定义为过滤器14* 属性filterName声明过滤器的名称,可选15* 属性urlPatterns指定要过滤的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性) 16*/17 @WebFilter(filterName="Servlet3Filter",urlPatterns="/*")18public class Servlet3Filter implements Filter {1920@Override21public void destroy() {22System.out.println("过滤器销毁");23}2425@Override26public void doFilter(ServletRequest request, ServletResponse response,27FilterChain chain) throws IOException, ServletException {28System.out.println("执行过滤操作");29chain.doFilter(request, response);30}3132@Override33public void init(FilterConfig config) throws ServletException {34System.out.println("过滤器初始化");35}36 }过滤器中使用了@WebFilter(filterName="Servlet3Filter",urlPatterns="/*")进行配置,Filter的名字是Servlet3Filter,表示urlPatterns="/*"该Filter拦截所有的请求。

JavaEE复习题选择题(有答案)

JavaEE复习题选择题(有答案)

JavaEE复习题选择题(有答案)第一章1、以下描述哪些方面与JAVAEE无关:(B)A、事务处理第三章1、Servlet程序的入口点是:(A)A、init()B、WEB-INF/lib/jarB、main()C、ervice()D、doGet()B、AppletC、资源管理D、分布式HelloWorld点击超级链接后下列哪一个ervlet方法将被调用:(A)A、doGetB、doPotC、GetD、Pot6、关于FORM表单提交的HTTP的GET方法不正确的是(C)A、不能向服务器提交二进制数据C、不能向服务器提交多值参数B、不能向服务器提交无限长度的数据D、参数附在URL后面D、web.某ml文3、在WEB应用程序的目录结构中,在WEB-INF文件夹中的lib目录是放(C)文件的。

B、.cla文件C、.jar文件7、ervlet的生命周期又一系列事件组成,把这些事件按照先后顺序排序,以下正确的是(B)A、加载类,实例化,请求处理,初始化,销毁B、加载类,实例化,初始化,请求处理,销毁C、实例化,加载类,初始化,请求处理,销毁D、加载类,初始化,实例化,请求处理,销毁8、在JAVAEE中,给定某Servlet的代码如下,编译运行该文件,以下陈述正确的是(B)。

PublicclaServlet1e某tendHttpServlet{}A、编译该文件时会提示缺少doGet()或者dopot()方法,编译不能够成功通过Publicvoidinit()throwServletE某ception{}Publicvoidervice(HttpServletRequetrequet,HttpServletReponere pone)}ThrowServletE某ception,IOE某ception{PrintWriterout=repone.getWriter();Out.println(“hello!”);B、编译后,把Servlet1.cla放在正确位置,运行该Servlet,在浏览器中会看到输出文字:hello!C、编译后,把Servlet1.cla放在正确位置,运行该Servlet,在浏览器中看不到任何输出的文字D、编译后,把Servlet1.cla放在正确位置,运行该Servlet,在浏览器中会看到运行期错误信息9、某web应用的上下文路径是root,配置文件web.某ml中有如下片段:procelt.ProceServletproce/proc以下说法正确的是(AB)。

java-过滤器Filter_多个Filter的执行顺序

java-过滤器Filter_多个Filter的执行顺序

java-过滤器Filter_多个Filter的执⾏顺序【Filter链】*在⼀个web应⽤中,可以开发编写多个Filter,这些Filter组合起来称为⼀个Filter链。

*web服务器根据Filter在web.xml中的注册顺序,决定先调⽤哪个Filter,当第⼀个Filter的doFilter⽅法被调⽤时,web服务器会创建⼀个代表Filter链的FilterChain对象传递给该⽅法,在doFilter⽅法中,开发⼈员如果调⽤了FilterChain对象的doFilter⽅法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调⽤第⼆个filter,如果没有,则调⽤⽬标资源。

【⼯程截图】设计了两个Filter和⼀个Servlet,访问Servlet时,查看Filter的执⾏顺序。

【web.xml】<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" <display-name>FilterDemo01</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><!-- 过滤顺序:谁的写在上⾯,谁先被过滤 --><filter><filter-name>FilterTest01</filter-name><filter-class>com.Higgin.web.filter.FilterTest01</filter-class></filter><filter-mapping><filter-name>FilterTest01</filter-name><url-pattern>/*</url-pattern> <!-- 过滤所有 --></filter-mapping><filter><filter-name>FilterTest02</filter-name><filter-class>com.Higgin.web.filter.FilterTest02</filter-class></filter><filter-mapping><filter-name>FilterTest02</filter-name><url-pattern>/*</url-pattern> <!-- 过滤所有 --></filter-mapping></web-app>【FilterTest01.java】package com.Higgin.web.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class FilterTest01 implements Filter{@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("FilterTest01 执⾏前---");chain.doFilter(request, response);//让⽬标资源执⾏,即:放⾏System.out.println("FilterTest01 执⾏后---");}@Overridepublic void init(FilterConfig arg0) throws ServletException {}@Overridepublic void destroy() {}}【FilterTest02.java】package com.Higgin.web.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class FilterTest02 implements Filter{@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("FilterTest02 执⾏前---");chain.doFilter(request, response); //放⾏System.out.println("FilterTest02 执⾏后---");}@Overridepublic void init(FilterConfig arg0) throws ServletException {}@Overridepublic void destroy() {}}【ServletTest01.java】package com.Higgin.web.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class ServletTest01*/@WebServlet("/ServletTest01")public class ServletTest01 extends HttpServlet {private static final long serialVersionUID = 1L;public ServletTest01() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //response.getWriter().write("中国加油!China Come on!");System.out.println("执⾏ServletTest01---");}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response);}}【运⾏结果】在浏览器中输⼊:http://localhost:8080/FilterDemo01/ServletTest01查看控制台输出结果⾃⼰可以尝试分别注释FilterTest01和FilterTest02中的chain.doFilter⽅法,⽤Junit查看具体的执⾏过程。

javaEE试题(包含html,css,jsp,servlet,ajax等)

javaEE试题(包含html,css,jsp,servlet,ajax等)

Java 第二阶段(WEB)测试题(卷I)姓名________________注意:考试时间为150分钟,试卷总分100分,60分为合格,80分为良好,90分以上为优秀。

闭卷考试,请遵守考场纪律,考试严禁作弊,作弊者立即停止考试,成绩按0分处理。

卷I考试时间为60分钟,到时间收卷,延迟交卷按作弊处理。

答题卡:B.类选择器>ID选择器>标签选择器>行内式(inline)C.行内式(inline)>ID选择器>类选择器>标签选择器D.行内式(inline)>类选择器>ID选择器>标签选择器5)对于转发与重定向的描述错误的语句是( )A.重定向是在客户端发生作用,通过请求新的地址实现页面转向B.使用转发时由于是服务器内部控制权的转移,因而地址栏中的URL没有变化C.使用重定向时可以在地址栏中看到转向后的URLD.转发与重定向都可以实现在页面跳转,因而没有区别6)在js中1===”1”的值为()A.true B.false C.null D.undefined7)数据库多表查询语句中,以下哪些是正确的?(多选)( )A.left joinB.center joinC.right joinD.up joinE.down join8)以下scoket端口号正确的有哪些?(多选)( )A.11111B.12345C.65533D.65535E.666379)HTML中td跟th有什么不同?( )A.字体不同B.字号不同C.对齐方式不同D.颜色不同10)CSS中用来设置字体颜色的属性是哪个?( )A.font-colorB.font-familyC.font-sizeD.color11) 在2012年12月31日执行以下代码后,变量a的结果是多少?()var d=new Date();d.setYear(2000);d.setMonth(1);var a=d.getFullYear()+”-”+d.getMonth()+”-”+d.getDate();A.2000-1-31B. 2000-2-2C. 2000-2-29D.2000-3-212)编写一个Filter需要?( )A.继承Filter类B.实现Filter接口C.继承HttpFilter类D.实现HttpFilter接口13)自定义标签的作用是?()A.编写和使用方便B.规定是这样的,如果不这么写,可能显示不专业。

过滤器实验报告范文

过滤器实验报告范文【实验报告】过滤器的应用与实验一、实验目的通过实践掌握过滤器的概念、工作原理和应用,了解过滤器在Web开发中的重要性和作用,掌握过滤器的使用方法。

二、实验原理1.过滤器的概念过滤器是Java Web开发中一种重要的组件,用于在请求到达目标资源之前或者响应返回给客户端之前对请求和响应进行预处理或者后处理。

过滤器可以拦截HTTP请求和响应,对其进行处理和转换,实现一些公共的功能。

2.过滤器的工作原理当客户端发起一个请求时,请求将经过过滤器链进行处理。

过滤器链由多个过滤器组成,每个过滤器按照顺序对请求进行处理,并可以决定是否将请求传递给下一个过滤器或者目标资源。

过滤器链的最后一个过滤器负责将请求传递给目标资源进行处理,再将处理结果返回给客户端。

3.过滤器的应用过滤器广泛应用于Web开发中,可以用于以下方面:-请求过滤:可以对请求进行验证、安全检查等操作,对非法请求进行拦截和处理。

-响应过滤:可以对响应进行处理,如添加自定义的HTTP头、页面字符编码等操作。

- 资源过滤:可以对一些特定资源进行处理和过滤,如压缩HTML、CSS、JavaScript等静态文件,提高网页加载速度。

三、实验内容1.过滤器的编写根据实验要求,编写一个自定义的过滤器,实现对请求和响应的处理功能。

2.过滤器的配置在web.xml文件中配置过滤器,指定过滤器的名称、URL模式和顺序。

3.过滤器的测试启动Web服务器,通过浏览器发起请求,观察过滤器的效果。

四、实验步骤1. 创建一个Java类,实现javax.servlet.Filter接口,重写doFilter方法,编写过滤器的业务逻辑。

2. 在web.xml文件中添加过滤器配置信息,包括过滤器名称、URL模式、过滤器类名等。

3. 部署并启动Web服务器。

4. 使用浏览器访问Web应用程序中的资源,观察过滤器的效果。

五、实验结果与分析经过实验测试,自定义的过滤器成功拦截到所有请求,并在请求到达目标资源之前对请求进行了处理。

dofilter过滤器的原理

dofilter过滤器的原理dofilter过滤器是指在JavaEE中Servlet规范中的一种过滤器,它可以拦截客户端请求,修改请求和响应,或者执行一些特定的任务。

它的原理主要是基于责任链模式和回调函数机制。

首先,dofilter过滤器是通过实现javax.servlet.Filter接口来实现的,该接口定义了三个方法,init、doFilter和destroy。

init方法在过滤器被初始化时调用,可以用来进行一些初始化操作;doFilter方法是过滤器的核心,它接收客户端请求和响应对象,并可以在请求到达Servlet之前对请求进行预处理,也可以在响应返回客户端之前对响应进行后处理;destroy方法在过滤器被销毁时调用,可以用来进行一些资源的释放操作。

其次,dofilter过滤器的原理是基于责任链模式。

当一个请求到达Servlet容器时,容器会按照过滤器在web.xml文件中的配置顺序依次调用各个过滤器的doFilter方法,然后再调用Servlet的service方法。

这样就形成了一个责任链,每个过滤器都可以对请求进行处理,然后将请求传递给下一个过滤器,或者传递给Servlet。

另外,dofilter过滤器的原理还涉及到回调函数机制。

当容器调用过滤器的doFilter方法时,实际上是在调用过滤器中的回调函数,这些回调函数可以在特定的时机对请求和响应进行处理,比如在请求到达时进行身份验证、日志记录等操作,或者在响应返回时进行数据加工、页面重定向等操作。

总的来说,dofilter过滤器的原理是基于责任链模式和回调函数机制,它可以对客户端请求和响应进行拦截和处理,实现一些特定的功能,比如日志记录、身份验证、字符编码转换等。

希望这个回答能够全面地解释dofilter过滤器的原理。

《轻量级Java EE应用开发》课程标准

《轻量级Java EE应用开发》课程标准一、课程定位(概述)该课程是软件技术专业(软件与设计开发专业方向)的一门专业核心课程,是培养学生成为一名java 软件设计师的一门重要课程。

通过对市场的调研和本专业毕业生的交流,并对企业级软件开发相关工作岗位进行深入的剖析,掌握相关工作岗位的典型工作任务和核心技能,确定本课程是培养学生成为软件企业高技能人才所必备的职业能力的核心课程。

目标是让学生掌握主流的框架技术,能够运用Struts2、Hibernate、Spring框架进行项目的开发,重点培养学生能够开发基于Java EE框架的应用系统的职业能力。

其前导课程为《Java SE》、《网页制作基础》、《CSS+DIV》和《数据库SQL》。

二、设计思路(一)课程设置的依据该课程总体设计思路是以岗位面向为依据、以就业为导向、以能力培养为目标、以项目引领式教学为手段,依据当前企业在软件开发过程中应用到的常用三大框架技术(Struts2、Hibernate、Spring)进行教学内容的规划,主要采用项目驱动的教学方法对教学活动进行全面实施,通过项目式教学让学生更好地掌握常用三大框架技术(Struts2、Hibernate、Spring)相关知识及应用。

以完整的项目开发案例作为每个框架技术学习的对象,通过一个项目由浅到深、由模块到整体结构的逐步深入,组织学生完成这些相应的项目内容来学习相关的知识、培养相应的职业能力、掌握常用三大框架技术(Struts2、Hibernate、Spring)的应用能力和企业级软件开发的能力。

(二)课程内容确定依据该门课程的总学时为108。

以基于工作过程的课程开发理念为指导,以职业能力培养和职业素养养成为重点,根据技术领域和职业岗位(群)的任职要求,融合软件设计师职业资格标准,以三大框架在企业级软件开发的整个流程作为典型工作过程,对课程内容进行序化。

通过教学模式设计、教学方法设计、教学手段的灵活运用、教学目标的开放性设计、教学考核方法改革等,保证了学生专业能力、方法能力和社会能力的全面培养。

JavaEE练习答案

一、选择题1.下列关于JavaEE叙述错误的是(D )。

A)JavaEE是一个标准中间件体系结构B)JavaEE是企业分布式应用开发标准C)JavaEE的编程思想是:组件-容器D)JavaEE是一门编程语言2.JavaEE技术框架包括(D)。

A)组件技术B)服务技术C)通信技术D)以上三种3.JavaEE Web组件包括( A )。

A) Servlet和JSP B) Servlet和JDBC C) JSP和JNDI D) E和JDBC4.JavaEE提供的组件主要包括( C)。

A) 客户端组件、Web组件和JDBC组件B) Web组件、E组件和JDBC组件C) 客户端组件、Web组件和E组件D) Web组件、E组件和JNDI组件5.下列组件属于客户端组件的是( A )。

A) Applet B) E C) JSP D) Servlet6.以下关于JavaEE体系架构的优点正确的是( C)。

A) 独立于硬件配置但需要操作系统支持B) 坚持面向过程的设计原则C) 兼具灵活性、可移植性和互操作性D) 能进行企业信息系统集成,但并不轻松7.( C )是用于构建发布在Java平台上的组件和应用程序的开发环境,是一切Java应用程序的基础。

A)NetBeans B)uilder C)JDK D)JSP8.JDK是用于构建发布在Java平台上的组件和应用程序的( A )环境,是一切Java应用程序的基础。

A) 开发B) 运行C) 测试D) 部署9.JavaEE编程属于服务器端应用的编程,因此JavaEE程序的运行需要一个( B )应用服务器的支持。

A)客户B)中间件C)商业D)数据库10.JavaEE编程属于( B )应用的编程,因此JavaEE程序的运行需要一个中间件应用服务器的支持。

A) 客户端B) 服务器端C) JSP D) Servlet11.目前JavaEE应用开发环境分为两大类,基于命令行的开发环境和( A )开发环境。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

示例1: 用过滤器来解决中文乱码问题(限post方 式请求)(代码略) 示例2: 用过滤器来完成统一身份验证(代零对或多对 值为: REQUEST|INCLUDE|FORWARD|ERROR 未设定时默认值为REQUEST 当用户请求的URL和 指定的URL匹配时将 触发过滤器工作 初始化参数, 可以是零对或 多对
过滤器类完整的名字包括包名
初始化参数的获取,在init方法中 请求方法:
值 = FilterConfig. getInitParameter(名)
----过滤器---
主讲:唐琳
AOP的定义:
Aspect Oriented Programming的缩写,意思是面 向方面编程。是消除代码重复的一种方法。
AOP与OOP:
AOP实际是GoF设计模式的延续,设计模式孜孜 不倦追求的是调用者和被调用者之间的解耦, AOP可以说也是这种目标的一种实现。OOP(面 向对象)是解决静态的模型进行的设计. 而AOP则是对动态的,执行当中的动作进行的编 程.
▪ 这个方法完成实际的过滤操作。当用户请求访问与过 滤器关联的URL时,Servlet容器将先调用过滤器的 doFilter方法。FilterChain参数用户访问后继过滤器。
destroy():
▪ Servlet容器在销毁过滤器实例前调用该方法,在这个 方法中可以释放Servlet过滤器占用的资源。(大多数 情况用不到)
定义了3个生命周期方法:
init(FilterConfig):
▪ 这是Servlet过滤器的初始化方法,Servlet容器创建 Servlet过滤器实例后将调用这个方法。这个方法中可 以读取web.xml文件中的Servlet过滤器。
doFilter(ServletRequest,ServletReponse,Filter Chain):
REQUEST:当用户直接对网页做出请求的动作时,会通过此Filter REQUEST Filter 。 FORWARD:当用户的请求是通过RequestDispatcher的forward()方 法时,会通过此Filter。 INCLUDE:当用户的请求是通过RequestDispatcher的include()方法时 ,会通过此Filter。 ERROR:当用户的请求是通过错误机制处理的时候,会通过此 Filter。错误机制处理
web.xml中可以配置多个过滤器,过滤器链的执行顺序跟 web.xml配置的顺序相同。称之为串联过滤器
Web客 户 response
request Code1 Code1 Servlet 的 service 方法 Code2
Chain.doFilter()
Code2
Chain.doFilter()
过滤器的作用: 过滤器的作用:
统一的认证处理 对用户的请求作检查,作更精确的记录 监视或对用户所传递的参数作前置处理 。。。。。。
package demo1; import java.io.IOException; import javax.servlet.*; public class FirstFilter implements Filter{ public void destroy() { } public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { System.out.println("Begin filter....."); arg2.doFilter(arg0, arg1); System.out.println("End filter....."); } public void init(FilterConfig arg0) throws ServletException { } }
<filter> <filter-name>Filter的名字 的名字</filter-name> 的名字 <filter-class>Filter的类名称</filter-class> <init-param> <description>描述信息可以省略或放在此位置</description> <param-name>参数名称<param-name> <param-value>参数的值</param-value> </init-param> </filter> <filter-mapping> <filter-name> Filter的名字 的名字</filter-name> 的名字 <url-pattern>URL</url-pattern> <dispatcher></dispatcher> <filter-mapping>
<filter> <filter-name>first</filter-name> <filter-class>demo1.FirstFilter</filter-class> </filter> <filter-mapping> <filter-name>first</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
相关文档
最新文档