Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】

  • Java后端 学习路线 笔记汇总表【黑马程序员】
  1. Cookie和Session-学习笔记01【Cookie_快速入门、Cookie_细节】
  2. Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】
  3. Cookie和Session-学习笔记03【Session快速入门、Session细节】
  4. Cookie和Session-学习笔记04【Session之验证码案例】

目录

第3节 Cookie案例

HTTP状态码500——非法参数异常

URL编解码

第4节 JSP改造Cookie案例

JSP_概念

JSP_原理

JSP_脚本

JSP_入门学习

JSP_案例_改造Cookie案例

更改jsp代码模板


第3节 Cookie案例

cookie
1. 概念:客户端会话技术,将数据保存到客户端。
2. 快速入门
3. 实现原理
4. cookie的细节
    1. 一次可不可以发送多个cookie?
    2. cookie在浏览器中保存多长时间?
    3. cookie能不能存中文?
    4. cookie共享问题?
    5. Cookie的特点和作用

    6. 案例:记住上一次访问时间
        1. 需求:
            1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。
            2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串
        2. 分析:
            1. 可以采用Cookie来完成
            2. 在服务器中的Servlet判断是否有一个名为lastTime的cookie
                1. 有:不是第一次访问
                    1. 响应数据:欢迎回来,您上次访问时间为:2018年6月10日11:50:20
                    2. 写回Cookie:lastTime=2018年6月10日11:50:01
                2. 没有:是第一次访问
                    1. 响应数据:您好,欢迎您首次访问
                    2. 写回Cookie:lastTime=2018年6月10日11:50:01
        3. 代码实现:...

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第1张图片 Cookie案例_记住上次访问时间

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第2张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第3张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第4张图片

package cn.itcast.cookie;

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;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 在服务器中的Servlet判断是否有一个名为lastTime的cookie
 * 1. 有:不是第一次访问
     * 1. 响应数据:欢迎回来,您上次访问时间为:2018年6月10日11:50:20
     * 2. 写回Cookie:lastTime=2018年6月10日11:50:01
 * 2. 没有:是第一次访问
     * 1. 响应数据:您好,欢迎您首次访问
     * 2. 写回Cookie:lastTime=2018年6月10日11:50:01
 */

