ServletContextListener的使用

(本文转载自http://jallay.iteye.com/blog/256554)

1:ServletContext对象是一个为整个web应用提供共享的内存,任何请求都可以访问里面的内容
2:如何实现在服务启动的时候就动态的加入到里面的内容:我们需要做的有: 
  1) 实现servletContextListerner接口 并将要共享的通过setAttribute(name,data)方法提交到内存中去
  2)应用项目在通过getAttribute(name)将数据或到

ServletContextLTest.java

=====================================================================

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 depts = new HashMap();
        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>

 

 

这样监视器就设置好了
以下通用应用调用上面的数据

CreateEmployee.java

==============================================================

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();
    }
} 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值