Java Web学习day09------Cookie、Session、JSP

本文详细介绍了Web开发中的会话技术,包括Cookie和Session的使用原理、属性方法及最佳实践。Cookie作为客户端的会话技术,用于在浏览器中存储数据,而Session是服务器端技术,实现会话数据共享。文章还涵盖了JSP的基础语法和相关指令,为Web开发者提供了全面的理解。
摘要由CSDN通过智能技术生成

会话技术

1、什么是会话
  一个用户,打开浏览器,浏览多个页面,在这个多个页面中进行切换,最后关闭浏览器,这个过程,这个过程中,其实是在访问同一个web应用.点击了多个超链接,发送了多个请求
2、什么是会话技术
  实现会话过程中数据的共享
3、作用
  保存用户在会话过程中产生的数据
  让用户在同一个会话过程中实现数据的共享
4、分类
(1)浏览器(cookie)
  不太安全,可能会被清掉,服务器怎么知道浏览器里面有数据 —每次访问服务器的时候把数据带过去
(2)服务器(session)
  占用空间,容易弄混,需要解决服务器如何识别这个数据是哪一个用户的
(3)总结
  存在浏览器,主要是带来带去,存在服务器,我要识别这个数据是谁的

Cookie

相关概念

  客户端的会话技术.把数据保存在客户的浏览器上

快速入门

  服务器上怎么创建一个cookie Cookie c = new Cookie(“msg”,“liuyan”);
  服务器怎么把cookie传给浏览器 response.addCookie©;
  服务器怎么获取浏览器带过来的cookie Cookie[] cookies = request.getCookies();

CookieDemo01	
		//设置数据
        //创建一个cookie对象
        Cookie c = new Cookie("msg","jiege");
        //发送cookie到浏览器
        response.addCookie(c);
        
CookieDemo02
	    //获取数据
        //获取请求中的cookie数据
        Cookie[] cookies = request.getCookies();
        //遍历数据,打印cookie
        if (cookies != null){
            for (Cookie cookie : cookies) {
                //获取cook的名字
                String name = cookie.getName();
                //获取cookie里面的值
                String value = cookie.getValue();
                //打印
                System.out.println(name + "..." + value);
            }
        }

执行原理

  服务器端创建,传给浏览器,浏览器再保存到本地文件,以后每次访问这个项目的时候带过去
  第一次;响应对象:Set-Cookie: msg=xxx
  第二次:请求对象:Cookie: msg=xxx

属性方法

1、常用属性

属性备注
namecookie的名称
valuecookie的值
pathcookie的路径
domaincookie的域名
maxAgecookie的存活时间

2、常用方法

方法备注
getName()获取cookie的名称
getValue()获取cookie的值
response.addCookie( c )将cookie传给浏览器
request.getCookies()获取浏览器传过来的cookie

使用细节

1、一次可以发送多个cookie

2、存活时间
  默认一次会话有效,可以通过setMaxAge()设置它的存活时间
  0:立即删除(浏览器收到响应消息之后,才会删除本地的cookie文件)
  负数:会话结束之后删除(默认)
  正数:设置存活时间,以秒为单位
3、存储中文
  如果有特殊字符,存储的时候就会报错(比如空格等)
  先编码存进去:URLEncoder.encode()
  取出来之后再解码:URLDecoder.decode()
4、共享问题
  通过setPath来设置cookie多个项目下共享
  通过setDomain(“baidu.com”)可以设置cookie在多个服务器下共享
  http://news.baidu.com http://tieba.baidu.com baidu.com就是一级域名
5、应用场景
  定制页面 天气预报 记住上一次的访问地点
  记住用户名 显示用户上一次访问时间

Session

相关概念

  服务器端技术,可以实现一次会话的多个请求中数据的共享,数据存在session域对象中

快速入门

SessionDemo01
		//设置数据
        //获取session对象
        HttpSession session = request.getSession();
        //存数据
        session.setAttribute("msg","倩倩 栋栋");
