简体   繁体   English

Java-动态Web项目-全局对象

[英]Java - Dynamic Web Project - Global Object

Im interesting in Creating a Global Object which will be shared by all my servlets and all my JSP files. 在创建将由我的所有servlet和我的所有JSP文件共享的全局对象中,我的工作很有趣。 But i dont understand how to do it. 但是我不知道该怎么做。 Please advice. 请指教。

for a senario this object would contain lots of information my servlets and jsp files would like to take information from. 对于senario,此对象将包含很多信息,我的servlet和jsp文件希望从中获取信息。 I know how to pass objects between servlets and jsp's. 我知道如何在servlet和jsp之间传递对象。 But i dont know how to initialize 1 global object for the whole "system" or" website" 但是我不知道如何为整个“系统”或“网站”初始化1个全局对象


<display-name>WebTest1</display-name>
<listener>
    <listener-class>listeners.AppListener</listener-class>
</listener>
<welcome-file-list>
    <welcome-file>MainPage.html</welcome-file>
    <welcome-file>MainPage.htm</welcome-file>
    <welcome-file>MainPage.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
    <servlet-name>SimpleServlet</servlet-name>
    <servlet-class>servlets.SimpleServlet</servlet-class>
</servlet>

You should store the object inside application context. 您应该将对象存储在应用程序上下文中。 You can do this when the application starts using ServletContextListener . 当应用程序开始使用ServletContextListener时,您可以执行此操作。

public AppListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent sce) {
        //application is being deployed
        //register the "global" object here
        ServletContext sc = sce.getServletContext();
        MyGlobalClass globalObject = ...
        sc.setAttribute("globalObject", globalObject);
    }
    public void contextDestroyed(ServletContextEvent sce) {
        //application is being undeployed
    }
}

Register this class as a listener in web.xml: 在web.xml中将此类注册为侦听器:

<listener>
    <listener-class>package.where.defined.AppListener</listenerclass>
</listener>

Then you can access to this object in both Servlet and JSPs: 然后,您可以在Servlet和JSP中访问此对象:

Servlet: Servlet:

public void doGet(...) throws ... {
    ServletContext servletContext = request.getServletContext();
    MyGlobalClass globalObject = (MyGlobalClass)servletContext.getAttribute("globalObject");
    //use it...
}

JSP: JSP:

${globalObject.someField}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM