栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-12-02---Cookie和Session

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-12-02---Cookie和Session

1.cookie
----什么是cookie?
1.cookie翻译过来是饼干的意思
2.cookie是服务器通知客户端保存键值对的一种技术
3.客户端有了cookie后,每次请求都发送给服务器
4.每个cookie的大小不能超过4kb

----如何创建cookie

Servlet 程序中的代码:
protected void createcookie(HttpServletRequest req,HttpServletResponse resp)throw
ServletException, IOException{
//1.创建cookie对象
cookie cookie= new cookie(“key4”,“value4”);
//2.通知客户端保存cookie
resp.addcookie(cookie);
//1.创建cookie对象
cookie cookie1=new cookie(“key2”,“value2”);
//2.通知客户端保存cookie
resp.addcookie(cookie1);
resp.getWrite().write(“cookie创建成功”)
}
----服务器如何获取cookie
服务器获取客户端的cookie只需要一行代码:req.getcookie():cookie[]

cookie的工具类:
public class cookieUtils{

public static cookie findcookie(String name,cookie[] cookies){
if (namenull || cookie == null || cookie.lenght0){
return null;
}
for(cookie cookie:cookies){
if(name.equals(cookie.getName())){
return cookie;
}
}
return null;
}
}

----Servlet程序中的代码:
protected void getcookie (HttpServletRequest req,HttpServletResponse resp)throw ServletException,
,IOException {
cookie[] cookies=req.getcookies();
for(cookie cookie:cookies){
//getName方法返回cookie的key(名)
//getValue 方法返回cookie的value值
resp.getWrite().write(“cookie[”+cookie.getName()+"="+cookie.getValue()+"]
")
}
cookie IWantcookie=cookieUtils.findcookie(“key1”,cookies);
if(IWantcookie!=null){
resp.getWrite().write(“找到了需要的cookie”);
}
}
----cookie值的修改
方案一:
1.先创建一个要修改的同名(值的就是key)的cookie对象
2.在构造器,同时赋予新的cookie值
3.调用response.addcookie(cookie);
方案二:
1.先查找需要修改的cookie对象
2.调用setValue()方法F悆的cookie值
3.调用response.addcookie()通知客户端保存修改
浏览器查看cookie:
谷歌浏览器如何查看cookie:

----cookie生命控制
cookie的声明控制指的是如何管理cookie什么时候被销毁(删除)
setMaxAge()
正数,表示在指定的秒数后过期
负数,表示浏览器乙肝,cookie就会删除(默认值是-1)
零,表示马上删除

//设置存活一小时
protected void life3600(HttpServletRequest req,HttpServletresponse resp)throws ServletException
,IOEception{
cookie cookie=new New(“life3600”,“life3600”);
cookie.setMaxAge(60*60);//设置cookie一小时后自动删除.无效
resp.addcookie(cookie);
resp.getWrite().write(“已经创建了一个存活一小时的cookie”)
}

//删除一个cookie
protected void deleteNow(HttpServletRequest req,HttpResponse resp)throw ServletException,
IOEception{
//先找到你要删除的cookie对象
cookie cookie=cookieUtils.findcookie(“key4”,req.getcookies());
if(cookie!=null){
//diaoyong setMaxAge(0)
cookie.setMaxAge(0);
//调用response,addcookie(cookie)
resp.addcookie(cookie);
resp.getWriter().write(“key4de cookie已经被删除”);
}
}
默认的会话级别cookie
protected void defaultLife(HttpServletRequest req ,HttpServletresponse resp)throw ServletException,
IOException{
cookie cookie=new cookie(“defaultLife”,“defaultLife”);
cookie.setMaxAge(-1);//设置存活时间
resp.addcookie(cookie);
}
----cookie练习—免输入用户名登录

login,jsp页面

用户名:

密码:



LoginServlet程序:
protected void doget(HttpServletRequest req ,HttpServletResponse resp)throws ServletException,
IOEception{
String username=req.getParamater(“username”);
String password=req.getParameter(“password”);if(“wzg168”.equals(username)&&“123456”.equals(password))
{
//登陆成功
cookie cookie=new cookie(“username”,username);
cookie.setMaxAge(606024*7);//当前cookie一周内有效
resp.addcookie(cookie);
System.out.println(“登录成功”);
}else{
//登录失败
System.out.println(“登录失败”);
}
}

-----------------------------------------------------------------------------------------------------
Session会话

什么是Session会话?
1.Session就是一个接口(HttpSession).
2.Session就是会话,他就是用来维护一个客户端和服务器之间关联的一种技术
3.每个用户端都有自己的一个session会话
4.session会话中,我们经常用来保存用户登录之后的信息

如何创建Session和获取(id号,是否为新)

如何创建和获取Session.他们的Apu是一样的

request.getSession()
第一次调用是:创建Session会话
之后调用都是:获取前面创建好的Session会话对象.
IsNew():判断到底是不是刚创建出来的(新的)
true表示刚创建
false表示获取之前创建

每个会话都有一个身份证号,也就是ID值.而且这个ID是唯一的
getid()得到Session的会话id值

Session域数据的存储

protected void setAttribute(HttpSercletRequest req,HttpServletResponse resp)throws ServletException,
IOEception{
rep.getSession().setAttribute(“key1”,“value1”);
resp.getWriter().write(“已经往Session中保存了数据”);
}

protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
Object attribute = req.getSession().getAttribute(“key1”);
resp.getWriter().write(“从 Session 中获取出 key1 的数据是:” + attribute);
}

----Session声明周期控制
public void setMaxInactiveInterval(int interval)设置 Session的超时时间(以秒为单位),超过指定时长
,Session就会被销毁.
值为整数时,设定Session的超时时长.
负数表示不超时(极少使用)

public int getMaxInactiveinterval()获取Sessionde 超时时间
public void invalidate() 让当前Session会话马上无效.

Session 默认的超时时长是多少?
Session默认的超时时间长为30分钟.

因为在Tomcat服务器的配置文件web.xml中默认有一下的配置,他表示配置了当前Tomcat服务器
下所有的Session超时配置默认时长为:30分钟.

30

如果说,你希望你的web工程,默认的Session的超时时长为其他时长.你可以在你自己的web.xml配置
文件中做以上相同配置,就可以修改你的web工程所有session的默认超时时长

20

如果你想只修改个别 Session 的超时时长。就可以使用上面的 API。
setMaxInactiveInterval(int interval)来进行单独的设置。
session.setMaxInactiveInterval(int interval)单独设置超时时长。

Session 超时的概念介绍

示例代码:
protected void life3(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// 先获取 Session 对象
HttpSession session = req.getSession();
// 设置当前 Session3 秒后超时
session.setMaxInactiveInterval(3);
resp.getWriter().write(“当前 Session 已经设置为 3 秒后超时”);
}

Session 马上被超时示例:

protected void deleteNow(HttpServletRequest req, HttpServletResponse resp) throws ServletException,
IOException {
// 先获取 Session 对象
HttpSession session = req.getSession();
// 让 Session 会话马上超时
session.invalidate();
resp.getWriter().write(“Session 已经设置为超时(无效)”);
}

----浏览器和 Session 之间关联的技术内幕
Session 技术,底层其实是基于 cookie 技术来实现的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/632313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号