SessionDemo02
	    //获取数据
        //获取session对象
        HttpSession session = request.getSession();
        //取数据
        Object msg = session.getAttribute("msg");
        System.out.println(msg);

执行原理

1、存取数据用的是session对象,因为session对象是域对象,在一次会话中有效
2、识别每个用户的session,使用的JSessionid,其实就是基于cookie
  第一次访问:服务器给浏览器:Set-Cookie: JSESSIONID=996C56A63EE717B3EA74C8AA932058AD;
  第二次访问:浏览器给服务器:Cookie: JSESSIONID=996C56A63EE717B3EA74C8AA932058AD

常用方法

setAttribute()
getAttribute()
removeAttribute()
getId()
invalidate()

使用细节

1、session基于cookie,尽量不要禁用cookie.可以给出提示或者通过encodeURL方法重写地址,推荐给出提示
2、当客户端关闭,服务器不关闭,两次获取的session不是同一个了,因为客户端打开再关闭,Jsessionid已经被销毁了(Jsessionid在一次会话结束之后就没有了);当客户端不关闭,服务器关闭在重启,两次获取的session不是同一个了,服务器在关闭的时候会对里面的session做一个钝化(存到本地),重启的时候做一个活化(从本地读取,重新创建一个session对象,数据还是在里面)
3、session域对象范围
(1)时间范围
  创建:第一次调用request.getSession()的时候,就会创建session对象
  销毁:
    a) 超时,默认30分钟(从最后一次请求算起)
    b) 手动调用invalidate()方法,销毁session
    c) 非正常关闭服务器(如果是正常关闭,会有钝化和活化)

(2)空间范围
  同一个会话中所有的请求资源都可以访问

JSP

相关概念

  java的服务器页面,很类似html页面,但是他是一个动态的页面,可以在html页面插入java代码;本质是一个servlet,执行的时候会把jsp翻译成servlet,然后在编译成class文件

基础语法

1、代码块
  <% 代码块 %>
  将来会被翻译到servlet的service方法中
2、声明
  <%! 代码块 %>
  将来会被翻译到servlet的service方法外面,用于定义成员变量或者成员方法
3、表达式
  <%= 代码 %>
  将来会被翻译到servlet的service方法里面的out.print()里面(也就是输出到页面)
4、注释
  <%-- 注释内容 --%>

三大指令

1、Page指令
(1)作用:
  设置页面的属性和行为
(2)格式:
  <%@ page 属性名=属性值>
(3)常见属性:
  import:用于导入java包或者类
  content-type:解决向浏览器输入中文的乱码问题
2、include指令
(1)作用:
  包含其他页面
(2)格式:
  <%@ include 属性名=属性值>
(3)常见属性:
  file:指定jsp页面包含文件的路径
3、taglib指令
(1)作用:
  引入标签库
(2)格式:
  <%@ taglib 属性名=属性值>
(3)常见属性:
  uri:引入标签库的路径
  prefix:引入标签库的别名

九大内置对象

  内置对象:就是jsp给我们开发人员预定义好的,我们不需要自己创建,直接拿过来用就可以了

备注
pageContext页面的上下文对象
request请求对象
response响应对象
session会话对象
application项目的上下文对象,类似servletContext
out输出对象,将数据输出到页面
page当前jsp翻译成servlet之后对象的引用
configservlet的配置对象类似servletConfig
exception异常对象

四大域对象

备注
pageContext页面的上下文对象 范围是当前页面
request请求对象 ,范围是当前请求
session会话对象 范围是当前会话
application项目的上下文对象, 范围是当前应用

pageContext 页面的上下文对象
  作用:
    1,可以获取其他八个内置对象,但是我们很少这么使用 EL表达式中会用到
    2,他也是一个域对象,可以用来临时存储数据,范围是当前的页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值