Cookie和Session的小知识

Cookie是用户访问web服务器时,服务器在用户硬盘上存放的信息。可以根据Cookie来跟踪用户

构造方法:CookieString nameString value)在服务器端构造,通过响应返回给客户端,方法为response.addCookie()通过request.getCookie()得到一个Cookie【】数组。还可以通过方法setMaxAge()设置Cookie的最大存活时间

CookieServlet代码:

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class CookieServlet extends HttpServlet 

{

private int count1;

private int count2;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException 

{

     Cookie cookie=new Cookie("CookieName"+count1++,"CookieValue"+count2++);

     cookie.setMaxAge(15);

     response.addCookie(cookie);

 Cookie[] cookies=request.getCookies();

 if(null==cookies)

 {

 return;

 }

 for(Cookie c:cookies)

 {

System.out.println("CookieName"+c.getName());

System.out.println("CookieValue"+c.getValue());

 

 }

}

}

JspCookie代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

  </head>  

  <body>

  <%!

     int count1;

     int count2;

  %>

    <%

    Cookie cookie=new Cookie("CookieName"+count1++,"CookieValue"+count2++);

    cookie.setMaxAge(15);

    response.addCookie(cookie);

    Cookie[] cookies=request.getCookies();

    if(null==cookies)

    {

    return;

    }

    for(Cookie c:cookies)

    {

    %>

    <h1>CookieName:</h1><%=c.getName() %>

    <h1>CookieValue</h1><%=c.getValue() %>

     <%%>

  </body>

</html>

比较Servletjsp

相同:都可以生成动态页面

不同:jsp优点是擅长于网页制作,生成动态页面。Jsp缺点是不容易跟踪和排错。

      Servlet是纯java语言,擅长于处理流程和业务逻辑。Servlet缺点是生成动态网页不直观。

request.getAttribute() request.getParameter()方法的异同:

1. 前者返回Object类型的对象,后者返回String类型的对象;

2. 当两个web组件之间为链接关系时,被链接的组件通过getParameter()方法来获得请求参数

3. 当两个web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。

4. request.getParameter()方法传递的数据,会从web客户端传到web服务器端,代表http请求数据。

5. request.setAttribute()getAttribute()方法传递的数据只会存在于web容器内部,在具体转发关系的web组件之间共享。

Web服务器跟踪客户状态有四种方法:

1.建立含有跟踪数据的隐藏字段

2.重写包含额外参数的URL

3.使用持续的Cookie

4.使用Servlet API中的Session(会话)机制

Session运行机制:

1.当一个Seesion开始时,Servlet容器将创建一个HttpSession对象,在HttpSession对象中可以存放客户状态的信息

2.Servlet容器为HttpSession分配一个唯一标识符,称为Session IDServlet容器把Session ID作为Cookie保存在客户的浏览器中。

3.每次客户发出Http请求时,Servlet容器可以从HttpServletRequest对象中读取Session ID,然后根据Session ID找到相应的HttpSession对象,从而获取客户的状态信息。

Session方法摘要:

1. void setAttributeString nameObject value

2.Object  getAttributeString name

3.boolean  isNew()判断是否是新创建的Session。如果是新创建的Session,返回true,否则返回false

4.void  invalidate()

5.void  setMaxInactiveIntervalint interval)设定一个Session可以处于不活动状态的最大时间间隔,以秒为单位。如果超过这个时间,Session自动

失效。如果设置为负数,表示不限制Session处于不活动状态的时间。

6.String getID()返回一个惟一的标示符。

Session生命周期:

1. Session过期

2. 服务器端调用了HttpSessioninvalidate()方法。



你可能感兴趣的:(Cookie和Session的小知识)