关于Session在一个Servlet取不到值的问题

TestServlet:

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{

 	//获取Session的值

 	String test = (String)request.getSession().getAttribute("test");

 	//在Session设置一个值

 	request.getSession().setAttribute("test", "test");

 	//转发到Jsp页面

 	request.getRequestDispatcher("TestJsp.jsp").forward(request, response);

 }

 

TestJsp:

Show:&{requestScope.test }

<!-- 点击标签回Servlet -->

<a href="TestServlet">Click</a>

 

这时会发现getAttribute("test")取到的是Null,按道理setAttribute("test", "test")之后应该可以在取到,但是不行....

 

解决方法:

<a href="javascript:location.href='TestServlet';">Click</a>

 

 这种方式相当于重定向了一次到TestServlet,于是可以取到test了。

 

我觉得是设置完test之后直接转发到了jsp,而jsp的a标签又转发到了TestServlet,

中间没来得及刷新所以取不到值,我理解的可能不太对....

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java Web应用程序中,可以使用Servlet API中提供的HttpSession接口来保存会话信息。HttpSession接口提供了一种将数据存储在服务器端的方式,以便在同一会话期间的多个页面之间共享数据。 以下是一个简单的示例,演示如何在Servlet中使用HttpSession来保存和检索数据: ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/sessionExample") public class SessionExampleServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取当前会话,如果不存在则创建一个新的会话 HttpSession session = request.getSession(true); // 在会话中保存数据 session.setAttribute("username", "John"); // 从会话中检索数据 String username = (String) session.getAttribute("username"); // 将数据发送回客户端 response.getWriter().write("Hello, " + username + "!"); } } ``` 在这个示例中,我们首先获取当前会话对象,然后将一个名为“username”的属性设置到会话中。接下来,我们从会话中检索“username”属性的,并将其发送回客户端。 当客户端第一次访问该Servlet时,会话将被创建,并且“username”属性将被设置为“John”。在随后的请求中,我们可以从会话中检索“username”属性的,并在响应中将其发送回客户端。 请注意,HttpSession接口提供了许多其他有用的方法,例如setMaxInactiveInterval(用于设置会话的最大非活动时间)和invalidate(用于删除会话)。您可以查看Java文档以获取更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值