本来应该主要学习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