|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java的B/s开发是通常是javaweb开发,又叫J2EE开发,J2SE是手机开发。C#的C/s和B/s开发是说.net网页编程和Asp开发。。u在这里说明一点;资深一点的Java和C#程序员都明白一点
明天测试设置和猎取Cookie碰到了一点小成绩,很奇异的成绩;
把J2ee服务部署在当地8080端口;会见任何一个服务时,假如客户端没有cookie,则下发cookie,
假如客户端已有了该cookie的值就不下发,代码逻辑以下:
String uid="";
Cookie mycookies[] = request.getCookies();
if (mycookies!= null) {
for (int i = 0; i < mycookies.length; i++) {
if ("uid".equalsIgnoreCase(mycookies[i].getName())) {
uid=mycookies[i].getValue();
}
}
}
if(!StringUtils.isNull(uid)){
//do nothing
}else{
String host=request.getHeader("host");
uid=UUID.create();
Cookie mycookie = new Cookie("uid",uid);
mycookie.setDomain(host);
mycookie.setMaxAge(93312000);//三年
response.addCookie(mycookie);
}
System.out.println("uid is>"+uid);
1、会见:
http://localhost:8080/
和外部的页面,打印uid的值是不异的;切合请求
2、会见:
http://127.0.0.1:8080
和外部的页面,uid每次都猎取得值都是分歧的;
二者的区分仅仅的会见的体例分歧,假如用ip会见
Cookiemycookies[]=request.getCookies();中永久猎取不到uid的值;
(80端标语除外)
查了扫瞄器的详细cookie值,发明
http://localhost:8080/ 会见的时分,cookie值放在localhost下,服务器主动天生的SESSIONID也是寄存在localhost路径下。
http://127.0.0.1:8080/会见的时分,cookieuid值放在127.0.0.1:8080下,在127.0.0.1:8080下的cookie服务真个Servlet永久都猎取不到;而服务器主动天生的SESSIONID则是在127.0.0.1下,与uid寄存地位分歧。
以是在服务端下发cookie的时分,
Stringhost=request.getHeader("host");
必要修正为
if(host.indexOf(":")>-1){
host=host.split(":")[0];
}
大概保持设置mycookie.setDomain(host);
如许cookie值也是保留在127.0.0.1下的,与端标语不联系关系
固然是服务器已有域名的就不会呈现端标语下猎取不到cookie的值;
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net网页编程也不过3,4本书足以,这就是区别。 |
|