@WebServlet("/cookieTest")
public class CookieTest extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置响应的消息体的数据格式以及编码
        response.setContentType("text/html;charset=utf-8");
        //1.获取所有Cookie
        Cookie[] cookies = request.getCookies();
        boolean flag = false;//没有cookie为lastTime
        //2.遍历cookie数组
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                //3.获取cookie的名称
                String name = cookie.getName();
                //4.判断名称是否是:lastTime
                if ("lastTime".equals(name)) {
                    //有该Cookie,不是第一次访问
                    flag = true;//有lastTime的cookie
                    //设置Cookie的value
                    //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String str_date = sdf.format(date);
                    System.out.println("编码前:" + str_date);
                    //URL编码
                    str_date = URLEncoder.encode(str_date, "utf-8");
                    System.out.println("编码后:" + str_date);
                    cookie.setValue(str_date);
                    //设置cookie的存活时间
                    cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
                    response.addCookie(cookie);

                    //响应数据
                    //获取Cookie的value,时间
                    String value = cookie.getValue();
                    System.out.println("解码前:" + value);
                    //URL解码:
                    value = URLDecoder.decode(value, "utf-8");
                    System.out.println("解码后:" + value);
                    response.getWriter().write("

欢迎回来,您上次访问时间为:" + value + "!

"); break; } } } if (cookies == null || cookies.length == 0 || flag == false) { //没有,第一次访问 //设置Cookie的value //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String str_date = sdf.format(date); System.out.println("编码前:" + str_date); //URL编码 str_date = URLEncoder.encode(str_date, "utf-8"); System.out.println("编码后:" + str_date); Cookie cookie = new Cookie("lastTime", str_date); //设置cookie的存活时间 cookie.setMaxAge(60 * 60 * 24 * 30);//一个月 response.addCookie(cookie); response.getWriter().write("

您好,欢迎您首次访问!

"); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }

HTTP状态码500——非法参数异常

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第5张图片

URL编解码

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第6张图片  Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第7张图片

第4节 JSP改造Cookie案例

JSP_概念

JSP:入门学习
1. 概念:
    * Java Server Pages: java服务器端页面
        * 可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码。
        * 用于简化书写!!!

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第8张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第9张图片

JSP_原理

JSP:入门学习
1. 概念

2. 原理
    * JSP本质上就是一个Servlet。

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第10张图片 JSP原理

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第11张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第12张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第13张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第14张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第15张图片  Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第16张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第17张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第18张图片

JSP_脚本

JSP:入门学习
1. 概念
2. 原理

3. JSP的脚本:JSP定义Java代码的方式
    1. <%  代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
    2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
    3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。

4. JSP的内置对象

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第19张图片

JSP_入门学习

JSP:入门学习
1. 概念
2. 原理

3. JSP的脚本:JSP定义Java代码的方式
4. JSP的内置对象:
    * 在jsp页面中不需要获取和创建,可以直接使用的对象
    * jsp一共有9个内置对象。
    * 今天学习3个:
        * request:请求
        * response:相应
        * out:字符输出流对象。可以将数据输出到页面上。和response.getWriter()类似
            * response.getWriter()和out.write()的区别:
                * 在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
                * response.getWriter()数据输出永远在out.write()之前

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第20张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第21张图片

JSP_案例_改造Cookie案例

JSP:入门学习

  1. 概念
  2. 原理
  3. JSP的脚本:JSP定义Java代码的方式
  4. JSP的内置对象:
  5. 案例:改造Cookie案例

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第22张图片

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第23张图片

html代码 与 Java代码 嵌套。

<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    itcast


    <%
        //1.获取所有Cookie
        Cookie[] cookies = request.getCookies();
        boolean flag = false;//没有cookie为lastTime
        //2.遍历cookie数组
        if (cookies != null && cookies.length > 0) {
            for (Cookie cookie : cookies) {
                //3.获取cookie的名称
                String name = cookie.getName();
                //4.判断名称是否是:lastTime
                if ("lastTime".equals(name)) {
                    //有该Cookie,不是第一次访问
                    flag = true;//有lastTime的cookie
                    //设置Cookie的value
                    //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie
                    Date date = new Date();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    String str_date = sdf.format(date);
                    System.out.println("编码前:" + str_date);
                    //URL编码
                    str_date = URLEncoder.encode(str_date, "utf-8");
                    System.out.println("编码后:" + str_date);
                    cookie.setValue(str_date);
                    //设置cookie的存活时间
                    cookie.setMaxAge(60 * 60 * 24 * 30);//一个月
                    response.addCookie(cookie);
                    //响应数据
                    //获取Cookie的value,时间
                    String value = cookie.getValue();
                    System.out.println("解码前:" + value);
                    //URL解码:
                    value = URLDecoder.decode(value, "utf-8");
                    System.out.println("解码后:" + value);
    %>
    

欢迎回来,您上次访问时间为:<%=value%>

<% break; } } } if (cookies == null || cookies.length == 0 || flag == false) { //没有,第一次访问 //设置Cookie的value //获取当前时间的字符串,重新设置Cookie的值,重新发送cookie Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String str_date = sdf.format(date); System.out.println("编码前:" + str_date); //URL编码 str_date = URLEncoder.encode(str_date, "utf-8"); System.out.println("编码后:" + str_date); Cookie cookie = new Cookie("lastTime", str_date); //设置cookie的存活时间 cookie.setMaxAge(60 * 60 * 24 * 30);//一个月 response.addCookie(cookie); %>

您好,欢迎您首次访问

<% } %>

更改jsp代码模板

Cookie和Session-学习笔记02【Cookie案例、JSP改造Cookie案例】_第24张图片

是日已过,命亦随减,如少水鱼,斯有何乐。当勤精进,如救头燃,但念无常,慎勿放逸。——佛教偈语

你可能感兴趣的:(JavaWeb,java,cookie,jsp,HTTP,URL)