一、四大域对象所对应的的对象
域对象
存取用法(Servlet存—>jsp取)
request.getRequestDispatcher("/demo06.jsp").forward(request, response);
作用范围
ServletContext
包含application和config
getServletContext().setAttribute("name","wangwu");
${applicationScope.name}
整个web项目,多个servlet可以共享数据。 Sessionrequest.getSession().setAttribute("name","lisi");
${sessionScope.name}
会话一次会话 Request
request.setAttribute("name","zhangsan");
${requestScope.name}
整个请求链(请求转发也存在)PageContextPageContext方法:set()、get()、remove()
pageContext.findAttribute(“key”) 在这四大域对象中依次查找
一个jsp页面 ,一般用来jsp标签的数据传输注意: 从上往下,作用范围由大到小。
1.代理其他的三大域对象 pageContext.setAttribute(“key”,”value”,pageContext.SESSION_SCOPE); 存放 在session中代理了session
2.全域查找 pageContext.findAttribute(“key”) 在这四大域对象中依次查找
3.获取其他的jsp八大内置对象
pageContext 中代表域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
findAttribute方法,在四大域中搜寻属性,搜寻的顺序是page域、request域、session域、application域,从小域到大域开始搜索,如果搜索到就直接获取该值,如果所有域中都找不到,返回一个null(与el表达式不同,此处返回null,对网页是不友好的)
二、cookie和session
1.cookie
Cookie , 浏览器保存用户数据的技术 .
创建 ,在 服务器端 new Cookie对象 ,通过响应发送到 浏览器.
// 创建 Cookie Cookie cookie = new Cookie("username", "tom"); Cookie cookie2 = new Cookie("Time", System.currentTimeMillis()+"");
Cookie cookie3 = new Cookie("username", "jack");
// 添加 多个Cookie response.addCookie(cookie); response.addCookie(cookie2);
// cookie3 与 cookie key 重名了 response.addCookie(cookie3);
// 注意 : 如果key重复, 响应时是多个 , 浏览器的保存最后一个value.
// 获取 cookie数组 Cookie[] cookies = request.getCookies();
System.out.println(cookies);
// 遍历数组 for (Cookie cookie : cookies) { System.out.println(cookie); // 获取 cookie名字 与 值 System.out.println(cookie.getName()+"==" + cookie.getValue());
}
cookie设置
时间 : 默认cookie是关闭浏览器,一次会话结束就消失了 . 通过setMaxAge(second)秒值 ,生命时间
// 创建 Cookie c = new Cookie("time" , System.currentTimeMillis()+"" );
// 设置时间 c.setMaxAge(60); // 60秒 一分钟
//添加到 response response.addCookie(c);
路径 : 默认cookie就是当前web应用 .当前应用中的生成Cookie,在访问应用中其他资源,也会提交 .
setPath(path) 通过设置路径,对cookie进行筛选 .
// 设置 cookie Cookie cookie = new Cookie("password" , "abcdef"); // 设置 cookie 路径 cookie.setPath("/web11/aaa"); response.addCookie(cookie);
// 注意 : 路径写成 绝对路径, /web11 开始
// 创建 Cookie Cookie username = new Cookie("username", "");
//1. 设置时间为0 username.setMaxAge(0);
// 2.路径一致 ,默认路径可以省略
// 3. 响应携带 response.addCookie(username);
Session, 服务器保存用户数据的技术
获取session , 依靠request的getSession . Session 对象服务器创建 , 通过 request获取,
当getSession 方法时, 判断请求中,是否有JSESSIONID, 如果没有,必然创建新的session .
如果有JSESSIONID ,通过id查询对应Session ,找到了就返给你, 找不到 创建新的session .
代码演示:
存储数据
// 获取Session HttpSession session = request.getSession();
// 保存数据 session.setAttribute("username" , "tom");
获取数据
// 获取 session HttpSession session = request.getSession();
// 获取 数据 ,通过 key 获取value Object username = session.getAttribute("username");
System.out.println(username);
session持久化
依靠cookie生命的延长 , 保证 JSESSIONID 存在 ,所以 可以 关闭浏览器,依然访问Session
session持久化
// 1. 获取 session HttpSession session = request.getSession();
// 2. 获取 JSESSIONID String id = session.getId(); System.out.println(id);
// 3. 把 id 保存 一个 Cookie中 , 键 名称 必须 JSESSIONID Cookie c = new Cookie("JSESSIONID", id);
// 4. 设置时间 c.setMaxAge(60 * 60 );
// 5. response 响应 到浏览器 response.addCookie(c);
cookie
session
保存位置
浏览器
服务器
数据类型
String
对象
安全行
不安全
安全
转载于:https://www.cnblogs.com/hujunwei/p/10951105.html
相关资源:数据结构—成绩单生成器