Java 如何在JSP中创建全局会话?

Java 如何在JSP中创建全局会话?,java,php,jsp,servlets,Java,Php,Jsp,Servlets,我想在JSP中创建一个全局会话,以便在所有servlet和JSP文件中使用,就像在PHP中使用以下指令所做的那样: <?php session_start (); ?> 并设置。它可以工作,但我必须从一个类到另一个类进行多次传递,才能将其保存在另一个JSP文件中 我该怎么办?请求。getSession()将在第一次调用时创建会话,后续的getSession()调用将使用相同的会话,只要URL(或cookie)上有可用的会话id 您需要确保在生成从一个页面到另一个页面的链接时调用

我想在JSP中创建一个全局会话,以便在所有servlet和JSP文件中使用,就像在PHP中使用以下指令所做的那样:

<?php 
session_start ();
?> 
并设置。它可以工作,但我必须从一个类到另一个类进行多次传递,才能将其保存在另一个JSP文件中

我该怎么办?

请求。getSession()
将在第一次调用时创建会话,后续的
getSession()
调用将使用相同的会话,只要URL(或cookie)上有可用的会话id

您需要确保在生成从一个页面到另一个页面的链接时调用
response.encodeUrl(…)
,以便会话ID包含在URL中

例如:
www.mysite.com/somePage;JSESSIONID=adfasdfasdfasdf

默认情况下,JSP启用了会话跟踪,并创建了一个新的HttpSession 对象会自动为每个新客户机实例化。禁用 会话跟踪需要通过设置 页面指令会话属性设置为false,如下所示:

然后在servlet中使用
session.setAttribute(name,value)
存储会话变量,并使用
${name}
(或等效的
)在JSP中检索和输出它们。

尝试 ServletContext=event..getServletContext();
然后是servletContext.getSession()。我认为它应该可以工作。您需要一个在应用程序结束前死亡的作用域,并从该作用域中获取会话。

您可以使用ServletContext Listener来维护所有应用程序侦听器的变量 ServletContext,以便在应用程序启动(正确部署)到时执行一些代码 初始化ServletContext上的属性)并在其完成时(在其未部署之前)

公共最终类MyAppListener实现ServletContextListener{
公共void contextInitialized(ServletContextEvent事件){
System.out.println(“应用程序启动”);
ServletContext=event..getServletContext();
setAttribute(“someAttribute”,“Hello world!”);
}
公共无效上下文已销毁(ServletContextEvent事件){
System.out.println(“应用程序已完成”);
}
}
如果您使用的是Java EE 5,那么应该在web.xml中配置侦听器
mypackage.listener.MyApplListener
HttpSession s = request.getSession ();
public final class MyAppListener implements ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {
        System.out.println("Application gets started.");
        ServletContext servletContext = event..getServletContext();
        servletContext.setAttribute("someAttribute", "Hello world!");
    }


    public void contextDestroyed(ServletContextEvent event) {
        System.out.println("Application has finished.");
    }
}


If you're using Java EE 5, you should configure the listener in the web.xml
<listener>
    <listener-class>mypackage.listener.MyAppListener</listener-class>
</listener>