gpt4 book ai didi

java - servlet 不将 session 属性转发给 jsp

转载 作者:行者123 更新时间:2023-11-28 22:08:27 24 4
gpt4 key购买 nike

使用嵌入式 tomcat,此代码有效:

小服务程序:

String test = "test";
request.setAttribute("test", test);
request.getRequestDispatcher("/index.jsp").forward(request, response);

JSP:

<%= request.getAttribute("test") %>

它设置属性test,然后在servlet /example的jsp页面example.jsp上打印出来。


但是,如果我尝试在 session 中设置属性,那么我不会得到相同的结果,相反,我在使用它时得到一个 null:

小服务程序:

String test = "test";
request.getSession().setAttribute("test", test);
request.getRequestDispatcher("/index.jsp").forward(request, response);

JSP:

<%= session.getAttribute("test") %>

最佳答案

在 JSP 方面,你不需要说 request.getSession(),只是 session.getAttribute();
你有一个创建 servlet 上下文时 Main.java 出现问题(使用嵌入式 Tomcat 的技巧);您没有通过将 webapp 添加到 tomcat 来获得创建的上下文,您有一些其他上下文。

//          File base = new File("src/main/webapp");
// context = tomcat.addContext("", base.getAbsolutePath());
// tomcat.addWebapp(null, "/", base.getAbsolutePath());

context = tomcat.addWebapp("/", new File("src/main/webapp").getAbsolutePath());
context.setSessionTimeout(10080);

我注释掉了您的代码并更改了上下文处理,现在一切正常了。并捕获一个新的异常。

        } catch (ServletException | InterruptedException | LifecycleException exception) {

关于java - servlet 不将 session 属性转发给 jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23167654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com