Cookie Session JSP
创始人
2024-03-07 15:29:31

这里写目录标题

  • 1 Cookie
    • 1.1 会话介绍
    • 1.2 Cookie 介绍
    • 1.3 Cookie 属性
    • 1.4 Cookie 方法
      • 1.4.1 Cookie 添加和获取
    • 1.5 Cookie 的使用
    • 1.6 Cookie 的细节
  • 2 Session
    • 2.1 HttpSession 介绍
    • 2.2 HttpSession 常用方法
    • 2.3 HttpSession 获取
    • 2.4 HttpSession 的使用
    • 2.5 HttpSession 的细节
  • 3 JSP
    • 3.1 JSP 介绍
    • 3.2 JSP 快速入门
    • 3.3 JSP 执行过程
    • 3.4 JSP 语法
    • 3.5 JSP 指令
    • 3.6 JSP 细节
    • 3.7 四大域对象
    • 3.8 MVC 模型

1 Cookie

1.1 会话介绍

  • 会话:浏览器和服务器之间的多次请求和响应
  • 会话过程中所产生的一些数据,可以通过会话技术(Cookie 和 Session)保存

1.2 Cookie 介绍

  • Cookie:客户端会话管理技术
    把要贡献的数据保存到客户端中
    每次请求时,把会话信息带到服务器端,从而实现多次请求的数据共享
  • 作用:可以保存客户端访问网站的相关内容,从而保证每次访问时先从本地缓存中获取,以此提高效率

1.3 Cookie 属性

在这里插入图片描述

1.4 Cookie 方法

在这里插入图片描述

1.4.1 Cookie 添加和获取

  • 添加:HttpServletResponse
    在这里插入图片描述
  • 获取:HttpServletRequest
    在这里插入图片描述

1.5 Cookie 的使用

  • 需求说明
    通过 Cookie 记录最后访问时间,并在浏览器上显示出来
  • 最终目的
    掌握 Cookie 的基本使用,从创建到添加客户端,再到从服务器获取
  • 代码演示:
package com.txt.servlet;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.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=UTF-8");PrintWriter pw = resp.getWriter();pw.write("欢迎访问本网站,您的最后访问时间为:
");Cookie cookie = new Cookie("time", System.currentTimeMillis() + "");cookie.setMaxAge(3600);resp.addCookie(cookie);Cookie[] cookies = req.getCookies();for (Cookie c : cookies){if ("time".equals(c.getName())){String value = c.getValue();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");pw.write(sdf.format(new Date(Long.parseLong(value))));}}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }
  • 效果如下

在这里插入图片描述

1.6 Cookie 的细节

  • 数量限制
    每个网站最多有20和 Cookie, 且大小不能超过 4KB。所有网站的 Cookie 总数不能超过 300个
  • 名称限制
    Cookie 的名称只能包含 ASCCI 码表中的字母、数字字符。不能包含逗号、分号、空格,不能以 $ 开头
    Cookie 的值不支持中文
  • 存货时间限制 setMaxAge() 方法接收数字
    负整数:当前会话有效,浏览器关闭则清除
    0:立刻清除
    正整数:以秒为单位设置存活时间
  • 访问路径限制
    默认路径:取自第一次访问的资源路径前缀,只要以这个前缀为开头(包括子级路径),就能访问到
    设置路径:setPath() 方法设置指定路径

2 Session

2.1 HttpSession 介绍

  • HttpSession:服务器会话管理技术
    本质也是采用客户端会话管理技术
    只不过客户端保存的是一个特殊表示,而共享的数据保存到了服务器的内存对象中
    每次请求时,会将特殊标识带到服务器端,根据这个标识来找到对应的内存空间,从而实现数据共享
    是 Servlet 规范中四大域对象之一的会话域对象
  • 作用:可以实现数据共享
    在这里插入图片描述

2.2 HttpSession 常用方法

2.3 HttpSession 获取

  • HttpSession 实现类对象是通过 HttpSevletRequest 对象来获取
    在这里插入图片描述

2.4 HttpSession 的使用

  • 需求说明
    通过第一个 Servlet 设置共享数据用户名,并在第二个 Servlet 获取到
  • 最终目的
    掌握 HttpSession 的基本使用,如何获取和使用
  • 代码演示
