问题:不同的请求使用相同的请求数据,但是请求结束后,数据就销毁了。
其他请求,需要将相同的公共的数据,重新发送。
解决以上问题,可以采用,浏览器端数据存储技术 cookie
1.cookie
服务器为了辨别用户的身份,就给每一个客户端办了一个通行证。
那么,不同的浏览器进行访问时,都必须携带自己的通信证。
这样服务器就可以从通行证上获得客户的身份。
解决:不同请求之间的数据共享问题。
使用cookie:
//创建cookie对象,并设置其路径,有效时间,写到浏览器中
Cookie c=new Cookie("key","value");
c.setPath("/");
c.setMaxAge(单位秒);
response.addCookie(c);
//遍历cookie
Cookie[] cookies=request.getCookies();
//取Cookie对象:c 中的key c.getName();
value c.getValue();
//删除指定cookie
设置其有效时间为0,就可以立即删除cookie对象。
案例:登录界面上:记住登录状态业务。
2.session:服务器端技术;
解决:同一个用户之间不同请求的数据共享问题。
session:开始于浏览器访问应用程序,结束于浏览器关闭
session.invalidate();
session默认有效时间30分钟
session.setAttribute("key",Object);//存放用户信息
session.getAttribute("key");//需要强制类型转化
3.EL :简化对作用域通信对象(pageContext<request< session< application变量的访问。
${} 取特定空间中变量值 ${pageScope.key}
取实体类值 ${实体类.属性}
${empty 变量}判断变量是否为null
取url?state=110;----> ${param.state}
JSTL:取代jsp界面上嵌入的java代码以提高程序的可读性。
//声明特定空间内变量
<c:set var="" value="" scope=""></c:set>
//判断 与java中的if功能类似
<c:if test="">
标签体
</c:if>
//类似于java中的if(){}else{}
<c:choose>
<c:when test="">
标签体
</c:when>
<c:otherwise>
标签体
</c:otherwise>
</c:choose>
//循环
<c:forEach items="被迭代集合或数组" var="str">
//将迭代元素输出
${str}
</c:forEach>