【问题标题】:Creating Servlet Cookies创建 Servlet Cookie
【发布时间】:2012-03-21 13:11:07
【问题描述】:

我对 servlet 比较陌生,目前我正在努力添加 cookie。我相信这是我采用模块化方法的结果,我构建了一个标头实用程序类,它只是将所有标头信息插入到 servlet 中,因此我想采用相同的方法来添加 cookie。

我还有一个凭证验证器类,它除了用户名和密码之外,对其进行验证,然后返回有效/无效响应。我相信这就是问题所在。在将用户名和密码传递给凭据验证器的登录表单中,我将表单操作定向到凭据 servlet,并将表单方法作为帖子。

如果我想将一个值从表单发送到另一个 servlet,这样做会带来问题,或者是这样吗?

对于学校来说,这个项目的目标是创建一个严格使用 servlet 的简单网站,然后我们可以使用 JSP 来减轻痛苦。

我应该考虑另一种方法吗?当使用表单动作和方法时,是否可以让这些类在表单上执行各种功能?

感谢您的帮助和指导。

最好的 E

【问题讨论】:

    标签: java http class servlets cookies


    【解决方案1】:

    您可以将请求发送到一个 servlet,然后在需要时将请求转发到另一个 servlet。

    在您的情况下,验证后,您可以将结果存储在属性中,然后将控制权转移到另一个 servlet。 (如果那是你想做的)

     RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/urlToServlet");
     dispatcher.forward(request, response);
    

    这就是如何处理 cookie。

    创建和发送 cookie

    Cookie userCookie = new Cookie("name", "value");
    userCookie.setMaxAge(60*60*24*365); //Store cookie for 1 year
    response.addCookie(userCookie);
    

    从客户端读取 cookie

    String cookieName = "somecookie";
    Cookie[] cookies = request.getCookies();
    if (cookies != null) 
    {
        for(int i=0; i<cookies.length; i++) 
        {
            Cookie cookie = cookies[i];
            if (cookieName.equals(cookie.getName())) 
            {
                doSomethingWith(cookie.getValue());
            }
        }
    }
    else
    {
        //do something else for firsttime visitors 
    }   
    

    您是否使用 cookie 进行会话跟踪? 如果是,则使用HttpSession。使用 HttpSession 则无需直接涉及 cookie 进行会话跟踪。

    例如,在一个简单的登录页面中,这就是你所做的

    HttpSession session = request.getSession();
    session.setAttribute("username",username);
    In other pages,
    if(session.getAttribute("username")==null)
    {
    //forward to login page.
    }
    

    【讨论】:

    • 迟到了,感谢您的回复。这很有帮助。
    【解决方案2】:

    您需要在 HttpServletResponse 中使用 addCookie。我建议您准备好 java 文档,以便您可以查看 servlet 可用的内容。 http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html#addCookie(javax.servlet.http.Cookie)

    【讨论】:

    • 同样,也很有帮助。谢谢你的时间。
    猜你喜欢
    • 2018-11-26
    • 1970-01-01
    • 2017-01-03
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多