`
chenhua_1984
  • 浏览: 1233004 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

servlet知识回顾笔记(三):会话跟踪

阅读更多

1服务器可以同时处理多个用户请求,而且,每个用户请求的东西都不一样,这个时候就要用到会话跟踪技术.

2HttpServletRequest的getSession() 方法用语创建会话对象,具体的语法如下:

    Apublic HttpSession getSession(); 如果没有与当前请求关联的会话,则 getSession() 方法用于创建会话。 
     Bpublic HttpSession getSession(boolean value);

  如果布尔值为 true 且当前没有与请求关联的会话,则使用 getSession(boolean value) 创建会话。如果布尔值为 false,如果没有与当前请求关联的会话,返回null。

    

3会话跟踪技术

       用户授权     :会话跟踪的用户授权方法在用户登录之后跟踪用户。用户授权技术不允许未经授权的用户访问网站上的某些资源

        隐藏表单域    : 将会话跟踪字段的隐藏表单域添加到 HTML 页面,但是不会显示在客户端浏览器中

hidden 写道
<form action = “\\firsthtml.jsp” method=”POST”>

<input type = “hidden” name=“productid” value=“123”>

</form>

 

       URL 重写   :URL(统一资源定位) 重写技术将一个唯一的会话 ID 添加到 URL 结尾,以标识该会话。例如,重写以下 URL 传递会话 ID10

 

url重写 写道
原始 URL:http://server:post/servlet/Rewritten

用附加信息重写的 URL:
http://server:post/servlet/Rewritten/10

用添加的参数重写的 URL:
http://server:post/servlet/Rewritten?sessionid=10

用自定义修改重写的 URL:
http://server:post/servlet/Rewritten;$sessionid$10

        Cookie  : Cookie 用于存储 Web 服务器发送给客户端的信息。服务器通过设置响应标题中的  Set-Cookie 方法来发送 cookie。其语法如下:

 Set-Cookie: Name=VALUE; Comment=COMMENT; Domain=DOMAINNAME;
 Max-age=SECONDS; Path=PATH; secure;

 

Name – 指定 Cookie 的名称

VALUE – 指定 Cookie 名称的值

Domain – 指定 Cookie 有效的 URL

Max-age – 指定 Cookie 的生命周期(以秒表示)

secure – HTTP 指定 Cookie 是否可以在 HTTP 上交换

  

javax.servlet.http.cookies 包提供由 Cookie 类实现的多种方法
public void setMaxAge(int age);设置 cookie 的最大生命周期(以秒表示)

public int getMaxAge(); 返回Cookie 的最大保存时间

cooke 写道
Cookie cookie = null;
Cookie[] cookies = request.getCookies();
    boolean hasCookies = false;
   if (cookies != null)
      hasCookies = true;
    if (hasCookies)
    {
      out.println(“<h2>找到的每个 cookie 的名称和值</h2>");
    for (int i = 0; i < cookies.length; i++)
    {
      cookie = cookies[i];
      cookie.getName();
      cookie.getValue();
   }
}

 

session简单例子  写道
PrintWriter out = response.getWriter();
HttpSession session=request.getSession();
response.setContentType(CONTENT_TYPE);
if(session.isNew())
{
out.println(“新建的会话...<br/>");
}
else
{
out.println(“已有会话...<br/>");
}
out.println(“<br/>会话 ID: "+session.getId());
out.println("<br/>创建时间: ");
out.println(new Date(session.getCreationTime()));
out.println("<br/>最后访问日期: ");
out.println(new Date(session.getLastAccessedTime()));

 4Servlet 通信方法

   Servlet 访问网络资源以满足客户端请求
   Servlet 使用 RequestDispatcher 接口的 forward() 和include() 方法访问网络资源
 

public void forward (ServletRequest req, ServletResponse res); 将请求从一个 Servlet 转送到同一个服务器上的另一个 Servlet

 

public void include (ServletRequest req, ServletResponse res);在一个 Servlet 中包含另一个 Servlet  的内容

  

5 RequestDispatcher 写道

RequestDispatcher   dispatcher=getServletContext().getRequestDispatcher( "/usersServlet2");
if(dispatcher==null)
{
    response.sendError(response.SC_NO_CONTENT);
}
dispatcher.forward(request,response);

                                     

6Servlet 上下文

   将所有 Servlet 所共有的属性和资源存储于 ServletContext 接口对象。处理上下文属性的方法为:

1public Object getAttribute(String name); 返回 Servlet 容器属性名称。如果该名称没有属性则返回 null

2public void setAttribute(String name, Object object);将对象绑定到 Servlet 上下文中给定的属性名称

3public void removeAttribute(String name);删除给定名称的属性

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics