我有一个非常简单的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);
?
答案 0 :(得分:1)
您应该使用request.getSession()
返回与此请求关联的当前会话,或者如果请求没有会话,则创建一个会话。
设置属性:
request.getSession().setAttribute("foo")
使用以下方式获取属性:
request.getSession().getAttribute("foo")
它将在请求的上下文中使用,不会影响其他请求,因此您不需要删除属性。
中了解详情Servlets提供了一个出色的技术解决方案:HttpSession API。这是一个高级接口,允许服务器记住"与特定用户正在进行的事务相关的一组信息,以便它可以检索此信息以处理来自同一用户的任何未来请求。
答案 1 :(得分:0)
您可以选择request.getparameter("foo")
或request.setparameter("foo", obj)
这可以用于每个请求,并且它不会添加到您的会话变量中,并且基本上不会使您的"会话对象变重#34;。
请求参数是随请求一起发送的额外信息。对于HTTP servlet,参数包含在查询字符串或发布的表单数据中。