Servlet--基本三(cookie,session,jsp)

会话技术
什么是会话
	一个用户,打开浏览器,浏览多个页面,在这个多个页面中进行切换,最后关闭浏览器,这个过程
	这个过程中,其实是在访问同一个web应用.点击了多个超链接,发送了多个请求

什么是会话技术
	就是一个技术,这个技术可以实现会话过程中数据的共享

有什么用
	保存用户在会话过程中产生的数据
	让用户在同一个会话过程中实现数据的共享

分类
	浏览器(cookie)
		不太安全,可能会被清掉,服务器怎么知道浏览器里面有数据  ---每次访问服务器的时候把数据带过去
	
	服务器(session)
		占用空间,容易弄混,需要解决服务器如何识别这个数据是哪一个用户的
        
    总结
    	存在浏览器,主要是带来带去,存在服务器,我要识别这个数据是谁的
Cookie
相关概念
客户端的会话技术.把数据保存在客户的浏览器上
快速入门
服务器上怎么创建一个cookie   Cookie c = new Cookie("msg","liuyan");
服务器怎么把cookie传给浏览器  response.addCookie(c);
服务器怎么获取浏览器带过来的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=liuyan
第二次:请求对象:Cookie: msg=liuyan
属性方法
属性
	name cookie的名称
	value cookie的值
	path  cookie的路径
	domain cookie的域名
	maxAge cookie的存活时间
	
方法
	getName() 获取cookie的名称
	getValue()获取cookie的值
	response.addCookie(c);
	request.getCookies();
记录上次时间
/**
 1,获取一个名为lastTime的cookie对象
 2,判断
 	如果为null
 		第一次访问,显示欢迎页面	

 	如果不为null
 		不是第一次访问,获取出来,显示上一次的访问时间
 	
  3.拿到当前的时间,设置到cookie中,发给浏览器
*/
使用细节
一次可以发送多个cookie

存活时间
	默认一次会话有效,可以通过setMaxAge()设置它的存活时间
	0:立即删除(浏览器收到响应消息之后,才会删除本地的cookie文件)
	负数:会话结束之后删除(默认)
	正数:设置存活时间,以秒为单位
	
存储中文
	如果有特殊字符,存储的时候就会报错
	先编码存进去:URLEncoder.encode()
	取出来之后再解码:URLDecoder.decode()
	
共享问题
	通过setPath来设置cookie多个项目下共享
	通过setDomain("baidu.com")可以设置cookie在多个服务器下共享	
	http://news.baidu.com   http://tieba.baidu.com   baidu.com就是一级域名
	
应用
	定制页面 天气预报  记住上一次的访问地点
	记住用户名 显示用户上一次访问时间
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);
执行原理
存取数据用的是session对象,因为session对象是域对象,在一次会话中有效
识别每个用户的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不是同一个了
  	服务器在关闭的时候会对里面的cookie做一个钝化(存到本地),重启的时候做一个活化(从本地读取,重新创建一个cookie对象,数据还是在里面)

3,session域对象范围
	时间范围
		创建:第一次调用request.getSession()的时候,就会创建session对象
		销毁:1,超时,默认30分钟(从最后一次请求算起)
			2,手动调用invalidate()方法,销毁session
			3,非正常关闭服务器(如果是正常关闭,会有钝化和活化)
			
	空间范围
		同一个会话中所有的请求资源都可以访问
JSP
相关概念
java的服务器页面,很类似html页面,但是他是一个动态的页面,可以在html页面插入java代码
本质是一个servlet,执行的时候会把jsp翻译成servlet,然后在编译成class文件
基础语法
代码块
	<% 代码块 %>
	将来会被翻译到servlet的service方法中
声明
	<%! 代码块 %>
	将来会被翻译到servlet的service方法外面,用于定义成员变量或者成员方法
表达式
	<%= 代码 %>
	将来会被翻译到servlet的service方法里面的out.print()里面(也就是输出到页面)
注释
	<%-- 注释内容 --%>
三大指令
Page指令
	作用:
		设置页面的属性和行为
	格式:
		<%@ page 属性名=属性值>
	常见属性:
		import:用于导入java包或者类
		content-type:解决向浏览器输入中文的乱码问题
		
include指令
	作用:
		包含其他页面
	格式:
		<%@ include 属性名=属性值>
	常见属性:
		file:指定jsp页面包含文件的路径
		
taglib指令
	作用:
		引入标签库
	格式:
		<%@ taglib 属性名=属性值>
	常见属性:
		uri:引入标签库的路径
		prefix:引入标签库的别名
九大内置对象
内置对象:就是jsp给我们开发人员预定义好的,我们不需要自己创建,直接拿过来用就可以了

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

pageContext 页面的上下文对象
	作用:
		1,可以获取其他八个内置对象,但是我们很少这么使用 EL表达式中会用到
		2,他也是一个域对象,可以用来临时存储数据,范围是当前的页面
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值