JSP中cookie的使用方法(用户登入_客户端读取及发送)
2014-11-26 15:03
495 查看
JSP中cookie的使用方法(用户登入_客户端读取及发送):
一、向客户程序发送cookie
1、 创建cookie对象
Cookie c = new Cookie(“userId”,”landril”);
2、 设置最大时效
默认该cookie是存储在浏览器的内在中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。 c.setMaxAge(60*60*24); //一天,如果设置为0则是删除该cookie
3、向客户端添加Cookie
将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定 的Set-Cookie头信息,而是创建新的头信息。
response.addCookie(c);
注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应头信息,即发送到客户程序。
二、从客户端读取cookie
1、 获取Cookie数组
调用HttpServletRequest的getCookies得到一个Cookie对象的数组
2、 对数组进行循环,调用cookie的getName方法,获取具体的cookie的值
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(int i=0;i <cookies.length;i++){
Cookie c = cookies[i];
if(“userId”.equals(c.getName())){
System.out.println(c.getValue());
}
}
}
三、使用Cookie记录访问数
1.用户第一次访问网页时的操作
...
out.println("你是第1 次登录该网页。在此之前没有相关Cookie信息。"); //打印登录信息
cookie=newCookie("accpCount", "1"); //Cookie对象,并设置名称与值
cookie.setMaxAge(60*60*24); //设置最长保留时间为1天
response.addCookie(cookie); //添加到响应头信息,返回到客户端
...
2.用户非第一次访问网页时的操作
...
Cookie[] cookies =request.getCookies(); //从request对象中获取客户端Cookie信息
int count = 0; //初始访问次数为0
Cookie cookie=null; //定义Cookie对象
if (cookies != null) { //判断request对象中是否存在Cookie信息
for (int i = 0; i <cookies.length; i++) { //使用for循环遍历Cookie数组
cookie = cookies[i]; //获取数组元素
if("accpCount".equals(cookie.getName())) { //判断Cookie的名称是否为"accpCount"
count =Integer.parseInt(cookie.getValue())+1; //如果相等,加1
cookie.setValue(count+""); //重新设置Cookie对象的value值
cookie.setMaxAge(60*60*24); //设置保留最长时间
response.addCookie(cookie); //返回到客户端
out.println("你是第"+ count + "次登录该网页。");
break;
}
}
}
...
3.完整的使用Cookie对象获取客户Cookie数据,并通过Cookie名称取出相应的值,在页面上显示登录次数
...
public void doPost(HttpServletRequestrequest, HttpServletResponse response)
throws ServletException, IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out =response.getWriter();
out .println("");
out.println("");
out.println(" ");
out.println(" ");
Cookie[] cookies =request.getCookies();
int count = 0;
boolean bool=true;
Cookie cookie=null;
if (cookies != null) {
for (int i = 0; i < cookies.length;i++) {
cookie = cookies[i];
if("accpCount".equals(cookie.getName())) {
count =Integer.parseInt(cookie.getValue())+1;
cookie.setValue(count+"");
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
out.println("你是第"+ count + "次登录该网页。");
bool=false;
break;
}
}
}
if(bool){
out.println("你是第1 次登录该网页。在此之前没有相关Cookie信息。");
cookie=newCookie("accpCount", "1");
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
}
out.println(" ");
out.println("");
out.flush();
out.close();
}
...
4.运行效果图
四、使用Cookie记录用户名和密码
一、用户登录操作
在用户填写登录数据后,提交表单进行登录验证,如果用户名和密码正确,则把用户名和密码保存在客户端。页面如图1所示。
图1 保存Cookie信息的登录页面
实现代码如下所示。
...
response.setContentType("text/html;charset=gbk");
//获取用户名
String userName = request.getParameter("username");
//获取用户密码
String password =request.getParameter("password");
//验证用户是否合法
if("accp".equals(userName) &&"accp".equals(password)) {
//如果合法,把用户名和密码保存在客户端Cookie中
//获取客户选择的Cookie保存时间
String cookieDate =request.getParameter("cookieDate");
int date = 0;
if (cookieDate != null&& cookieDate != "")
date =Integer.parseInt(cookieDate);
//创建用户名Cookie对象
Cookie cookieName =new Cookie("accpLoginName", userName);
//设置Cookie保存时间
cookieName.setMaxAge(date);
//添加到客户端
response.addCookie(cookieName);
//创建用户密码Cookie对象
Cookie cookiePass =new Cookie("accpLoginPass", password);
//设置保存Cookie时间
cookiePass.setMaxAge(date);
//添加到客户端
response.addCookie(cookiePass);
response.sendRedirect("success.jsp");
} else {
response.sendRedirect("fail.jsp");
}
...
二、用户再次登录时操作
服务器首先读取客户端Cookie信息,如果存在用户名和密码数据,则直接登录,否则显示登录页面。
实现代码如下所示。
response.setContentType("text/html;charset=gbk");
//用户名和密码是否存在以及合法的判断参数
boolean bool=false;
//获取客户端Cookie数组
Cookie[] cookies =request.getCookies();
//判断客户端是否存在Cookie对象
if (cookies != null) {
//预定义保存用户名和密码的变量
String userName ="";
String password ="";
//遍历Cookie数组
for (int i = 0; i <cookies.length; i++) {
//取得每一个Cookie对象
Cookie cookie= cookies[i];
//判断Cookie的名称是否等于"accpLoginName"
if("accpLoginName".equals(cookie.getName())) {
userName = cookie.getValue();
}
//判断Cookie的名称是否等于"accpLoginPass"
if("accpLoginPass".equals(cookie.getName())) {
password = cookie.getValue();
}
}
//判断用户名和密码是否合法
if("accp".equals(userName) &&"accp".equals(password))
bool=true;
}
//判断对客户端的Cookie的操作是否成功,成功则显示登录成功后的页面,
//否则,重定向到登录页面
if(bool)
response.sendRedirect("success.jsp");
else
response.sendRedirect("login.jsp");
js设置Cookie
//页面测试:
<script type="text/javascript"src="/theme/js/mycenter/jquery.pack.js"></script>
<script type="text/javascript"
src="http://192.168.190.140:8088/sfbm/theme/js/collect/visit.js?cID=${param.u}"
charset="UTF-8">
</script>
$(function(){//(暂时不区分多个用户的情况)
varparams = getParams();
varvcID = params['cID'];//代码ID
if(vcID)
{
varcd = new Date().getTime();
$.get("http://localhost:8088/sfbm/collect/visit.action",{"cID": vcID, t: cd});//记录visit
//varrID = getCookie("clct_vst_rID");//行为ID
varfDt = getCookie("clct_vst_fDt");//首次访问时间
if(fDt== undefined || fDt == null)
{
// setCookie("clct_vst_rID", cd,30);//行为ID
setCookie("clct_vst_fDt",cd, 30);//首次访问时间
setCookie("clct_vst_cID",vcID, 30);//访问的产品ID
}else{
//更新有效时间
// setCookie("clct_vst_rID", rID,30);//行为ID
setCookie("clct_vst_fDt",fDt, 30);//首次访问时间
setCookie("clct_vst_cID",vcID, 30);//访问的产品ID
}
}
functiongetParams()
{
varsc=document.getElementsByTagName('script');
var paramsArr=sc[sc.length-1].src.split('?')[1].split('&');
var args={}, argsStr=[], param, t, name,value;
for(var i=0, len=paramsArr.length;i<len; i++){
param=paramsArr[i].split('=');
name=param[0], value=param[1];
if(typeof args[name]=="undefined"){//参数尚不存在
args[name]=value;
}else if(typeofargs[name]=="string"){ //参数已经存在则保存为数组
args[name]=[args[name]]
args[name].push(value);
}else{ //已经是数组的
args[name].push(value);
}
}
return args;
}
//写cookies
functionsetCookie(name, value, days)
{
if(days== undefined){
document.cookie= name + "=" + escape(value);
}else{
varexp = new Date();
exp.setTime(exp.getTime()+ days*24*60*60*1000);
document.cookie= name + "="+ escape(value) + ";expires=" +exp.toGMTString();
}
}
//读取cookies
functiongetCookie(name)
{
var arr,reg=new RegExp("(^|)"+name+"=([^;]*)(;|$)");
if(arr = document.cookie.match(reg))
{
returnunescape(arr[2]);
}
else
{
returnnull;
}
}
});
1:在客户端将用户的信息放入到Cookie中
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName,"Test_Content"); // 创建一个Cookie对象
cookie.setMaxAge(10);
response.addCookie(cookie);
2:从Cookie中取到用户的信息和sessionID
// 得到sessionID
StringsessionID = request.getSession(true).getId(); // 从session中得到 JSESSIONID
System.out.println("sessionID --->"+sessionID);
// 从cookie中得到JSESSIONID 值
Cookiecookies[] = request.getCookies();
if(cookies!=null){
for(inti=0;i<cookies.length;i++){
Cookiecookie = cookies[i];
System.out.println(cookie.getName()+"--->"+cookie.getValue());
}
}
一、向客户程序发送cookie
1、 创建cookie对象
Cookie c = new Cookie(“userId”,”landril”);
2、 设置最大时效
默认该cookie是存储在浏览器的内在中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。 c.setMaxAge(60*60*24); //一天,如果设置为0则是删除该cookie
3、向客户端添加Cookie
将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定 的Set-Cookie头信息,而是创建新的头信息。
response.addCookie(c);
注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应头信息,即发送到客户程序。
二、从客户端读取cookie
1、 获取Cookie数组
调用HttpServletRequest的getCookies得到一个Cookie对象的数组
2、 对数组进行循环,调用cookie的getName方法,获取具体的cookie的值
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(int i=0;i <cookies.length;i++){
Cookie c = cookies[i];
if(“userId”.equals(c.getName())){
System.out.println(c.getValue());
}
}
}
三、使用Cookie记录访问数
1.用户第一次访问网页时的操作
...
out.println("你是第1 次登录该网页。在此之前没有相关Cookie信息。"); //打印登录信息
cookie=newCookie("accpCount", "1"); //Cookie对象,并设置名称与值
cookie.setMaxAge(60*60*24); //设置最长保留时间为1天
response.addCookie(cookie); //添加到响应头信息,返回到客户端
...
2.用户非第一次访问网页时的操作
...
Cookie[] cookies =request.getCookies(); //从request对象中获取客户端Cookie信息
int count = 0; //初始访问次数为0
Cookie cookie=null; //定义Cookie对象
if (cookies != null) { //判断request对象中是否存在Cookie信息
for (int i = 0; i <cookies.length; i++) { //使用for循环遍历Cookie数组
cookie = cookies[i]; //获取数组元素
if("accpCount".equals(cookie.getName())) { //判断Cookie的名称是否为"accpCount"
count =Integer.parseInt(cookie.getValue())+1; //如果相等,加1
cookie.setValue(count+""); //重新设置Cookie对象的value值
cookie.setMaxAge(60*60*24); //设置保留最长时间
response.addCookie(cookie); //返回到客户端
out.println("你是第"+ count + "次登录该网页。");
break;
}
}
}
...
3.完整的使用Cookie对象获取客户Cookie数据,并通过Cookie名称取出相应的值,在页面上显示登录次数
...
public void doPost(HttpServletRequestrequest, HttpServletResponse response)
throws ServletException, IOException{
response.setContentType("text/html;charset=gb2312");
PrintWriter out =response.getWriter();
out .println("");
out.println("");
out.println(" ");
out.println(" ");
Cookie[] cookies =request.getCookies();
int count = 0;
boolean bool=true;
Cookie cookie=null;
if (cookies != null) {
for (int i = 0; i < cookies.length;i++) {
cookie = cookies[i];
if("accpCount".equals(cookie.getName())) {
count =Integer.parseInt(cookie.getValue())+1;
cookie.setValue(count+"");
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
out.println("你是第"+ count + "次登录该网页。");
bool=false;
break;
}
}
}
if(bool){
out.println("你是第1 次登录该网页。在此之前没有相关Cookie信息。");
cookie=newCookie("accpCount", "1");
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
}
out.println(" ");
out.println("");
out.flush();
out.close();
}
...
4.运行效果图
四、使用Cookie记录用户名和密码
一、用户登录操作
在用户填写登录数据后,提交表单进行登录验证,如果用户名和密码正确,则把用户名和密码保存在客户端。页面如图1所示。
图1 保存Cookie信息的登录页面
实现代码如下所示。
...
response.setContentType("text/html;charset=gbk");
//获取用户名
String userName = request.getParameter("username");
//获取用户密码
String password =request.getParameter("password");
//验证用户是否合法
if("accp".equals(userName) &&"accp".equals(password)) {
//如果合法,把用户名和密码保存在客户端Cookie中
//获取客户选择的Cookie保存时间
String cookieDate =request.getParameter("cookieDate");
int date = 0;
if (cookieDate != null&& cookieDate != "")
date =Integer.parseInt(cookieDate);
//创建用户名Cookie对象
Cookie cookieName =new Cookie("accpLoginName", userName);
//设置Cookie保存时间
cookieName.setMaxAge(date);
//添加到客户端
response.addCookie(cookieName);
//创建用户密码Cookie对象
Cookie cookiePass =new Cookie("accpLoginPass", password);
//设置保存Cookie时间
cookiePass.setMaxAge(date);
//添加到客户端
response.addCookie(cookiePass);
response.sendRedirect("success.jsp");
} else {
response.sendRedirect("fail.jsp");
}
...
二、用户再次登录时操作
服务器首先读取客户端Cookie信息,如果存在用户名和密码数据,则直接登录,否则显示登录页面。
实现代码如下所示。
response.setContentType("text/html;charset=gbk");
//用户名和密码是否存在以及合法的判断参数
boolean bool=false;
//获取客户端Cookie数组
Cookie[] cookies =request.getCookies();
//判断客户端是否存在Cookie对象
if (cookies != null) {
//预定义保存用户名和密码的变量
String userName ="";
String password ="";
//遍历Cookie数组
for (int i = 0; i <cookies.length; i++) {
//取得每一个Cookie对象
Cookie cookie= cookies[i];
//判断Cookie的名称是否等于"accpLoginName"
if("accpLoginName".equals(cookie.getName())) {
userName = cookie.getValue();
}
//判断Cookie的名称是否等于"accpLoginPass"
if("accpLoginPass".equals(cookie.getName())) {
password = cookie.getValue();
}
}
//判断用户名和密码是否合法
if("accp".equals(userName) &&"accp".equals(password))
bool=true;
}
//判断对客户端的Cookie的操作是否成功,成功则显示登录成功后的页面,
//否则,重定向到登录页面
if(bool)
response.sendRedirect("success.jsp");
else
response.sendRedirect("login.jsp");
js设置Cookie
//页面测试:
<script type="text/javascript"src="/theme/js/mycenter/jquery.pack.js"></script>
<script type="text/javascript"
src="http://192.168.190.140:8088/sfbm/theme/js/collect/visit.js?cID=${param.u}"
charset="UTF-8">
</script>
$(function(){//(暂时不区分多个用户的情况)
varparams = getParams();
varvcID = params['cID'];//代码ID
if(vcID)
{
varcd = new Date().getTime();
$.get("http://localhost:8088/sfbm/collect/visit.action",{"cID": vcID, t: cd});//记录visit
//varrID = getCookie("clct_vst_rID");//行为ID
varfDt = getCookie("clct_vst_fDt");//首次访问时间
if(fDt== undefined || fDt == null)
{
// setCookie("clct_vst_rID", cd,30);//行为ID
setCookie("clct_vst_fDt",cd, 30);//首次访问时间
setCookie("clct_vst_cID",vcID, 30);//访问的产品ID
}else{
//更新有效时间
// setCookie("clct_vst_rID", rID,30);//行为ID
setCookie("clct_vst_fDt",fDt, 30);//首次访问时间
setCookie("clct_vst_cID",vcID, 30);//访问的产品ID
}
}
functiongetParams()
{
varsc=document.getElementsByTagName('script');
var paramsArr=sc[sc.length-1].src.split('?')[1].split('&');
var args={}, argsStr=[], param, t, name,value;
for(var i=0, len=paramsArr.length;i<len; i++){
param=paramsArr[i].split('=');
name=param[0], value=param[1];
if(typeof args[name]=="undefined"){//参数尚不存在
args[name]=value;
}else if(typeofargs[name]=="string"){ //参数已经存在则保存为数组
args[name]=[args[name]]
args[name].push(value);
}else{ //已经是数组的
args[name].push(value);
}
}
return args;
}
//写cookies
functionsetCookie(name, value, days)
{
if(days== undefined){
document.cookie= name + "=" + escape(value);
}else{
varexp = new Date();
exp.setTime(exp.getTime()+ days*24*60*60*1000);
document.cookie= name + "="+ escape(value) + ";expires=" +exp.toGMTString();
}
}
//读取cookies
functiongetCookie(name)
{
var arr,reg=new RegExp("(^|)"+name+"=([^;]*)(;|$)");
if(arr = document.cookie.match(reg))
{
returnunescape(arr[2]);
}
else
{
returnnull;
}
}
});
1:在客户端将用户的信息放入到Cookie中
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName,"Test_Content"); // 创建一个Cookie对象
cookie.setMaxAge(10);
response.addCookie(cookie);
2:从Cookie中取到用户的信息和sessionID
// 得到sessionID
StringsessionID = request.getSession(true).getId(); // 从session中得到 JSESSIONID
System.out.println("sessionID --->"+sessionID);
// 从cookie中得到JSESSIONID 值
Cookiecookies[] = request.getCookies();
if(cookies!=null){
for(inti=0;i<cookies.length;i++){
Cookiecookie = cookies[i];
System.out.println(cookie.getName()+"--->"+cookie.getValue());
}
}
相关文章推荐
- JSP中cookie的使用方法(用户登入_客户端读取及发送)
- net控件中数据导到Excel的格式 首先,我们了解一下excel从web页面上导出的原理。当我们把这些数据发送到客户端时,我们想让客户端程序(浏览器)以excel的格式读取它,所以把mime类型设为:application/vnd.ms-excel,当excel读取文件时会以每个cell的格式呈现数据,如果cell没有规定的格式,则excel会以默认的格式去呈现该cell的数据。这样就给我们提供了自定义数据格式的空间,当然我们必须使用excel支持的格式。下面就列出常用的一些格式: 1) 文本
- jquery.cookie() 方法的使用(读取、写入、删除)
- php使用Cookie实现和用户会话的方法
- JQuery.cookie() 方法的使用(读取、写入、删除)
- php使用cookie显示用户上次访问网站日期的方法
- 在JSP中使用Cookie,以及操作中文的乱码解决方法
- 黑马程序员——使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
- php使用cookie显示用户上次访问网站日期的方法
- $.cookie() 方法的使用(读取、写入、删除)
- jquery.cookie() 方法的使用(读取、写入、删除)
- 详解如何获取客户端使用WCF服务的用户数,通过WCF取在线用户数量的方法
- 使用JSP读取客户端信息
- jquery.cookie() 方法的使用(读取、写入、删除)
- php使用cookie显示用户上次访问网站日期的方法
- 使用JSP读取客户端信息
- JSP中使用cookie的方法以及注意事项总结
- “黑马程序员”使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印
- jquery.cookie() 方法的使用(读取、写入、删除)
- python使用socket向客户端发送数据的方法