package com.txt.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1. 获取请求的用户名String username = req.getParameter("username");//2. 获取 HTTPSession 的对象HttpSession session = req.getSession();//3. 将用户名信息添加到共享数据中session.setAttribute("username",username);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
package com.txt.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebServlet("/servletDemo02")
public class ServletDemo02 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1. 获取 HTTPSession 对象HttpSession session = req.getSession();//获取共享数据Object username = session.getAttribute("username");//将数据响应给浏览器resp.getWriter().write(username +"");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

2.5 HttpSession 的细节

  • 唯一标识的查看
    在这里插入图片描述
    在这里插入图片描述
  • 浏览器禁用 Cookie
    方式一:通过提示信息告知用户,大部分网站采用的解决方式
    方式二:访问时拼接 jsessionid 标识,通过 encodeURL() 方法重写地址
  • 钝化和活化
    • 什么是钝化和活化
      钝化:序列化。把长时间不用,但还不到过期时间的 HttpSession 进行序列化,写到磁盘上
      活化:相反的状态
    • 何时钝化
      第一种情况:当访问量很大是,服务器会根据 getLastAccessTime 来进行排序
      对长时间不用,但是还没有到过期时间的 HttpSession 进行序列化
      第二种情况:当服务器进行重启的时候,为了保持客户 HttpSession 中的数据,也要对其进行序列化
  • 注意:
    HttpSession 的序列化由服务器自动完成,我们无需关心

3 JSP

3.1 JSP 介绍

  • JSP(Java Servlet Page):是一种动态网页技术标准
  • JSP 部署在服务器上,可以处理客户端发送的请求,并根据请求内容动态的生成 HTML、XML 或其他格式文档的 Web 网页,然后再响应给客户端
  • JSP 是基于Java 语言的,它的本质就是 Servlet
    在这里插入图片描述

3.2 JSP 快速入门

  1. 创建一个web项目
  2. 在 web 目录下创建一个 index.jsp 文件
  3. 在文件中写一句内容为:这是我的第一个jsp
  4. 部署并启动项目
  5. 通过浏览器测试
  • 代码演示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
JSP这是我的第一个JSP

3.3 JSP 执行过程

在这里插入图片描述

3.4 JSP 语法

  • JSP 注释
    <%--注释的内容-->

  • Java 代码块
    <% Java 代码块%>
    <%
    System.out.println("Hello JSP");
    out.print("Hello JSP");
    %>

    注意:
    System.out.println(“Hello JSP”); 普通输出语句,输出在控制台
    out.print(“Hello JSP”); out是 JSPWriter 对象,输出在页面

  • JSP 表达式
    <%=表达式%>
    <%="hello"%>

    相当于 out.print(“hello”); 的简化

  • JSP 声明
    <%! 声明变量或方法 %>
    <%! String s = "abc"; %>
    <%=s%>

    如果加!代表的是声明的是成员变量
    如果不加!代表的是声明的是局部变量

3.5 JSP 指令

  • page 指令
    <%@ page 属性名 = 属性值 属性名 = 属性值 … %>
    在这里插入图片描述
  • include 指令:可以包含其他页面
    <%@ include file=包含的页面 %>
  • taglib 指令:可以引入外部标签库
    <%@ taglib uri=标签库的地址 prefix=前缀名称%>

3.6 JSP 细节

  • 九大隐式对象
    在这里插入图片描述
  • PageContext 对象
    是 JSP 独有的,Servlet 中没有
    是四大域对象之一的页面域对象,还可以操作其他三个域对象中的属性
    还可以获取其他八个隐式对象
    生命周期是随着 JSP 的创建而存在,随着 JSP 的结束而小旺旺,每个 JSP 页面都有一个 PageContext 对象
    在这里插入图片描述

3.7 四大域对象

在这里插入图片描述

3.8 MVC 模型

  • M(Model):模型。 用与封装数据,封装的是数据模型
  • V(View):视图。 用于显示数据,动态资源用 JSP 页面,静态资源用 HTML 页面
  • C(Controller):控制器。 用于处理请求和响应,例如 Servlet
    在这里插入图片描述

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...