1:ServletContext对象是一个为整个web应用提供共享的内存,任何请求都可以访问里面的内容
2:如何实现在服务启动的时候就动态的加入到里面的内容:我们需要做的有:
1) 实现servletContextListerner接口 并将要共享的通过setAttribute(name,data)方法提交到内存中去
2)应用项目在通过getAttribute(name)将数据或到
package ServletContextTest;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import util.ConnectTool;
public class ServletContextLTest implements ServletContextListener{
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("this is last destroyeed");
}
public void contextInitialized(ServletContextEvent sce) {
ServletContext sct=sce.getServletContext();
Map<Integer,String> depts=new HashMap<Integer,String>();
Connection connection=null;
PreparedStatement pstm=null;
ResultSet rs=null;
try{
connection=ConnectTool.getConnection();
String sql="select deptNo,dname from dept";
pstm=connection.prepareStatement(sql);
rs=pstm.executeQuery();
/*put the data into the deptNames */
while(rs.next()){
depts.put(rs.getInt(1), rs.getString(2));
}
sct.setAttribute("dept", depts);
System.out.println("======listener test is beginning============================");
}catch(Exception e){
e.printStackTrace();
}finally{
ConnectTool.releasersc(rs, pstm, connection);
}
}
}
在配置文件中加入
<listener>
<listener-class>ServletContextTest.ServletContextLTest</listener-class>
</listener>
这样监视器就设置好了
以下通用应用调用上面的数据
package ServletContextTest;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.*;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CreateEmployee extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ServletContext sct=getServletConfig().getServletContext();
Map<Integer,String> dept=(Map<Integer,String>)sct.getAttribute("dept");
Set<Integer> key=dept.keySet();
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.println("<html>");
out.println("<body>");
out.println("<form action='/register' action='post'>");
out.println("<table alignb='center'>");
out.println("<tr>");
out.println("<td>");
out.println("username:");
out.println("</td>");
out.println("<td>");
out.println("<input type='text' name='username'");
out.println("</tr>");
out.println("<tr>");
out.println("<td>");
out.println("city:");
out.println("</td>");
out.println("<td>");
out.println("<select name='dept'");
for(Integer i:key){
out.println("<option value='"+i+"'>"+dept.get(i)+"</option>");
}
out.println("</select>");
out.println("</td>");
out.println("<tr>");
out.println("</table>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
out.flush();
}
}
Session和request也可以设置相应的监视器来处理数据
分享到:
相关推荐
ServletContextListener 使用详解 ServletContextListener 是 Servlet API 中的一个接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。当 Servlet 容器启动或终止 Web 应用时,...
这是一个maven项目,直接导入eclipse即可运行,此处监听的是9092端口,将项目运行起后,可以对其端口使用情况进行查看,在window下,可以使用命令 netstat -aon|findstr "9092",在linux下可以使用命令netstat -...
需要注意的是,`Timer`的线程模型可能导致多个任务之间存在依赖关系时出现混乱,因此在多线程环境下使用时需谨慎。 结合`ServletContextListener`和`Timer`,可以在Web应用程序启动时创建一个定时器,用于定时执行...
### ServletContextListener的使用 当一个Web应用程序被部署并启动时,服务器会调用`contextInitialized`方法。我们可以利用这个特性来执行一些初始化任务,如设置全局变量、加载配置文件、创建数据库连接池等。在...
在Spring MVC框架中,`ServletContextListener`扮演着重要的角色,它是Java Servlet API的一部分,用于监听ServletContext事件。在本文中,我们将深入探讨`ServletContextListener`如何与Spring MVC协作,以及如何...
在这个场景中,我们将探讨如何使用`ServletContextListener`来实现在线人数的统计和显示人员列表的功能。 首先,让我们了解一下`ServletContextListener`的基本用法。要创建一个`ServletContextListener`,你需要...
在这篇文章中,我们将介绍如何使用ServletContextListener来实现UDP监听。 在UDP监听中,需要使用DatagramSocket来创建一个UDP套接字,以便监听UDP数据报。同时,需要使用ServletContextListener来监听Servlet上...
Java 定时任务,每天定时执行任务 Java 定时任务是指在 Java 语言中实现的定时执行任务的机制,通过使用 Timer ...此外,我们还可以学习如何使用 Calendar 和 ServletContextListener 来实现每天定时执行任务的功能。
开发者可以参考这些代码,学习如何在自己的项目中使用监听器来增强功能和优化性能。 总结来说,`ServletContextListener`、session监听和请求侦听器是Java Web开发中不可或缺的组件,它们使得开发者能够更好地控制...
### Java监听器使用详解 #### 一、引言 在Java Web开发中,尤其是在使用...综上所述,通过合理地使用`ServletContextListener`,开发者可以有效地管理和控制Web应用的生命周期事件,从而提升应用的整体性能和稳定性。
在这个场景中,我们将使用一个特定的监听器,即ServletContextListener,来实现定时任务。 1. **ServletContextListener**:这是Java Web中的一种监听器,用于监听ServletContext对象的生命周期事件。我们可以通过...
JavaWeb新版教程. jsp--ServletContextListener监听器演示.avi
编写程序,提供用户登录界面。 登录成功后,提示用户上次登录时间,登录IP地址信息。 保存用户的登录信息可以使用XML,也可以使用纯文本文件。... 要求使用ServletContextListener,要求理解Listener.
在本实验中,我们可能会使用到`HttpSessionListener`、`ServletRequestListener`或`ServletContextListener`等监听器接口。例如,`HttpSessionListener`可以用来监控用户会话的创建和销毁,确保只有经过登录验证的...
它们实现了特定的接口,如`ServletContextListener`、`HttpSessionListener`或`ServletRequestListener`等,以便在特定事件发生时执行相应的操作,如初始化、销毁、创建或销毁域对象等。 二、`Listener`的分类 1. `...
本文将详细介绍如何使用`Timer`类结合`ServletContextListener`接口来实现在Web应用中启动并管理一个定时任务。 #### 二、Java定时器的基本概念 1. **`java.util.Timer`类**:`Timer`类是Java中用于执行定时任务的...
以下是这两个概念的详细解释以及如何在实际项目中使用它们。 ### 过滤器(Filter) 过滤器是Servlet规范的一部分,允许开发者在请求到达目标Servlet或JSP之前对请求进行预处理,并在响应离开目标之后进行后处理。...
在这个笔记中,我们将深入探讨如何在Web应用环境下使用Spring框架,特别是通过两种不同的方法:配置监听器类和调用HttpServlet类,以及配置ContextLoaderListener。 首先,Spring框架在Web应用中的主要作用是提供...