实验8 Servlet事件监听

来源:互联网 发布:mac mini 装win 编辑:程序博客网 时间:2024/05/16 10:35

实验8 Servlet事件监听

一、实验目的

1.定义一个在web应用程序内生成的事件

2.理解上下文、会话及请求不同监听接口的功能

3.利用监听器熟练编写Servlet应用


二、实验内容
1.对Servlet上下文进行监听练习
Dog.javapackage com.mypackage;/** * @author xuhaixin */public class Dog {private String breed;public Dog(String str) {breed = str;}public String getBreed() {// TODO Auto-generated method stubreturn breed;}}

MyServletContexListener.javapackage com.myListener;import javax.servlet.ServletContext;import javax.servlet.ServletContextAttributeEvent;import javax.servlet.ServletContextAttributeListener;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import com.mypackage.Dog;/** * @author xuhaixin */public class MyServletContexListener implementsServletContextAttributeListener, ServletContextListener {public void contextDestroyed(ServletContextEvent arg0) {// TODO Auto-generated method stub}public void contextInitialized(ServletContextEvent arg0) {// 监听上下文创建,创建上下文属性ServletContext sc = arg0.getServletContext();String str = sc.getInitParameter("breed");Dog d = new Dog(str);sc.setAttribute("dogname", d);}public void attributeAdded(ServletContextAttributeEvent arg0) {// 监听上下文属性添加System.out.println("Web上下文中添加属性:" + arg0.getName() + ":"+ arg0.getValue());}public void attributeRemoved(ServletContextAttributeEvent arg0) {// 监听上下文属性删除System.out.println("Web上下文中删除属性:" + arg0.getName() + ":"+ arg0.getValue());}public void attributeReplaced(ServletContextAttributeEvent arg0) {// TODO Auto-generated method stub}}

DispServletContext.javapackage com.myServlet;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 com.mypackage.Dog;/** * @author xuhaixin * */public class DispServletContext extends HttpServlet {public DispServletContext() {super();}public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}private static final String Content_Type = "text/html;charset=GB2312";public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType(Content_Type);// 设置生成的文档类型PrintWriter out = response.getWriter();// 得到输出字符输出流out.println("<HTML>");// 输出相应的HTML源文件out.println("<HEAD><TITLE>DisServletContext</TITLE></HEAD>");out.println("<BODY bgcolor=\"#ffffff\">");out.println("<p><H3>测试上下文监听器</H1></p>");Dog d = (Dog) getServletContext().getAttribute("dogname");out.println("dog's breed is:" + d.getBreed());out.println("<form method='post' action='/lab8/servlet/DelServletContexAttr'>");out.println("<input type=submit valuse='删除上下文属性' />");out.println("</Form>");out.println("</BODY>");out.println("</HTML>");out.flush();out.close();// 关闭输出流}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}public void init() throws ServletException {// Put your code here}}

DelServletContextAttr.javapackage com.myServlet;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;/** * @author xuhaixin */public class DelServletContextAttr extends HttpServlet {public DelServletContextAttr() {super();}public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}private static final String Content_Type = "text/html;charset=GB2312";public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType(Content_Type);// 设置生成的文档类型PrintWriter out = response.getWriter();// 得到输出字符输出流out.println("<HTML>");// 输出相应的HTML源文件out.println("<HEAD><TITLE>DelServletContextAtrr</TITLE></HEAD>");out.println("<BODY bgcolor=\"#ffffff\">");getServletContext().removeAttribute("dogname");out.println("<h3>上下文属性删除成功!");out.println("</Form>");out.println("</BODY>");out.println("</HTML>");out.flush();out.close();// 关闭输出流}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}public void init() throws ServletException {// Put your code here}}


web.xml
在<web-app>...</web-app>中添加如下配置信息:

<context-param><param-name>breed</param-name><param-value>Great Dane</param-value></context-param><listener><listener-class>com.myListener.MyServletContexListener</listener-class></listener><servlet><servlet-name>DelServletContexAttr</servlet-name><servlet-class>com.myServlet.DelServletContextAttr</servlet-class></servlet><servlet><servlet-name>DispServletContext</servlet-name><servlet-class>com.myServlet.DispServletContext</servlet-class></servlet><servlet-mapping><servlet-name>DelServletContexAttr</servlet-name><url-pattern>/servlet/DelServletContexAttr</url-pattern></servlet-mapping><servlet-mapping><servlet-name>DispServletContext</servlet-name><url-pattern>/servlet/DispServletContext</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><login-config><auth-method>BASIC</auth-method></login-config>




2. 监听Http会话练习。利用监听器熟练编写一个web应用程序,实现输出从数据源获得学生成绩,并处理修改成绩的事件过程。(有做思考题同学,直接给出修改以后的代码即可)


三、结果分析及总结:

本实验介绍Servlet的特殊用法——监听器,监听器可以处理Web应用中的某些特殊事件,类似于Java图形界面编程中提供的事件处理机制。此外,介绍了Servlet事件的上下文、会话事件和请求事件对应的监听器的接口、接口提供的方法和方法的触发形式。对Servlet的三类主要事件编写事件监听器,并对事件做出相应处理。

0 0
原创粉丝点击