2012-03-03 70 views
4

我对servlet比较陌生,目前我正在努力添加cookie。我相信这是我采用模块化方法的一个结果,我构建了一个头部实用程序类,它只是将所有头信息插入到servlet中,所以我希望采用与添加Cookie相同的方法。创建Servlet Cookies

我也有一个信用验证器类,除了用户名和密码,验证它,然后返回一个有效/无效的响应。我相信这是问题所在。在将用户名和密码传递给凭证验证程序的登录表单中,我将表单操作指向凭证servlet和表单方法作为帖子。

这样做会提供一个问题,如果我想从窗体发送一个值到另一个servlet,或者它呢?

这个项目针对学校的目标是严格地用servlet创建一个简单的网站,然后我们使用JSP来缓解这种痛苦。

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

谢谢你的帮助和指导。

最佳 Ë

回答

11

您可以将请求发送到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 
} 

饼干吗? 如果是,则使用HttpSession。使用HttpSession,那么不需要直接使用cookie来进行会话跟踪。

例如,在一个简单的登录页面,这是你做了什么

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

虽然很晚,但感谢您的回复。这非常有帮助。 – 2012-05-20 20:28:20