实验五、过滤器与监听器

合集下载

过滤器与监听器

过滤器与监听器

第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-《过滤器与监听器》

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章 过滤器与监听器

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篇)

监听仪演示实验报告(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章 过滤器和监听器

第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过滤器和监听器

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监听器典型应用
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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页面,输入错误的密码,再次查看网页结果。

相关文档
最新文档