文章目录
Javaweb(会话以及会话管理技术)
前言
一、会话概述
cookie对象
1.1什么是cookie
1.2为什么要cookie
1.3 cookie API
二、Session对象
2.1创建封装图书信息类
Book的java类
数据库模拟BookDB的java类
ListBookServlet的Servlet类
CartServlet的Servlet类
前言
一、会话概述
Web应用中的会话类似于生活的打电话过程,它指的是一个客户端(浏览器)与Web服务器之间的连续过程,例如一个用户在网站上的一整个购物过程就是一个会话。
cookie对象
1.1什么是cookie
类似于商场中办理的会员卡,每次去商场都能通过这张卡来识信息,并对你的消费记录。这样,当该浏览器再次访问服务器的时候,都会在请求头服务器,方便服务器对浏览器做出正确的响应。
服务向客户端发送cookie时,会在HTTP响应字段中增加Set-cookie响应字段。
Set-cookie头字段中设置的cookie遵循一定语法格式,具体示例如下:
Set-cookie: user=itcast; path=/ ;
u名称,itcast表示cookie的值,Path表示cookie的属性。
1.2为什么要cookie
因为HTTP协议是无状态的,对于一个浏览器发出的请求,服务器无法区分是不是同什么。所以,需要额外的数据用于维护会话。 cookie 正是这样的一段随HTTP请求一起被传递的额外数据,用于维护浏览器和服务器的会话。
1.3 cookie API
为了封装cookie信息,在Serlet API中提供了一个java,该类包含了生成cookie信息和提取cookie信息各个属性的方法。cookie的构造方法和常用方法具体
1.构造方法
cookie类有且仅有-一个构造方法,具体语法格式如下。
public cookie (java.lang.String name, java.lang .String value)
在cookie的构造方法中,参数name用于指定cookie指定cookie的值。需要注意的是,cookie 一旦创建,它的名称就不能更改,cookie 的值可以为任何值,创建后允许被修改。
[任务5-1 ]显示用户上次访问时间
[任务目标]
当用户访问某些Web应用时,经常会显示出该用户上-次的访问时间。例如,QQ时间。如何使用cookie技术实现显示用户上次的访问时间的功能。
[实现步骤]
1.创建Servlet
在Eclipse中新建Web项目chapter05 ,并在该项目下新建-一个 名称为cn.itcast.chapter05.cookie.example的包,在该包中该类主要用于实现获取cookie信息并将当前时间作为cookie值发送给客户端。LastAccessServlet 类的具体实现代码如下所示。
package cn.itcast.chapter05.cookie;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/
Servlet implementation class LastAcess
/
@WebServlet("/last")
public class LastAcess extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8”);
cookie[] cookies=request.getcookies();
String lasttime=null;
for(int i=0;cookies!=null&&i books=BookDB.getAll();
PrintWriter out = response.getWriter();
out.print("本网站售卖的书如下:");
for(Book b:books) {
String name= b.getName();
String id=b.getId();
String url="+id+"'>点击购买";
out.print("图书名称:"+name+" "+url+"
");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}



