Jsp状态管理
• http协议无状态性
无状态是指,当游览器发送请求给服务器的时候,服务器响应客户端请求。
但是当同一个游览器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个游览器。
简单说,就是服务器不会去记得你,所以就是无状态协议。
• 保存用户状态的两大机制
Session
Cookie
Cookie概述
• Cookie简介
Cookie中文名称“小甜点”,是Web服务器保存在客户端的一些列文本信息。
典型应用一:判定注册用户是否已经登录网站
典型应用二:“购物车”的处理
典型应用三:视频播放器的历史记录
典型应用四:记住用户名和密码功能
• Cookie的作用
对特定对象的追踪
保存用户网页游览记录与习惯
简化登录
安全风险:容易泄露用户信息
• Cookie的创建与使用
创建Cookie对象
Cookie newCookie = new Cookie(String key, Object value);
写入Cookie对象
response.addCookie(newCookie);
读取Cookie对象
Cookie[] cookies = request.getCookies();
• Cookie常用方法
设置cookie的有效期,以秒为单位。
void setMaxAge(int expiry)
在cookie创建后,对cookie进行赋值
void setValue(String value)
获取cookie的名称
String getName()
获取cookie的值
String getValue();
获取cookie的有效时间,以秒为单位
int getMaxAge();
• 创建cookie对象,并将对象保存在客户端游览器中
//创建cookie对象 Cookie cookie01 = new Cookie("name", "Ivy"); //设置Cookie的生命周期,如果设置为负值的话,关闭浏览器就失效。如果设为0,表示取消该cookie。 cookie01.setMaxAge(60*30); Cookie cookie02 = new Cookie("pass", "123"); //向游览器输出Cookie response.addCookie(cookie01); response.addCookie(cookie02);
• 从游览器读取该网站存放的所有cookie对象
//读取所有的Cookie Cookie cookies[] = request.getCookies(); if(cookies != null){ out.print(cookies.length+"<br>"); for(int i=0; i<cookies.length; i++){ out.print(cookies[i].getName()+"<br>") ; out.print(cookies[i].getValue()+"<br>"); } }
• 从游览器中删除该网站存放的指定cookie对象
//删除游览器中的cookie Cookie cookie01 = new Cookie("name", "Ivy"); cookie01.setMaxAge(0); response.addCookie(cookie01);
• Session与Cookie的对比
cookie数据存放在客户的浏览器上,session数据放在服务器上。
cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。
session会在一定时间内保存在服务器上。当访问增多,会比较占用服务器的性能考虑到减轻服务器性能方面,应当使用cookie。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点多保存20个cookie。
建议:将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
• 案例
cookie在登录中的应用
• 练习
使用cookie通知用户游览该网站的次数
指令与动作
• include指令
语法
<%@ include file="URL"%>
• include动作
语法
<jsp:include page="URL" flush="true|false" />
page:要包含的页面
flush:被包含的页面是否从缓冲区读取
• include指令与include动作区别
• <jsp:forward>动作
语法
<jsp:forward page="URL" />
等同于
request.getRequestDispatcher("/url").forward(request, response);
• <jsp:param>动作
语法
<jsp:param name="参数名" value="参数值">
常常与<jsp:forward>一起使用,作为其子标签。
例如
test01.jsp
<body> <form action="test02.jsp" method="post"> <input type="text" name="user"> <input type="submit" value="提交"> </form> </body>
test02.jsp
<jsp:forward page="test.jsp"> <jsp:param value="1111" name="pass"/> </jsp:forward>
test.jsp
名字:<%=request.getParameter("user") %> 密码:<%=request.getParameter("pass") %>
热点新闻