首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ServletContextListener错误

ServletContextListener错误
EN

Stack Overflow用户
提问于 2014-06-10 18:04:05
回答 1查看 1.5K关注 0票数 1

我正在学习servlets,我从书中做了一个例子,但我得到了nullpointerexception

这里是我的类:

代码语言:javascript
复制
package chala;

public class Dog {


private String breed;

public Dog(String breed) {
    this.breed = breed;
}

public String getBreed() {
    return breed;
}

public void setBreed(String breed) {
    this.breed = breed;
}

}

Dog类是具有简单功能的POJO类。

代码语言:javascript
复制
package chala;

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

public class CtxListener implements ServletContextListener {

@Override
public void contextDestroyed(ServletContextEvent event) {
    ServletContext sc = event.getServletContext();
    String breed = sc.getInitParameter("breed");
    Dog d = new Dog(breed);
    sc.setAttribute("dog", d);

}

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

}

}

这是context监听器类,其中我获取servlet上下文对象,从它获取init参数,并创建Dog对象,然后设置servlet上下文的属性。

代码语言:javascript
复制
package chala;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    out.println("Servlet Context Listener Example");
    out.print("<BR/>");
    ServletContext sc = (ServletContext) getServletContext();
    System.out.println(sc.getAttribute("dog"));
    Dog dog = (Dog) getServletContext().getAttribute("dog");

    out.print("Dogs breed is :" + dog.getBreed());
}

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
}

}

这是我的servlet,我在这里获取servlet上下文属性(DOG对象)并调用Dogs getBreed()方法。当我启动并发送GET请求时,我将得到nullpointerexception

这里是我的web.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>ContextListenerDemo</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>



    <context-param>
        <param-name>breed</param-name>
        <param-value>Labrador</param-value>
    </context-param>

    <listener>
        <listener-class>chala.CtxListener</listener-class>
    </listener>


</web-app>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-10 18:07:18

contextDestroyed()方法中设置将在销毁上下文时调用的属性,需要在contextInitialized()中设置该属性

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24147946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档