一个cookie应用

Cookie

  • session保持会话状态,cookie进行信息交换。
  • cookie实际上就是在客户和服务器之间交换的一小段数据(一个名/值String对)。
  • 服务器把cookie发送给客户,客户做出下一个请求时再把cookie返回给服务器。
  • cookie不需要用户介入,cookie交换是自动完成的(当然,要假设客户端支持cookie)。

利用ServletAPI使用Cookie

  • 对于cookie,你要做的工作都已经封装在3个类的ServletAPI中:HttpServletRequest、HttpServletResponse和Cookie。

  • 创建一个新Cookie

Cookie cookie = new Cookie("username",name);
  • 设置cookie在客户端上存活多久
cookie.setMaxAge(30*60);
  • 把cookie发送到客户
response.addCookie(cookie);
  • 从客户请求得到cookie
Cookie[] cookies = request.getCookies();
        
if(cookies != null){
    for(int i = 0; i < cookies.length; i++){
        Cookie cookie = cookies[i];
        if(cookie.getName().equals("username")){
            String userName = cookie.getValue();
            out.println("Hello" + userName);
            break;
        }
    }
}

简单的定制cookie

  • 假设建立一个表单,要求用户提交用户名。这个表单调用一个servlet,由servlet得到用户名请求参数,并使用户名值在响应中设置一个cookie。



    
    CookieTestPage


    
UserName:
  • 这个用户下一次请求这个Web应用中的任何servlet时,cookie会随请求返回(假设根据cookie的maxAge设置,这个cookie还存活)。Web应用中的servlet看到这个cookie时,它能把用户名放到动态生成的响应中,业务逻辑就能知道不用再向用户询问他的名字了。

实验

  • 写一个Web应用,实现上面这个场景。包含:一个index.html,两个servlet。

实现思路:

  • 客户访问index.html,假设是(http://localhost:8080/SessionTest/index.html),index.html提交表单用户名,到一个servlet处理接收过来的用户名,该servlet会生成一个cookie,把用户名保存进去,然后response将该cookie返回给客户端。
  • 客户访问第二个servlet,假设是(http://localhost:8080/SessionTest/checkcookie.do),读取request发送过来的cookie,它会遍历cookies,如果上次提交的用户名存在该cookies,就得到它的值,并输出到自己生成的动态网页,显示欢迎他的再次到来。

你可能感兴趣的:(java,web)