java_session/cookie
2021-02-02 本文已影响0人
走停2015_iOS开发
1.session 为啥使用会话:服务器无法识别http请求的出处(不知道来自于哪一个终端) 他只会接受一个请求信息 所以就存在一个问题 将用户的响应发送给其他人 必须有一种技术来让服务器知道请求来自哪里 这就是会话技术。 会话: 就是客户端和服务端之间的一系列连续的请求和响应的过程 打开浏览器进行操作到关闭浏览器的过程 会话状态:服务器和浏览器在会话过程中产生的状态信息 借助于会话状态 服务就能够吧属于同一次会话的一系列请求和响应关联起来
会话实现的俩种方式
- session 在服务端存储
- cookie 在客户端存储
session常用方法
获取当前sessionId
String getId()
//设置session的失效时间 单位为秒
void setMaxNactiveInterval
//获取失效时间 默认1800 半个小时 int代表秒
int getMaxInactiveInterval
//设置seesion立即失效 退出登录用到
void invalidate
//通过键值对的形式来存储数据和获取和移除
//request的生命周期短 Attribute不用remove
//session生命周期长 Attribute需要用完remove
void setAttribute(a,b); get remove
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
if (username.equals(defaultName) && pwd.equals(defaultPwd)){
// req.setAttribute("username",username);
req.getSession().setAttribute("username",username);
//此处不需要用转发 因为存到session里面 ,用不到servletRequest 所以可以用重定向
//req.getRequestDispatcher("welcome.jsp").forward(req,resp);
resp.sendRedirect("welcome.jsp");
}else {
resp.sendRedirect("sessionLogin.jsp");
}
}
2.cookie: 是服务端在http响应中附带给浏览器的一个小文本文件,一旦浏览器保存某个cookie 在之后的请求和响应过程中 会将此cookie来回传递 这样就可以通过cookie这个载体完成客户端和服务端的数据
cookie 不建议存储中文
//创建cookie 响应到客户端
Cookie cookie = new Cookie("name","zhangsan");
response.addCookie(cookie);
//读取cookie
Cookie[] cookies = request.getCookies();
for (Cookie c:cookies){
response.getWriter().write(c.getName()+"<br>");
response.getWriter().write(c.getValue()+"<br>");
}


- 常用方法
//设置cookie的有效时间 单位为秒
void setMaxAge(int age)
//获取cookie的有效时间
int getMaxAge()
Session和Cookie的区别
-
session:
1.保存在服务器
2.保存的是Object
3.会随着会话的结束而销毁
4.保存重要的信息
5.生命周期 服务端只要主要重启就销毁 浏览器只要关闭就销毁 -
cookie(看视频进度)
1.保存在浏览器
2.保存的是字符串 最好不要是汉字
3.可以长期保存在浏览器 与会话无关
4.保存不重要的信息
5.生命周期:不随服务端的重启而销毁 我们可以通过getMaxAge
方法设置有效期