2021.11.16

Java学习第四天

文章目录

Javaweb(会话以及会话管理技术)
前言
一、会话概述
Cookie对象
1.1什么是Cookie
1.2为什么要Cookie
1.3 Cookie API
二、Session对象
2.1创建封装图书信息类
Book的java类
数据库模拟BookDB的java类
ListBookServlet的Servlet类
PurchaseServlet的Servlet类
CartServlet的Servlet类
前言

一、会话概述

Web应用中的会话类似于生活的打电话过程,它指的是一个客户端服务器之间的连续发生的一系列请求响应过程,例如一个用户在网站上的一整个购物过程就是一个会话。

Cookie对象

1.1什么是Cookie

类似于商场中办理的会员卡,每次去商场都能通过这张卡来识别你的用户信息,并对你的消费记录。这样,当该浏览器再次访问服务器的时候,都会在请求头中将Cookie发送给服务器,方便服务器对浏览器做出正确的响应。
服务向客户端
Set-Cookie头字段中设置的Cookie遵循一定语法格式,如下:
Set-Cookie: user=itcast; path=/ ;
user表示Cookie的名称,itcast表示Cookie的值,Path表示Cookie的属性。

1.2为什么要Cookie

因为HTTP协议是无状态的,对于一个浏览器发出的请求同一个来源,无法知道上一次用户做了什么。所以,需要额外维护会话。 Cookie 正是这样的一段随HTTP请求一起被传递的额外数据,用于维护浏览器和服务器的会话。

1.3 Cookie API

为了封装Cookie信息,在Serlet API中提供了一个javax. serttp.Cooke类,该类包含了生成Cookie信息和提取Cookie信息各个属性的方法。Cookie的构造方法和常用方法具体

1.构造方法
Cookie类有且仅有-一个构造方法,具体语法格式如下。

public Cookie (java.lang.String name, java.lang .String value)

在Cookie的构造方法中,参数name用于指定Cookie的名称,value 用于指定Cookie的值。需要注意的是,Cooki名称就不能更改,Cookie 的值可以为任何值,创建后允许被修改。
[任务5-1 ]显示用户上次访问时间

[任务目标]

当用户访问某些Web应用时,经常会显示出该用户上-次的访问时间。例如,QQ登录成功后,会显示用户上次的,读者将学会如何使用Cookie技术实现显示用户上次的访问时间的功能。

[实现步骤]
1.创建Servlet

在Eclipse中新建Web项目chapter05 ,并在该项目下新建-一个 名称为cn.itcast.chapter05.cookie.example的包,在该包中Servlet类,该类实现获取Cookie信息并将当前时间作为Cookie值发送给客户端。LastAccessServlet 类的具体实现代码如下所示。
** LastAccessServletjava**

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;
/*
@see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
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<cookies.length;i++) {
String name=cookies[i].getName();
if(“lastAccess”.equals(name)) {
lasttime=cookies[i].getValue();
}
}
if(lasttime==null) {
response.getWriter().print(“你是第一次访问本网站”);
}else {
response.getWriter().print(“你是第一次访问的时间是:+lasttime);

 }
1
String time = String.format("%tF%<tT", new Date());
Cookie cookie= new Cookie(“lastAccess”,time);
Cookie cookie2=new Cookie(“lastAccess”,123);
response.addCookie(cookie);
response.addCookie(cookie2);
}
/**

@see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
example
package cn.itcast.chapter05.session;
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 example
/
@WebServlet("/example")
public class example extends HttpServlet {
private static final long serialVersionUID = 1L;
/*
@see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String time = String.format("%tF%<tT", new Date());
Cookie cookie= new Cookie(“lastAccess”,time);
Cookie cookie2=new Cookie(“lastAccess”,“123”);
response.addCookie(cookie);
response.addCookie(cookie2);
}
/*
@see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}*



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值