码迷,mamicode.com
首页 > 其他好文 > 详细

cookie

时间:2019-03-10 00:01:03      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:handler   pat   handle   属性   net   单位   url   接收   change   

cookie是在客户端记录保存用户信息的,跟踪整个会话

给客户端发送一个通行证,每个客户一个

cookie 本质是一小段的文本信息 如:

  原理

    *客户端访问服务器的时候,服务端就会给客户端发一个身份证,客户端就会保存下这个身份证,

    下次客户端再次访问的时候就可以携带这个身份证来访问服务器

  ***服务器在刚开始被访问的时候就会默认有一个Cookie返回给客户端;

 

添加数据

  public void addCookie(Cookie cookie);

获取数据

  public Cookie[] getCookies();//注意这里返回的是数组,因为Cookie是可以有多个的

设置Cookie有效期

  public void setMaxAge(int expiry);  //expiry 秒 逾期   值为0 代表删除Cookie

【登录页面 客户端】

<%--
Created by IntelliJ IDEA.
User: DELL
Date: 2019/3/2
Time: 15:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="doLogin.jsp" method="get">
用户名:<input type="text" name="name" required/><br/> <%--这里的 required 属性是必填项的意思--%>
密码:&nbsp;<input type="password" name="pwd"/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="xuan" value="love1">哟用、<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="xuan" value="love2">哈哈、<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="xuan" value="love3">呵呵、<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="xuan" value="love4">嘻嘻<br/>
&nbsp;&nbsp;&nbsp;<input type="submit" value="注册"/><br/>
<%
String register = (String)request.getAttribute("register");//获取转发后的值
if(register!=null){
out.print(register);
}
out.print(session.getId());
%>
</form>
</body>
</html>
【接收登录验证 服务端】
<%--
Created by IntelliJ IDEA.
User: DELL
Date: 2019/3/9
Time: 11:32
To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.CookieHandler" %>
<html>
<head>
<title>Title</title>
</head>
<body>
欢迎你
【中文乱码处理】 如:客户端以post方式提交的话
<%
request.setCharacterEncoding("UTF-8");//请求的编码方式设置为utf-8
%>
<%
response.setCharacterEncoding("utf-8");//设置相应时的编码方式为utf-8
%>

<%
//对面客户端提交数据给我这边,我现在要在这个服务端获取客户端提交的数据
//通过一个内置对象 getParameter获取单个值 getParameterValues()获取多个值
String name = request.getParameter("name");//获取单个值
String pwd = request.getParameter("pwd");//获取单个值
String[] xuan = request.getParameterValues("xuan");//获取多个值【区别 getParameter 多了个values】
%>


<br/> 获取到的信息如下:<%=name%> <br/><%=pwd%>
<br>用户选择的多个值内容是(爱好):
<%
if (xuan!=null){
for(String x:xuan){
out.print("<br/>"+x);
}
}else{
out.print("您没有选择多个值,如爱好");
}
%>
<%
//【练习】模拟实现自动在用户名这个框内填写 用户名 不需要用户填写
if(name.equals("admin")){//如果用户名是admin则注册失败,因为已经有了这个用户名
//提示用户注册失败
request.setAttribute("register","注册失败");
//跳转到原注册页面【转发】 通过请求对象 获得一个 内部的分发器,跳转到***.jsp去,并携带我的request && response
request.getRequestDispatcher("login.jsp").forward(request,response);
}else{//如果不是admin则注册成功,跳到注册成功页

session.setAttribute("name",name);//设置了session的属性和值
// 【拓展内容】如果用户输入框有中文怎么办呢 需要编码和解码
name=URLEncoder.encode(name,"utf-8");//按照utf-8的格式去编码这个 name再传过去 同样的那边接收的话就需要解码了
//创建一个cookie并发送给客户端
Cookie cookie = new Cookie("cookieKey", name);
//设置cookie有效期
cookie.setMaxAge(60*60);//单位秒 这里是60分钟的意思
cookie.setPath("/");//表示设置cookie路劲,以防等会找不到路径,这个意思是
//整个项目下都可以找到这个cookie
response.addCookie(cookie); //将用户输入的用户名传到Cookie中并发送给客户端



response.sendRedirect("loginSucceed.jsp");
}
//request.getContextPath() 这个方法是获取当前页面的位置的上下文路径
%>




</body>
</html>
【验证通过后】
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.net.URLDecoder" %><%--
Created by IntelliJ IDEA.
User: DELL
Date: 2019/3/9
Time: 14:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录成功</title>
</head>
<body>
注册成功页面<br>
<%
//现在获取cookie值
String value ="";//取出来的值
Cookie[] cookies = request.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){//将cookie取出来匹配
if(cookie.getName().equals("cookieKey")){//寻找匹配的key 注意这里是get它的key的name 不是用户名 而是key
value = cookie.getValue();
//【拓展内容】因为那边已经编码了传过来,所以这边需要解码
value= URLDecoder.decode(value,"utf-8");
}
}
}
%>
用户名:<input type="text" name="name" value="<%=value %>"/><br/>
欢迎你,
<%
Object name = session.getAttribute("name");//注意这里取出来的是Object类型的,所以需要转型
if(name!=null){
out.print(name.toString());
}
%>登录 <br>
<a href="loginOut.jsp">注销</a>让会用点击注销后 使session过期
打印sessionId<% out.print(session.getId());%>
</body>
</html>
 
 

cookie

标签:handler   pat   handle   属性   net   单位   url   接收   change   

原文地址:https://www.cnblogs.com/xinjingsiyuan/p/10503388.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!