Servlet侦听器未在ContextListener中设置属性

时间:2015-11-28 17:32:52

标签: java servlets

我正在尝试在部署时创建JDBC Connection子类型对象。因此,有一个Listener类,其中正在创建Connection子类型对象,并且它已在名为mycon的上下文属性中设置。但是,当在servlet类中获取属性的时候,它只返回NULL值。这是我的代码片段,index.html:<a href="servlet2">Fetch Data</a>&amp;&amp; MyListener类:

package FetchData;

import java.sql.*;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletContext;

public class MyListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void contextInitialized(ServletContextEvent ctx) {
        // TODO Auto-generated method stub

        try{
            String s1="Kalidass";
            //load the Mysql Driver class
            Class.forName("com.mysql.jdbc.Driver");

            Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","");

            ServletContext sc=ctx.getServletContext();
            sc.setAttribute("mycon", con);
            sc.setAttribute("name",s1);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }

}

我的Servlet类:

package FetchData;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Extract
 */
/*@WebServlet("/Extract")*/
public class Extract extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Extract() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html");
        PrintWriter out=response.getWriter();

        ServletContext sc=getServletContext();
        out.print("<b>"+sc+"</b>");
        String name=(String)sc.getAttribute("name");
        out.print("<b>"+name+"</b>");
        try{

            Connection conn=(Connection)sc.getAttribute("mycon");
            ///String name=(String)sc.getAttribute("name");
            out.print(conn);
            //out.print(name);

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }

    }

}

&安培;&安培; web.xml中:

 <?xml version="1.0" encoding="UTF-8"?>
<web-app>
<listener>
<listener-class>FetchData.MyListener</listener-class>
</listener>
<servlet>
<servlet-name>serv1</servlet-name>
<servlet-class>FetchData.Extract</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>serv1</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

当我在servlet类中获取属性值时,在MyListener类中设置的属性仅返回NULL。请帮助我解决这个问题。谢谢......

0 个答案:

没有答案