类:
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读取。
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代码贴出来看看。
getServletContext().getInitParameter("CoreAddress")追问
在doGet里写了,读出来是null