cookie学习一


本来应该主要学习js的cookie,谁知道学成java的cookie了,都一样总之都是要学习的

cookie是基于HttpServletRequest 和HttpServletResponse的,没有他俩没办法操作cookie,所有我们在实际应用中要传递这两个参数请看如下例子

主要说说cookie的两个方法

1setPath:主要是设置cookie在本地的路径和访问的权限。如果设置成"/"就表示的是根目录,也就是tomcat的webapp下面的根目录,在这里设置的cookie可以被所有工程应用,如果设置为"/bms"则只能在bms工程底下应用,如果写的在具体点就只能在具体的地方应用。所以说他是向内匹配的

2setDomain:主要是跨域请求的,这个没有做练习,就把网上的总结复制进来吧

A机所在的域:home.langchao.com,A有应用cas
B机所在的域:jszx.com,B有应用webapp_b
1)在cas下面设置cookie的时候,增加cookie.setDomain(".jszx.com");,这样在webapp_b下面就可以取到cookie。
2)这个参数必须以“.”开始。
3)输入url访问webapp_b的时候,必须输入域名才能解析。比如说在A机器输入:http://lc-bsp.jszx.com:8080/webapp_b,可以获取cas在客户端设置的cookie,而B机器访问本机的应用,输入:http://localhost:8080/webapp_b则不可以获得cookie。
4)设置了cookie.setDomain(".jszx.com");,还可以在默认的home.langchao.com下面共享。

package cookie;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieTest {

	/**
	 * 根据名称读取cookie  
	 * @param request
	 * @param cookieName
	 * @return
	 */
	public String getCookie(HttpServletRequest request,String cookieName){
		String obj = "nothing";
		Cookie cookies[] = request.getCookies();
		for(int i=0;i<cookies.length;i++){
			System.out.println(cookies[i].getName());
			if(cookieName.equals(cookies[i].getName())){
				obj = cookies[i].getValue();
				break;
			}
		}
		return obj;
	}
	/**  
	  * @name       设置cookie名称  
	  * @value      设置cookie的值  
	  * @cookieTime 设置cookie的存活时间   
	  * @domain     设置cookie的域名  
	  * @path       设置cookie  
	  */  

	public void addCookie(HttpServletResponse response,String name,String value,int cookieTime,String domain,String path){
		 Cookie cookie = new Cookie(name ,value);   
		  cookie.setMaxAge(cookieTime);   
		  //cookie.setDomain(domain);   
		  cookie.setPath(path);   
		  response.addCookie(cookie);
	}
	/**
	 * Cookie 中的setDomain 和 setPath的区别? 
	 * Cookie中的setDomain()主要用来在两个不同名称但是后缀相同的网站地址上.这样两个网站就能使用同一个cookie了 
	例子: www.zjut.edu.cn 和 bbs.zjut.edu.cn
	Cookie co...
	co.setDomain(".zjut.edu.cn");
	 
	setPath()主要用来确定什么后缀下能够使用这个cookie.即地址栏上面的地址的约束.
	Cookie co..
	co.setPath("/RegisterDemo/RegisterDemo");
	 */
}


 

package cookie;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		CookieTest cot = new CookieTest();
		String name = "water";
		String value = "testwater";
		int cookieTime = 100000;
		String domain = "/";
		String path= "/SampleWebTest";
		cot.addCookie(response, name, value, cookieTime, domain, path);
		
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out
				.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method ! welcome " + cot.getCookie(request, "water"));
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();
		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request,response);
	}
}


 

 好了,明天开始学习js的cookie

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值