在Servlet中管理会话和请求属性

时间:2018-05-09 20:26:13

标签: java jsp

我有一个非常简单的JSP页面,它有一个搜索框并基于输入,在搜索框中,它将返回一个带有提交按钮的响应以获得以下响应。

我注意到每当我在我的servlet中使用session.getattribute("foo")来检索某个请求时它会因请求结束而返回null,所以我在这里查看答案并开始使用session.removeAttribute("foo")代替。但是,现在我被困在设置会话变量响应并且它导致我的视​​图有旧的会话数据,而不是假设在那里所以现在我必须使用session.getattribute("foo"),无论何时,我不想要要显示的特定响应数据。

有没有更好的方法来管理,而不必使用session.removeAttribute("foo")session.setattribute("foo")const start = [{'b':'c'}, {'a':'b'}, {'c':'d'}, {'d':'e'}]; function convert(key, object) { const obj = getObj(key); if(obj) { object[obj[key]] = {}; convert(obj[key], object[obj[key]]); } } function getObj(key) { const foo = start.find((el, i) => { if(el[key]) { return el[key] }}); return foo; } const end = { a: {}}; convert('a', end.a); console.log(end);

2 个答案:

答案 0 :(得分:1)

您应该使用request.getSession()

  

返回与此请求关联的当前会话,或者如果请求没有会话,则创建一个会话。

设置属性:

request.getSession().setAttribute("foo")

使用以下方式获取属性:

request.getSession().getAttribute("foo")

它将在请求的上下文中使用,不会影响其他请求,因此您不需要删除属性。

Servlets tutorial

中了解详情
  

Servlets提供了一个出色的技术解决方案:HttpSession API。这是一个高级接口,允许服务器记住"与特定用户正在进行的事务相关的一组信息,以便它可以检索此信息以处理来自同一用户的任何未来请求。

答案 1 :(得分:0)

您可以选择request.getparameter("foo")request.setparameter("foo", obj)

这可以用于每个请求,并且它不会添加到您的会话变量中,并且基本上不会使您的"会话对象变重#34;。

Java doc:

  

请求参数是随请求一起发送的额外信息。对于HTTP servlet,参数包含在查询字符串或发布的表单数据中。