jsp状态管理:因为http的无状态性,所以可以用session或cookie技术保存用户信息,而cookie可以记录信息可以判定注册用户是否已经登录网站,购物车的应用,浏览记录,但是有安全风险
创建cookie
Cookie cookie=new Cookie(String key,Object value);
写入cookie
response.addCookie(cookie);
读取cookie对象
Cookie[] cookies=request.getCookies();
设置cookie的有效期,以秒为单位
setMaxAge(int expiry);
对cookie进行赋值
setValue(String value);
获得值
getValue();
获得有效期
getMaxAge();
实现用户登录cookie记录用户名与密码
界面jsp
<body>
<%//用来处理显示最近的登录的用户名与密码,先判断,如果cookie不为空,就将数据显示到输入框,否则就显示空
Cookie[] cookies = request.getCookies();
String name="";
String pass="";
if(cookies!=null&&cookies.length>0) {
if (cookies != null) {
for (Cookie c : cookies) {
if (c.getName().equals("name")) {
name = c.getValue();
}
if (c.getName().equals("pass")) {
pass = c.getValue();
}
}
}
}
%>
<p>用户登录界面</p>
<form action="failure.jsp" method="post">
用户名:<input type="text" name="user" value="<%=name%>"></br>//value用来显示输入框的内容
密 码:<input type="password" name="pass" value="<%=pass%>"></br>
<input type="checkbox" name="isCookie">是否记住登陆状态
<br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form><br>
</body>
处理逻辑页面
<head>
<title>404</title>
</head>
<body>
<%
String [] isUseCookie=request.getParameterValues("isCookie");//获得选择的内容
if(isUseCookie!=null&&isUseCookie.length>0){//如果不为空,代表选择了记住用户的密码和账号,则进行进行加入Cookie
String name=request.getParameter("user");//获得用户名
String pass=request.getParameter("pass");//获得密码
Cookie nameCookie=new Cookie("name",name);//封装进cookie
Cookie passCookie=new Cookie("pass",pass);
nameCookie.setMaxAge(864000);//设置最大生存日期
passCookie.setMaxAge(864000);
response.addCookie(nameCookie);//加入response
response.addCookie(passCookie);
}else {//如果没有选择记住最近登录状态,就查看之前有没有记录信息,有点话,将其毁灭
Cookie[] cookies =request.getCookies();
if(cookies!=null) {
for (Cookie c : cookies) {
if(c.getName().equals("name")||c.getName().equals("pass")){
c.setMaxAge(0);
response.addCookie(c);
}
}
}
}
%>
用户名:<%=request.getParameter("user")%><br>
密码:<%=request.getParameter("pass")%>
</body>
在这里说一下session与cookie的区别
session: 是在服务器端保存用户信息,而且保存是object类型,随着回话的结束,存储的数据就会销毁,用来保存重要的信息
cookie: 在客户端保存用户信息,保存的是String类型,可以长期保存信息在客户端,用来保存不重要的信息