您的位置:首页 > Web前端 > JavaScript

JSP状态管理

2017-01-17 16:36 405 查看
http协议的无状态性:

无状态指的是当浏览器向服务端发送请求时,服务器响应请求。当同一浏览器再次向服务端发送请求时,服务器不知道它就是刚才的浏览器。简单地说,服务器不会记住你。

保存用户状态的两大机制:Session和Cookie

Cookie是web服务器保存在客户端的一系列文本信息

典型应用一:判断注册用户是否已经登陆网站

典型应用二:”购物车”的处理

创建与使用Cookie:

a).创建Cookie:

Cookie newCookie=new Cookie(String key,Object value);

b).写入Cookie对象:

response.addCookie(newCookie);

c).读取Cookie对象:

Cookie[] cookies = request.getCookies();

d).设置cookie的有效期,以秒为单位:

void setMaxAge(int expiry)

e).cookie创建后,对cookie进行赋值:

void setValue(String value)

f).获取cookie的名称:

String getName()

g).获取cookie的值:

String getValue()

h).获取cookie的有效时间,以秒为单位:

int getMaxAge()



Cookie在登录中的应用:

使用URLEncoder,先导入java.net.*

servlet:

request.setCharacterEncoding("utf-8");//首先判断用户是否选择了记住登陆状态
String[] isUseCookies=request.getParameterValues("isUseCookie");
if(isUseCookies!=null&&isUseCookies.length>0)
{
String username=URLEncoder.encode(request.getParameter("username"),"utf-8");//把用户名和密码保存在Cookie对象里面
String password=URLEncoder.encode(request.getParameter("password"),"utf-8");//使用URLEncoder解决无法在Cookie中保存中文字符串的问题
Cookie usernameCookie=new Cookie("username",username);
Cookie passwordCookie=new Cookie("password",password);
usernameCookie.setMaxAge(864000);
passwordCookie.setMaxAge(864000);//设置最大期限为10天
response.addCookie(usernameCookie);
response.addCookie(passwordCookie);
}
else
{
Cookie[] cookies=request.getCookies();
if(cookies!=null&&cookies.length>0)
{
for(Cookie c:cookies)
{
if(c.getName().equals("username")||c.getName().equals("password"))
{
c.setMaxAge(0);//设置Cookie失效
response.addCookie(c);//重新保存
}
}
}
}


jsp:

<body>
<%
request.setCharacterEncoding("utf-8");
String username="";
String password="";
Cookie[] cookies=request.getCookies();
if(cookies!=null&&cookies.length>0)
{
for(Cookie c:cookies)
{
if(c.getName().equals("username"))
{
username=URLDecoder.decode(c.getValue(),"utf-8");
}
if(c.getName().equals("password"))
{
password=URLDecoder.decode(c.getValue(),"utf-8");
}
}
}
%>
<div>
<form action="index.jsp" method="post">
<input name="username" type="text" value="<%=username%>"/>
<input name="password" type="password" value="<%=password%>"/><br />
<input name="" type="submit" value="登陆"/><br />
<input id="useCookie" name="isUseCookie" type="checkbox" value=""/>记住登陆状态
</form>
</div>
</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cookie