如何在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的值,并且把获得的值赋给网页中的文本域的主要内容,如果未能解决你的问题,请参考以下文章

jsp中如何获取servlet的值?

在Struts2的Action中获得request response session几种方法

.NET 一般处理程序中获取到的session值为空

js中如何使用session中定义好的Attribute的值

Struts2-获得servlet的api

php中的jquery如何获得session的值