您的位置:首页 > 编程语言 > Java开发

Struts2和Servlet共用时获取ServletContext对象的问题

2014-02-07 11:28 288 查看
       在开发项目时经常需要获取ServletContext对象。每个应用都会有一个ServletContext对象,当容器分布在多个虚拟机上时,web应用在每个虚拟机上都拥有一个ServletContext实例,详细请问度娘。使用ServletContext对象时可将所需要的全局参数放入其中setAttribute(String name,Object obj),并在需要时取出getAttribute(String name)。同时它还可以获取很多系统参数,是经常用到的对象。

       最近的一个项目中既用到了serlvet,又用到了struts2,结果在部署时获取ServletContext提示空指针异常(NullPointerException),解决后总结了一下。

       如果是项目已部署并且正常运行之后在处理请求的过程中需要,通过以下方法获取:

[align=left]ServletContext application = ServletActionContext.getServletContext();

[/align]
       如果是在项目部署时HttpServlet子类中要service中的方法(该方法需要获取ServletContext对象中参数),再使用该方法时就会提示空指针异常(NullPointerException),是因为struts2还未启动导致无法获取。最后解决方法是在需要ServletContext对象的service中添加静态变量:

[align=left]    private ServletContext application = null;

[/align]
并且创建构造方法:

public ServiceTest(ServletContext application){

[align=left]        super();
[/align]
[align=left]        this.application = application;
[/align]
[align=left] }

[/align]

同时在HttpServlet子类中使用新创建的构造方法,因为HttpServlet中有getServletContext()方法,可以获取到ServletContext对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