实验五、过滤器与监听器
过滤器与监听器
第10章过滤器和监听器主要内容✓过滤器✓监听器1.过滤器从过滤器这个名字上可以得知就是在源数据和目标数据之间起到过滤作用的中间组件。
例如家里用的纯净水过滤器,将自来水过滤为纯净水。
在JSP的Web应用程序中,过滤器是一种在服务端运行的Web组件程序,它可以截取客户端给服务器发的请求,也可以截取服务器给客户端的响应。
图1 过滤器在Web程序中的位置当Web容器获得一个对资源的请求时,Web容器判断是否存在过滤器和这个资源关联。
如果有存在关联就把请求交给过滤器去处理,在过滤器中可以对请求的内容做出改变,然后再将请求转交给被请求的资源。
当被请求的资源做出响应时,Web容器同样会将响应先转发给过滤器,在过滤器中可以对响应做出处理然后再将响应发送给客户端。
在这整个过程中客户端和目标资源是不知道过滤器的存在的。
在一个Web应用程序中可以配置多个过滤器,从而形成过滤器链。
在请求资源时,过滤器链中的过滤器依次对请求作出处理。
在接受到响应时再按照相反的顺序对响应作出处理。
图2 过滤器链需要注意的是在过滤器中不一定必须将请求发送给被请求资源,也可以直接给客户端做出响应。
开发一个过滤器必须实现javax.servlet.Filter接口:代码演示:FristFilter.javapublic class FirstFilter implements Filter {public void init(FilterConfig arg0) throws ServletException { ①}public void destroy() { ②}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException { ③}}代码分析:①由Web容器来调用init方法完成过滤器的初始化工作。
30-《过滤器与监听器》
过滤器示例
页面打印页面响应时间和IP
示例代码请见:教学案例 示例代码请见:教学案例\Fileter
过滤器API
java.servlet.Filter接口 java.servlet.FilterConfig接口 java.servlet.FilterChain接口
过滤器API
java.servlet.ServletRequestWrapper类 java.servlet.ServletResponseWrapper类 java.servlet.http.ServletRequestWrapper 类 java.servlet.http.ServletResponseWrappe r类
中文处理
String(String[] bytes,String charset) 配置web服务器环境 Request.setCharacterEncoding() response. setCharacterEncoding()
监听器
监听器的目的是用来监听客户端 Servlet处理动作
示例代码请见:教学案例 示例代码请见:教学案例\ Listenter
作业布置与要求
使用过滤器完成对表单提交数据的字符转码
下次课内容
1 3 2 3 理解业务和功能的区别 理解接口、抽象类的使用 理解三层架构的原理
Filter接口
开发过滤器必须实现Filter接口。 接口方法void init(FilterConfig filterConfig)
初始化过滤器,FilterConfig对象可以得到 ServletContext对象,以及在部署描述符中 配置的过滤器参数。
Filter接口
开发过滤器必须实现Filter接口。 接口方法void doFilter(ServletRequest
实验五、过滤器与监听器
实验五:过滤器与监听器一、实验目的1.掌握过滤器的创建与配置方法;2.掌握监听器的创建与配置方法;二、实验内容2.1 创建Web项目1. 打开MyEclipse,创建一个Web Project,命名为ServletTest。
2.1 SecurityFilter详细过程见securityFilter.rmvb1.过滤器SecurityFilter的代码如下:package filters;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class SecurityFilter implements Filter {private FilterConfig filterConfig;public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request;// 获得用户输入的密码String pwdInput = httpRequest.getParameter("password");// 获得filter配置参数中的rightpass的值String rightPwd = filterConfig.getInitParameter("rightpass");if (!rightPwd.equals(pwdInput)) {PrintWriter out = response.getWriter();out.println("<h3>Wrong password! Please try again.</h3>");out.flush();return;}filterChain.doFilter(request, response);}public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;}}2.LoginServlet的主要代码如下:package servlets;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginServlet extends HttpServlet {/*** Constructor of the object.*/public LoginServlet() {super();}/*** Destruction of the servlet. <br>*/public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();HttpSession session = request.getSession();session.setAttribute("username", request.getParameter("username"));out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.println("<h3>Welcome, " + request.getParameter("username") + ", you are logged in.</h3>");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.print(" This is ");out.print(this.getClass());out.println(", using the POST method");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}/*** Initialization of the servlet. <br>** @throws ServletException if an error occurs*/public void init() throws ServletException {// Put your code here}}3.新建login.jsp,用于进行登录测试,代码如下:<%@page language="java"import="java.util.*"pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>登录页面</title></head><body><p>This example shows you how the security filter is used to protect the LoginServlet. Pleaseenter the password and click the submit button to see results(correct password is "hello"):</p><form action="servlet/LoginServlet"method="get"><input type="text"name="username"/> User Name<br/><input type="password"name="password"/> Password<br/><input type="submit"value="Login"/></form></body></html>4.测试运行:打开http://localhost:8080/ServletTest/login.jsp,输入正确的用户名与密码,查看网页结果回到login页面,输入错误的密码,再次查看网页结果。
Web应用开发 第6章 过滤器与监听器
01
6.1 Servlet 过滤器 6.1.4 Filter 配置
(2)如果在
web.xml 配置,
则其代码如下:
01
6.1 Servlet 过滤器 6.1.5 Filter 应用
(1)日志 Filter
“日志Filter”示例实现功能:
把 Request 请求的 URL 记录到日志文件mylog.txt中。
Servletrequest events。
02
6.2 Servlet 监听器 6.2.1 Servlet 监听器概述
一般来说,监听器的实现通过以下两个步骤来完成。 (1)定义监听器实现类,实现监听器接口的所有方法; (2)通过Annotation或在web.xml文件中注册(或配置) Listener。
Filter 主要用于对用户请求进行预处理,
也可以对 HTTPServletResponse 进行
后处理,是个典型的处理链。
01
6.1 Servlet 过滤器 6.1.2 Filter 核心接口
01
6.1 Servlet 过滤器 6.1.2 Filter 核心接口
01
6.1 Servlet 过滤器 6.1.2 Filter 核心接口
01
6.1 Servlet 过滤器 6.1.1 Filter 工作原理
请求信息在过滤器链中可以被修改,也可以根据条件让
请求不发往资源处理器,并直接向客户机发回一个响应。
当资源处理器完成了对资源的处理后,响应信息将逐级
逆向返回。同样在这个过程中,用户可以修改响应信息,
从而完成一定的任务。
01
6.1 Servlet 过滤器 6.1.1 Filter 工作原理
过滤器与监听器
Servlet监听器
1、概念: Servlet监听器是当今Web应用开发的一个重要组成部分。Servlet监听器主 要目的是给 Web应用增加事件处理机制,以便更好地监视和控制Web应用的状 态变化,从而在后台调用相应处理程序 2、常见的Servlet监听器如下:
监听对象 ServletRequest HttpSession 监听接口 ServletRequestListener 监听事件 ServletRequestEvent
ServletContext
ServletContextListener
ServletContextAttributeListener
ServletContextEvent
ServletContextAttributeEvent
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
第五课
过滤器与监听器
” 如果十年前Sun没有做Java,人们便会写.Net程序,如果他们写.Net程序,他 们就是为windows写程序,而不是为Sun的设备写程序” ——Scott McNealy(Sun首席执行官)
回
提问
• • • Session与Request有哪些区别?
顾
Session被关闭的可能原因有哪些? Session的默认超时时间是多少,Session的最大空闲时间有哪两种 设置方式?
<filter-mapping> <filter-name>过滤器名</filter-name> <url-pattern>/文件名/*</url-pattern> </filter-mapping>
监听仪演示实验报告(3篇)
第1篇一、实验目的1. 了解监听仪的基本原理和功能。
2. 掌握监听仪的使用方法和技巧。
3. 通过实验验证监听仪在音频信号处理中的应用。
二、实验器材1. 监听仪一台2. 音频信号发生器一台3. 音频功率放大器一台4. 音频线若干5. 麦克风一个6. 耳机一副7. 计时器一个三、实验原理监听仪是一种用于音频信号监测、处理和传输的设备。
它通过放大、滤波、均衡等处理,将原始音频信号转换为适合人耳听觉的信号。
本实验主要验证监听仪在音频信号处理中的应用,包括放大、滤波、均衡等功能。
四、实验步骤1. 连接实验器材将音频信号发生器、监听仪、音频功率放大器、耳机等设备按照图示连接好,确保所有连接正常。
2. 设置音频信号发生器打开音频信号发生器,设置输出频率为1kHz,输出幅度为0dB。
3. 调整监听仪将监听仪音量调至适中,打开均衡器,调整高低音平衡。
4. 进行实验(1)放大实验将音频信号发生器的输出信号接入监听仪的输入端,观察监听仪的输出幅度。
逐渐增加音频信号发生器的输出幅度,观察监听仪输出幅度随输入幅度变化的规律。
(2)滤波实验打开监听仪的滤波功能,设置滤波器类型为低通滤波器,截止频率为3kHz。
观察监听仪输出信号的频率响应,验证滤波效果。
(3)均衡实验打开监听仪的均衡功能,调整高低音平衡,观察监听仪输出信号的频响变化,验证均衡效果。
5. 实验数据记录记录实验过程中监听仪输出信号的幅度、频率响应、均衡效果等数据。
五、实验结果与分析1. 放大实验随着音频信号发生器输出幅度的增加,监听仪输出幅度也相应增加,验证了监听仪的放大功能。
2. 滤波实验开启低通滤波器后,监听仪输出信号中高于3kHz的频率成分被滤除,验证了监听仪的滤波功能。
3. 均衡实验调整高低音平衡后,监听仪输出信号的频响得到改善,验证了监听仪的均衡功能。
六、实验结论通过本次实验,我们了解了监听仪的基本原理和功能,掌握了监听仪的使用方法和技巧。
实验结果表明,监听仪在音频信号处理中具有放大、滤波、均衡等功能,能够有效改善音频信号质量。
第17章 过滤器和监听器
过滤器的配置
过滤器的配置有以下几个步骤:
用<filter-mapping>配置过滤器的映射 过滤所有文件
<filter-mapping> <filter-name>FilterName</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Jsp程序设计
第01章 JAVA WEB入门
过滤器
【例】定义三个过滤器: 如果用户访问"/test"下的资源时,过滤器1被激活,它判断用户 是否已经登录,如果没有登录则中断请求,并返回404错误 信息,如果已经登录则将请求转发给下一个过滤器。 定义过滤器2,当请求"/*"资源并且请求是来自客户端时它才被 激活,显示提示信息,然后把请求转发给下一个过滤器。 过滤器3的功能同过滤器2,但它的请求类型为REQUEST或 FORWARD。
Jsp程序设计 第01章 JAVA WEB入门
过滤器
(2)编译Filter1程序,成功后,把Filter1.class文件放至 c:\tomcat\webapps\ROOT\WEB-INF\classes文件夹下。 (3) 新建一个类"Filter2",输入如下的代码: package my; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Filter2 implements Filter{ private FilterConfig config=null; public void init(FilterConfig config) throws ServletException{ this.config=config; }
servlet过滤器和监听器
Servlet监听器类型 (2)
ServletContext事件监听器中的接口和方法如表所示:
接口名称
方法名称
描述
ServletContextAttribut eListener
ServletContextListener
attributeAdded( ServletContextAttributeEvent scae) attributeRemoved( ServletContextAttributeEvent scae)
Servlet过滤器的特点
• Servlet过滤器可以检查和修改 ServletRequest和ServletResponse对象。
• Servlet过滤器可以被指定和特定的URL关联, 只有当客户请求访问该URL时,才会触发过滤 器。
• Servlet过滤器可以被串联在一起,形成管道 效应,协同修改请求和响应对象。
• 当用用户登陆页面输入帐号时,如果输 入是中文,后台servlet再次输出这个内 容时,可能就会是乱码,这是因为 serlvet中默认是以ISO-8859-1格式编 码的,如果后台有多个Servlet, 我们可 以通过一个过滤器统一解决,使后台的 输出输出都支持中文!将ISO-8859-1 转码为GBK的那段代码!
Servlet过滤器典型应用 (6)
(4)运行结果: 当IP地址非192.168.70.82的用户访问success.jsp时,运行结果
如图1所示:
图1 当IP地址非192.168.70.82的用户访问success.jsp时,运行结果 如图2所示:
图2
Servlet监听器
Servlet监听器工作原理 Servlet监听器类型 Servlet监听器典型应用
java_过滤器、监听器_拦截器_原理个人总结
过滤器创建一个Filter 只需两个步骤:(1)创建Filter 处理类:(2)在web.xml 文件中配置Filter 。
创建Filter 必须实现javax.servlet.Filter 接口,在该接口中定义了三个方法。
• void init(FilterConfig config): 用于完成Filter 的初始化。
• void destroy(): 用于Filter 销毁前,完成某些资源的回收。
• void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。
过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。
在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,<dispatcher>INCLUDE或FORWARD或REQUEST或ERROR</dispatcher>该元素位于filter-mapping中。
一、理解Struts2拦截器1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现.解析:--------------------------------------------------------------------------------------------拦截器和AOP的关系拦截器与AOP (Aspect Orient Program ,面向切面编程)是密切相关的,AOP 从程序运行角度来考虑程序的流程,取得业务处理过程的切面,在特定切面通过系统自动插入特定方法。
过滤器和监听器
案例1:统一设置字符集案例2:拦截URL,不登录不允许直接访问页面监听器监听器顾名思义就是监听某种事件的发生,即当某个事件发生时,就触发了某个设置好的监听器,但是这里触发的原因不同。
例如地震监测仪器监听地震的发生,大气监测仪,监测空气的变化以提供预警。
在servlet中因监听对象的不同也分为不同的监听器,这里指的监听对象是application、session对象,每种对象有各自的监听器。
1.application监听器:ServletContextListener需要实现的方法:(1)public void contextInitialized(ServletContextEvent e); //在application创建时就调用(2)public void contextDestroyed(ServletContextEvent e); //当application销毁时调用ServletContextEvent的getServletContext()方法可以取得application对象;创建完成监听器后需要在web.xml中做如下配置标签是单独出现的包含一个子标签,指定了监听类的全称(包名+类名)2.application属性监听器:ServletContextAttributeListener需要实现的方法:(1)public void attributeAdded(ServletContextAttributeEvent e); //当调用application.setAttribute()时调用(2)public void attributeRemoved(ServletContextAttributeEvent e); //当调用applcaition.removeAttribute()时调用(3)public void attributeReplaced(ServletContextAttributeEvent e); //当调用两次application.setAttribute()赋予相同属性时调用参数ServletContextAttributeEvent可以获得触发该监听器的属性名称和属性值,方法有:(1)getName(); 取得属性的名称;(2)getValue(); 取得属性的值;(注意:返回的是Object,必须转型)3.session监听器:HttpSessionListener需要实现的方法:(1)public void sessionCreated(HttpSessionEvent e); //当打开一个浏览器时,就会触发这个方法;(2)public void sessionDestroyed(HttpSessionEvent e); //当调用session.invalidate();或超时时调用HttpSessionEvent的方法getSession()获得触发监听器的session对象;销毁session常用的有2种方式:(1)session.invalidate();//直接销毁(2)在web.xml中设置超时时间://所有session起作用<session-config><session-timeout>5</session-timeout><!-- 5分钟 --></session-config>注意:如果会话超时时间设置为-1,则表示会话永远不会超时;4.session属性监听器:HttpSessionAttributeListener需要实现的方法:(1)public void attributeAdded(HttpSessionBindingEvent e); //当调用session.setAttribute()时调用(2)public void attributeRemoved(HttpSessionBindingEvent e); //当调用session.removeAttribute()时调用(3)public void attributeReplaced(HttpSessionBindingEvent e); //当调用两次session.setAttribute()赋予相同属性时调用HttpSessionBindingEvent 方法:(1)getSession();//获取触发监听器的session(2)getName();//获取属性名称(3)getValue();//获取属性值监听器应用场景 ServletContextListener:在任何Servlet提供服务之前执行、在Servlet销毁时执行,用于提前初始化一些资源,比如数据库连接、销毁一些资源,比如数据库连接;ServletContextAttributeListener:上下文中添加、删除、替换了属性;HttpSessionListener:多少个在线用户,即跟踪会话;HttpSessionAttributeListener:会话属性添加、删除、替换;综合案例:做一个网站在线人数统计,可以通过ServletContextListener监听,当Web应用上下文启动时,在ServletContext中添加一个List.用来准备存放在线的用户名,然后通过HttpSessionAttributeListener监听,当用户登录成功,把用户名设置到Session中。
监听器与过滤器
监听器与过滤器监听器简介什么是监听器1.能监听某个对象的状态变化的组件2.监听域对象的变化监听器相关的概念1.事件源:被监听的对象- request、session、servletContext2.监听器:监听事件源的对象- 8个监听器3.注册监听器:监听器与事件源相绑定4.响应行为:监听到事件源变化时,去做什么事情监听器划分1.三个监听域对象的创建与销毁ServletContextListenerbbbSessionListenerServletRequestListener2.三个监听域对象当中属性变化ServletContextAttributeListener bbbSessionAttributeListener ServletRequestAttributeListener域监听器ServletContext域监听器监听ServletContext域的创建与销毁的监听器ServletContextListenerServletContext域生命周期:服务器启动创建、服务器关闭销毁监听器的编写步骤:1.编写一个监听器类去实现监听器接口2.覆盖监听器的方法3.需要在web.xml中进行配置作用1.初始化的工作:初始化对象、初始化数据、加载数据库驱动、连接池的初始化2.加载一些初始化的配置文件3.任务调度bbbSessionListener监听bbbSession域的创建与销毁的监听器bbbSessionListenerbbbSession的生命周期:第一次调用request.getSession时创建、服务器关闭session过期或手动销毁应用场景:记录访问人数过滤器介绍什么是过滤器1.filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行2.可以对目标资源访问前后进行逻辑处理过滤器编写步骤1.编写一个过滤器的类实现Filter接口2.实现接口中尚未实现的方法(主要是DoFilter方法)3.在web.xml中进行配置(主要是对哪些资源进行过滤)示例:web.xml中的配置访问一个资源的时候,会被过滤器拦截要在过滤器当中进行放行之后后,才能够访问到对应的servlet chain.doFilter(req,res)过滤器的访问流程1.在发送一个请求时,web容器会先到filter当中,创建三个参数:res、req、chain2.在过滤器中,放行之后,才能访问到对应的资源3.中间的过滤可能有多个,在一个过滤器中,可以调用另外一个过滤器4.也有可能过滤器没有拦截所有资源,有些资源可以直接被访问filter的生命周期init方法当filter对象创建时调用当服务器启动时创建。
servlet过滤器和监听器
忽略此参数;最后一个参数为 FilterChain,该参数用来调
用过滤 器链中的下一个资源。FilterChain参数用于访问后续 过滤器
destroy():Servlet容器在销毁过滤器实例前调用该方法 ,这个方法中可以释放Servlet过滤器占用的资源。性质等同 与servlet的destory()方法。
doFilter(ServletRequest
reg,
ServletResponse
res,FilterChain chain):
用于进行过滤操作,该方法的第一个参数为
ServletRequest对象, 此对象给过滤器提供了对进入的信息( 包括表单数据、Cookie和
HTTP 请 求 头 ) 的 完 全 访 问 ; 第 二 个 参 数 为 ServletResponse,用于 响应使用ServletRequest对象访问的信 息,通常在简单的过滤器中
•Servlet过滤器
•filterConfig=null; •(3)创建JSP页面“online. •3.ServletRequest事件监听器
•redirectPort="8443" •Servlet监听器工作原理 •<title>拒绝访问</title>
•<Connector port="8080" protocol="HTTP/1. •HttpSessionListener用于监听HttpSession对象的改变,例如HttpSession对象的创建与销毁,HttpSessionActivationListener用 于监听HttpSession对象的状态,例如HttpSession对象是被激活还是被钝化。 •在方法中,若需要获取客户端请求相关的信息,则访问方法的第一个参数(HttpServletRequest类型),若需要发回给客户端响应 信息,则利用方法的第二个参数(HttpServletResponse类型)。 •HttpSessionBindingListener用于监听HttpSession对象的绑定状态,例如添加对象和移除对象。 •ServletContext事件监听器中的接口和方法如表所示: •欢迎访问吉林省三扬科技咨询有限
Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别
Servlet中的过滤器(拦截器)Filter与监听器Listener的作用和区别Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。
其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。
它是随你的web 应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁,以下通过过滤编码的代码示例来了解它的使用:以下是 MyCharsetFilter.java 在web.xml 中配置:以上的例子简单的说明了Filter的使用,具体其他的应用可以看具体的场景。
现在来说说Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener 接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。
主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。
下面利用监听器对数据库连接池DataSource的初始化演示它的使用:web.xml中配置如下,很简单:这样配置好了之后,以后在web应用中就可以通过ServletContext取得BasicDataSource对象,从而获取与数据库的连接,提高性能,方便使用。
上面通过两个示例演示了Filter和Listener的基本使用,对于其它的应用则需要我们在项目开发中根据具体的场景选择。
多多去挖掘。
实验5-网络中数据包的监听和分析
实验5 网络中数据包的监听和分析一. 实验目的及要求1、掌握Iris网络通讯分析工具的应用,学习如何在Windows下监控网络内部状态的基本技术,并通过实际观察数据包了解网络协议分层的实际意义。
2、通过设置过滤参数,实现对相应数据帧的过滤和捕获。
3、通过编辑帧数据,实现帧的自定义发送。
实验设备及条件硬件:PC机、网卡、已经设定好的以态网环境软件:Windows XP操作系统,安装Iris Network Traffic Analyzer 软件。
二. 实验内容1、学会网络监视器的使用2、利用网络监视器对本机的IP报文进行分析3、了解TCP三次握手的原理4、TCP握手协议简介:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
三. 实验步骤1、打开Iris运行程序。
2、从页面的最下方可以知道本机的IP地址、MAC地址和所选择的网络适配器3、点击左上方绿色开始按钮便开始抓包(这时的抓包是抓整个网络的包,没有经过过滤)4、点击左侧的capture会对每条命令进行详细的分割点击左侧的每条命令会和右侧红色的十六进制的命令相对应。
其中十六进制代码可以用鼠标选中进行手动修改5、在本实验中可通过设置IP地址过滤来实时查看两台已知IP地址的计算机的通信,本例选择IP地址为192.168.66.132的服务器(1)在最上侧的工具条中选择”view address book”(2)最上方出现的是本机的信息(3)选择左侧的“放大镜”,系统会自动列出局域网中的所有计算机的信息(4)在左侧的过滤按钮中选择“IP address”,分别从“address book”中将所需地址拖到下方的表格中(最好把地址拖进去,手写可能些不完整)(5)依照之前抓包步骤重新开始抓包分析四. 实验原理下面通过分析用Iris 捕获的包来分析一下TCP/IP 的工作过程,为了更清晰的解释数据传送的过程,我们按传输的不同阶段抓了四组数据,分别是查找服务器、建立连接、数据传输和终止连接。
第7章 过滤器与监听器PPT教学课件
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
servlet或jsp页面。
2020/12/11
5
过滤器的作用
检查请求并执行相应的行动,并阻塞请求或响应,使其不 能进一步传递。
修改请求和响应的头部和数据,用户可以提供自定义的请 求或可以通过提供定制的响应版本来实现。
可被添加到Web应用程序中或者从Web应用程序中删除而不 需重写基层应用程序代码,并能向过去的代码中添加新功 能。
} public void doFilter(ServletRequest request, ServletResponse response,FilterChain filterChain) { try { request.setCharacterEncoding(“gb2312”); filterChain.doFilter(request, response); } catch (Exception ex) { ex.printStackTrace(); } } public void destroy() { }
<servlet-name>outputservlet</servlet-name>
<url-pattern>/output</-pattern>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五:过滤器与监听器一、实验目的1.掌握过滤器的创建与配置方法;2.掌握监听器的创建与配置方法;二、实验内容2.1 创建Web项目1. 打开MyEclipse,创建一个Web Project,命名为ServletTest。
2.1 SecurityFilter详细过程见securityFilter.rmvb1.过滤器SecurityFilter的代码如下:package filters;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class SecurityFilter implements Filter {private FilterConfig filterConfig;public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request;// 获得用户输入的密码String pwdInput = httpRequest.getParameter("password");// 获得filter配置参数中的rightpass的值String rightPwd = filterConfig.getInitParameter("rightpass");if (!rightPwd.equals(pwdInput)) {PrintWriter out = response.getWriter();out.println("<h3>Wrong password! Please try again.</h3>");out.flush();return;}filterChain.doFilter(request, response);}public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;}}2.LoginServlet的主要代码如下:package servlets;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginServlet extends HttpServlet {/*** Constructor of the object.*/public LoginServlet() {super();}/*** Destruction of the servlet. <br>*/public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}/*** The doGet method of the servlet. <br>** This method is called when a form has its tag value method equals to get.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();HttpSession session = request.getSession();session.setAttribute("username", request.getParameter("username"));out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.println("<h3>Welcome, " + request.getParameter("username") + ", you are logged in.</h3>");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}/*** The doPost method of the servlet. <br>** This method is called when a form has its tag value method equals to post.** @param request the request send by the client to the server* @param response the response send by the server to the client* @throws ServletException if an error occurred* @throws IOException if an error occurred*/public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");out.println("<HTML>");out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");out.println(" <BODY>");out.print(" This is ");out.print(this.getClass());out.println(", using the POST method");out.println(" </BODY>");out.println("</HTML>");out.flush();out.close();}/*** Initialization of the servlet. <br>** @throws ServletException if an error occurs*/public void init() throws ServletException {// Put your code here}}3.新建login.jsp,用于进行登录测试,代码如下:<%@page language="java"import="java.util.*"pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>登录页面</title></head><body><p>This example shows you how the security filter is used to protect the LoginServlet. Pleaseenter the password and click the submit button to see results(correct password is "hello"):</p><form action="servlet/LoginServlet"method="get"><input type="text"name="username"/> User Name<br/><input type="password"name="password"/> Password<br/><input type="submit"value="Login"/></form></body></html>4.测试运行:打开http://localhost:8080/ServletTest/login.jsp,输入正确的用户名与密码,查看网页结果回到login页面,输入错误的密码,再次查看网页结果。