您的位置:首页 > 其它

实验8 Servlet事件监听

2014-04-23 14:18 141 查看
实验8 Servlet事件监听

一、实验目的

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

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

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

二、实验内容

1.对Servlet上下文进行监听练习

Dog.java
package com.mypackage;

/**
* @author xuhaixin
*/
public class Dog {
private String breed;

public Dog(String str) {
breed = str;
}

public String getBreed() {
// TODO Auto-generated method stub
return breed;
}

}


MyServletContexListener.java
package 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 implements
ServletContextAttributeListener, 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.java
package 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.java
package 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的三类主要事件编写事件监听器,并对事件做出相应处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: