会话技术
客户端(浏览器) 和服务端(服务器)进行交互(会话)
当浏览器关闭的时候 这次交互(会话)结束
例如:打电话
会话中的两个技术
1.cookie (客户端技术)
保存浏览器中的缓存数据
当我发起一个请求 请求一个Servlet
进行逻辑处理
1.添加一个商品进购物车
2.处理完成后 给客户端(浏览器) 一个响应
3.响应中携带者记录了购买的什么商品 cookie
4.让浏览器保存起来 可以是保存在内存当中(结束回话 cookie被清除)
当保存在硬盘当中(结束会话 依然存在 会变成一个文件储存在客户端上)
5.当再次使用浏览器访问购物车时 浏览器会携带保存到客户端的cookie文件去访问.
注意: 第一次访问服务器的时候是不会携带着cookie去访问的
原因是 在第一次访问的时候cookie还没有产生
只有当第一次请求后的响应可以把cookie写回到浏览其中
配置Demo04 Servlet的基本属性
扫描二维码关注公众号,回复:
944215 查看本文章
<servlet>
<servlet-name>demo04</servlet-name>
<servlet-class>com.lanou3g.Demo04</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo04</servlet-name>
<url-pattern>/servlet/demo04</url-pattern>
</servlet-mapping>
public class Demo04 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应编码格式
response.setContentType("text/html;charset=UTF-8");
//告诉服务器 请求的内容是什么编码格式的
request.setCharacterEncoding("UTF-8");
//读取cookie
Cookie[] cookies = request.getCookies();
if (cookies!=null) {
//遍历数组
for (Cookie cookie : cookies) {
if (cookie.getName().equals("lastTime")) {
//取出cookie的值
String value = cookie.getValue();
//字符串转Long
long time = Long.parseLong(value);
//转成日期 Data
Date date = new Date(time);
//创建一个显示的日期格式
//参数就是你想要显示的日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化时间
String lastTime = dateFormat.format(date);
// 响应回(显示到)浏览器
response.getWriter().write("上次的访问时间" + lastTime);
}
}
}
//保存cookie 记录当前的时间
Cookie cookie = new Cookie("lastTime", System.currentTimeMillis()+"");
//设置一下cookie的保存路径 工程名 + 配置的网址路径
//读取cookie是按请求的地址 寻找cookie的
//如果你配置请求路径 没有一级目录 这样全网站
// 所有的网址请求都能找到你的这个cookie
///cookie.setPath("/");
cookie.setPath("/SH-web-servlet03/servlet");
//设置cookie的存活时间
//负值 表示浏览器关闭 cookie 消失
//正值 表示 存货的时间
//0 表示 删除cookie
cookie.setMaxAge(60 * 5);
//把cookie 添加进响应当中
response.addCookie(cookie);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
获取本次次登录的时间,只要想看上次登录的时间就可以使用这个方法
配置Demo05 Servlet的基本属性
<servlet>
<servlet-name>demo05</servlet-name>
<servlet-class>com.lanou3g.Demo05</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo05</servlet-name>
<url-pattern>/servlet/demo05</url-pattern>
</servlet-mapping>
public class Demo05 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应编码格式
response.setContentType("text/html;charset=UTF-8");
//告诉服务器 请求的内容是什么编码格式的
request.setCharacterEncoding("UTF-8");
//读取cookie
Cookie[] cookies = request.getCookies();
if (cookies!=null) {
//遍历数组
for (Cookie cookie : cookies) {
if (cookie.getName().equals("lastTime")) {
//取出cookie的值
String value = cookie.getValue();
//字符串转Long
long time = Long.parseLong(value);
//转成日期 Data
Date date = new Date(time);
//创建一个显示的日期格式
//参数就是你想要显示的日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化时间
String lastTime = dateFormat.format(date);
// 响应回(显示到)浏览器
response.getWriter().write("上次的访问时间" + lastTime);
}
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
登陆后 记录用户名
配置Demo06 Servlet的基本属性
<servlet>
<servlet-name>demo06</servlet-name>
<servlet-class>com.lanou3g.Demo06</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo06</servlet-name>
<url-pattern>/servlet/demo06</url-pattern>
</servlet-mapping>
public class Demo06 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应编码格式
response.setContentType("text/html;charset=UTF-8");
//告诉服务器 请求的内容是什么编码格式的
request.setCharacterEncoding("UTF-8");
String username = "";
//读取cookie
Cookie[] cookies = request.getCookies();
if (cookies !=null) {
for (Cookie cookie : cookies) {
if (cookie.getName().equals("username")) {
username = cookie.getValue();
}
}
}
//完成数据回显
//打印下username是否可以获取到
System.out.println(username);
// response.getWriter().write("<a href ''>wanglong</a>");
response.getWriter().write("<form action='/SH-web-servlet03/servlet/demo07' method='post' >");
response.getWriter().write("用户名 <input type='text' name='username'></br>");
response.getWriter().write("密码    <input type='password' name='password'></br>");
response.getWriter().write("<input type='checkbox' name='remember' value='记住'>记住</br>");
response.getWriter().write("<input type='submit' value='登陆'></br>");
response.getWriter().write("</form>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
配置Demo07 Servlet的基本属性
<servlet>
<servlet-name>demo07</servlet-name>
<servlet-class>com.lanou3g.Demo07</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo07</servlet-name>
<url-pattern>/servlet/demo07</url-pattern>
</servlet-mapping>
public class Demo07 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置响应编码格式
response.setContentType("text/html;charset=UTF-8");
//告诉服务器 请求的内容是什么编码格式的
request.setCharacterEncoding("UTF-8");
//获取请求的参数
String username = request.getParameter("username");
String password = request.getParameter("password");
String remember = request.getParameter("remember");
//创建cookie
Cookie cookie = new Cookie("username", username);
//设置cookie路径
cookie.setPath("/SH-web-servlet03/servlet");
//处理业务逻辑
if (username.equals("w") && password.equals("123")) {
response.getWriter().write("登陆成功");
//判断一下是否 点记住按钮
if (remember != null) {
//需要记住: 不是空的(设置)
cookie.setMaxAge(Integer.MAX_VALUE);
}else {
//删除原来的cookie (设置 存活时间)
cookie.setMaxAge(0);
}
//添加到响应中
response.addCookie(cookie);
}else {
response.getWriter().write("登陆失败");
//三秒后 返回登陆页面
response.setHeader("refresh", "3;url =/SH-web-servlet03/servlet/demo06 ");
}
//请求分发
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}