web

一、Cookie
特点:
Cookie是浏览器提供的一种技术
安全性差、容量小
有一个专门操作Cookie的类:javax.servlet.http.Cookie
Cookie的格式:键值对用“=”连接,多个键值对间通过“;”隔开
1.Cookie的创建和发送
通过new Cookie(“key”,“value”);来创建一个Cookie对象,要想将Cookie随响应发送到客户端,需要先添加到
response对象中,resp.addCookie(cookie);此时该cookie对象则随着响应发送至了客户端。

//创建Cookie对象
Cookie cookie=new Cookie("user", "uname=zhangsan&upwd=123");
//发送响应Cookie
resp.addCookie(cookie);

2.Cookie的获取***
在服务器端只提供了一个 getCookies()的方法用来获取客户端回传的所有 cookie 组成的一个数组,如果需要获取单
个 cookie 则需要通过遍历,getName() 获取 Cookie 的名称,getValue()获取 Cookie 的值。

//获取Cookie
Cookie[] cookies=req.getCookies();
if (cookies !=null && cookies.length>0) {
//遍历数组
for(Cookie cookie :cookies){
System.out.println("名称: "+cookie.getName() +"\t值: "+cookie.getValue());
}

3.Cookie到期时间的设定***
特点
到期时间:setMaxAge(int time);
分类
负整数
默认值,负整数表示在当前浏览器中存活,关闭浏览器即失效

    cookie.setMaxAge(-1);

正整数
表示cookie在浏览器中存活指定秒数,关闭浏览器也不影响

    cookie.setMaxAge(200);


表示即刻删除,浏览器中不保存

    cookie.setMaxAge(0);

4.Cookie的注意
特点
Cookie不跨浏览器和电脑
Cookie不建议存中文
存中文会报错
如果有中文,则通过URLEncoder.encode()进行编码,获取时通过URLDecoder.decode()来进行解

    String value = URLEncoder.encode("张三");

5.Cookie的覆盖
如果服务端发送重复的Cookie,那么会覆盖原有的Cookie

6.Cookie的路径
只要访问的路径中包含path的值,就能访问到当前cookie

// 设置cookie的路径 (/站点名/路径)
cookie.setPath("/sc04/test/ck05");
// 设置cookie的路径
cookie2.setPath("/"); // 设置当前服务器下的所有路径都能访问到 定位到端口后面

7.删除已存在的Cookie

// 创建cookie对象
Cookie cookie = new Cookie("user",null);
cookie.setMaxAge(0); // 删除cookie
// 响应cookie
resp.addCookie(cookie);

二、Session
1.介绍
HttpSession对象是javax.servlet.http.HttpSession的实例
2.Session的作用
为了标识一次会话,或者说确认一个用户,并且在一次会话(一个用户的多次请求)期间共享数据

HttpSession session=req.getSession();
System.out.println(session);

3.标识会话JSESSIONID
特点
Session 既然是为了标识一次会话,那么此次会话就应该有一个唯一的标志, 这个标志就是 sessionId
当用户请求服务器时,如果访问了session,则服务器会创建一个名为JSESSION,值为获取到的session的
sessionld的cookie对象,并添加到response对象中,响应给客户端,有效时间为关闭浏览器
所以Session的底层依赖Cookie来实现
代码

String id=session.getId();
System.out.println("标识符: "+id);
boolean flag= session.isNew();
System.out.println("是否是新的:"+flag);
long creatTime=session.getCreationTime();
System.err.println("获取第一次访问的时间:"+creatTime);
long lastAccessTime=session.getLastAccessedTime();
System.err.println("获取最后一次访问的时间:"+lastAccessTime);

4.作为域对象
数据在整个会话中都可以共享

// 获取session对象
HttpSession session = req.getSession();
System.out.println("Session02: " + session.getId());
// 设置session域对象
session.setAttribute("uname", "zhangsan");
// 设置request域对象
req.setAttribute("uname", "lisi");
// 请求转发跳转 (request域对象和session域对象数据都可以获取到)
// req.getRequestDispatcher("se03").forward(req, resp);
// 重定向 (request域对象失效,session域对象可获取)
resp.sendRedirect("se03");

5.session的销毁
第一种:默认时间到期:达到最大不活动时间(沉默时间)
默认30分钟,Tomcat服务器规定的。可以在服务器目录下web.xml中修改最大不活动时间

// 获取最大不活动时间
System.out.println(session.getMaxInactiveInterval()); // 1800

第二种:自己设定到期时间
session.setMaxInactiveInterval(int);来设定 session 的最大不活动时间
也可以通过 getMaxInactiveInterval();方法来查看当前 Session 对 象的最大不活动时间

// 自己手动设置最大不活动时间 通过session.setMaxInactiveInterval(int);来设定 session
的最大不活动时间,单位为秒。
session.setMaxInactiveInterval(100);

第三种立即销毁
session.invalidate();方法让 session 立刻失效

// 手动销毁
session.invalidate();

第四种:关闭浏览器
session的底层是cookie,默认在当前浏览器存活,关闭即失效
第五种:关闭服务器
只有在非正常关闭服务器时,才会销毁session对象;如果是正常关闭会将session对象存到(钝化)本地
磁盘,等下次获取中读取出来(活化)
三、ServletContext对象
每个web应用程序(web项目)有且只有一个ServletContext对象,是一个应用对象获取application对象,又称为
application对象
获取application对象
通过request对象

ServletContext servletContext = request.getServletContext();

通过session对象

ServletContext servletContext2 = request.getSession().getServletContext();

通过config对象

ServletContext servletContext3 = getServletConfig().getServletContext();

直接获取

ServletContext servletContext4 = getServletContext();

获取应用程序的相关信息
获取服务器版本 getServerInfo()

String serverInfo = servletContext.getServerInfo();
System.out.println("获取服务器版本: " + serverInfo); // Apache Tomcat/8.0.45

获取资源在服务器中的路径 getRealPath()

String path = servletContext.getRealPath("/"); // 项目被编译后生成在tomcat的解压目
录的路径
System.out.println("获取资源在服务器中的路径: " + path);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值