在servlet中读取context-param时出现NullPointerException

类:
public class SiteInfo extends HttpServlet{
public SiteInfo(){
SetAddress();
}

private void SetAddress(){

address = getServletContext().getInitParameter("CoreAddress").toString();
}
...

===================================================================
web.xml里与此Servlet相关的设定
<servlet>
<servlet-name>SiteInfo</servlet-name>
<servlet-class>com.springmvc.SiteInfo</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
(没有servlet-mapping和其他东西)
===================================================================
web.xml里的参数定义

<context-param>
<param-name>Address</param-name>
<param-value>MyAddress</param-value>
</context-param>
===================================================================

主要错误信息:

java.lang.NullPointerException
javax.servlet.GenericServlet.getServletContext(GenericServlet.java:125)

求助!
(此外也尝试过设置为servlet里的init-param,在init()里读,但init似乎没有被调用过,参数传到JSP里显示时直接似乎null……)

    应该在Servlet生命周期初始化方法中读取初始化参数。

    你配置文件中的参加名字和你代码读取的参数名字写的不一样。

    参数可以配置到<servlet></servlet>里被当前servlet读取,也可以放到外部被所有servlet读取。

public class SiteInfo extends HttpServlet{
   private String address;
   public void init(){
      address = getServletContext().getInitParameter("Address").toString();
   }
}

追问

    但“Address”是context-param,并不是servlet里的init-param,这样还需要在init里读取??

    手误,代码里是一样的……

    我试过把它设置为init-param在init里读,以及按现在的context-param在doGet里读,传到JSP以后一概是null,调试是会显示“找不到来源”一类的话

追答

    Servlet生命周期有init  service  destroy,那么在init里可以读到,自然在service中就可以读取到。在<servlet>标签里配置用<init-param>,在根下配置的全局的初始化参数,用<context-param>。全局的可以被任意servlet读取,servlet里配置的只能被当前servlet读取。

    你在doGet里读取是没有问题,而且一定可以读取到。至于你为啥传递到JSP出现null,这个原因不好确定,你可以把你Servlet代码贴出来看看。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-06
写在Servlet的doGet或doPost事件里面
getServletContext().getInitParameter("CoreAddress")追问

在doGet里写了,读出来是null

第2个回答  2013-08-07
建议你先看servlet api 看调用的方法 是在init方法的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网