如何在servlet中获得session的值,并且把获得的值赋给网页中的文本域
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在servlet中获得session的值,并且把获得的值赋给网页中的文本域相关的知识,希望对你有一定的参考价值。
Session session = request.getSession();获取session,再取值,至于赋给网页中的文本域是什么意思,我没搞明白。如果是从servlet传值到页面,你可以将值存在request,session,application任何一个中,然后再页面再取,用JS赋值到文本域就是了。 参考技术A 直接在网页显示的地方用<%=(String)session.getAttribute("attname")%>就可以。本回答被提问者采纳 参考技术B session.setAttribute()session.getAttribute()
但是如果你页面 redirect后应该就获取不到了。
在 Java Servlet 中,如何更改现有 cookie 的值?
【中文标题】在 Java Servlet 中,如何更改现有 cookie 的值?【英文标题】:In a Java Servlet how can I change the value of an existing cookie? 【发布时间】:2011-11-18 20:02:26 【问题描述】:有addCookie方法,但是HttpServletResponse中没有deleteCookie和editCookie
【问题讨论】:
【参考方案1】:那些确实不存在。只需自己创建实用方法即可。特别是获得所需的 cookie 非常臃肿。例如
public final class Servlets
private Servlets()
public static Cookie getCookie(HttpServletRequest request, String name)
if (request.getCookies() != null)
for (Cookie cookie : request.getCookies())
if (cookie.getName().equals(name))
return cookie;
return null;
要编辑 cookie,请设置其值,然后将其添加到响应中:
Cookie cookie = Servlets.getCookie(request, "foo");
if (cookie != null)
cookie.setValue(newValue);
response.addCookie(cookie);
如有必要,设置最大值、路径和域,如果它们与您的默认值不同。客户端即不发回此信息。
要删除 cookie,请将最大年龄设置为 0
(最好将值设置为 null
):
Cookie cookie = Servlets.getCookie(request, "foo");
if (cookie != null)
cookie.setMaxAge(0);
cookie.setValue(null);
response.addCookie(cookie);
必要时设置路径和域,如果它们与您的默认值不同。客户端即不发回此信息。
【讨论】:
如果你得到了cookie,设置它,然后再得到它,你得到的是旧cookie还是新cookie? @Sam:在同一个请求中,您当然会得到旧请求。设置的 cookie 仅在后续请求中可用,因为此信息是通过 HTTP 标头传递的。 @BalusC 你知道以这种方式设置 cookie 值是否适用于重定向?似乎更改被忽略了,或者更确切地说,没有在 cookie 的标头表示上传播。在我的例子中,cookie 在重定向的接收端保持不变。欣赏任何想法。 鉴于我上面的评论/问题,我认为答案是通过重定向接收方的过滤器来管理 cookie。即,在过滤器中的 cookie 命中目标 jsp 之前将其移除(使用 HttpServletRequestWrapper 来操作 cookie)。将报告调查结果。【参考方案2】:这是一个来自kodejava的例子:
public class ReadCookieExample extends HttpServlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++)
writer.println("Name: " + cookies[i].getName() + "; Value: " + cookies[i].getValue());
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
doPost(request, response);
这将得到 cookie 列表,得到你想要的,而不是打印出值,做类似这样的事情:
cookie.setValue(String.valueOf(<new Value>));
cookie.setMaxAge(60*60*24*365);
cookie.setPath("/");
response.addCookie(cookie); etc...
HTH,
詹姆斯
【讨论】:
以上是关于如何在servlet中获得session的值,并且把获得的值赋给网页中的文本域的主要内容,如果未能解决你的问题,请参考以下文章
在Struts2的Action中获得request response session几种方法