关于url传递sessionid的问题

ddhd521 2009-09-02 01:44:08
jsp如果用url在地址栏直接传sessionid为什么一定要用分号如此例http://localhost:8080/jsp7/MyJsp.jsp;jsessionid=EBFA3819CF9125CA92193279BDA92CCC
我试了好多次,就是myjsp.jsp这里不能用?号,只有用;号才能传过去,希望有朋友能详细的为小弟解说一下
...全文
2781 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
PatrickCao 2011-11-27
  • 打赏
  • 举报
回复
如果客户端不支持cookie, sessionid放url中,放hiddenfiled中也可以
GDY__GDY 2011-11-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 norwolfli 的回复:]
tomcat处理url传过来的session代码如下:

Java code


/**
* Parse session id in URL.
*/
protected void parseSessionId(org.apache.coyote.Request req, Request request) {

ByteChunk u……
[/Quote]

兄台,你确实强,这些人里也就你真正理解楼主的意思了,虽然你没回答我的问题,我也不是干java的,但是我都想给你分了,哈哈哈,小弟佩服你一针见血的功力
ddhd521 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 norwolfli 的回复:]
tomcat处理url传过来的session代码如下:
Java code/**
* Parse session id in URL.*/protectedvoid parseSessionId(org.apache.coyote.Request req, Request request) {

ByteChunk uriBC= req.requestURI().getByteChunk();int semicolon= uriBC.indexOf(match,0, match.length(),0);if (semicolon>0) {// Parse session ID, and extract it from the decoded request URIint start= uriBC.getStart();int end= uriBC.getEnd();int sessionIdStart= semicolon+ match.length();int semicolon2= uriBC.indexOf(';', sessionIdStart);//看这行,就知道为什么是;了if (semicolon2>=0) {
request.setRequestedSessionId
(new String(uriBC.getBuffer(), start+ sessionIdStart,
semicolon2- sessionIdStart));// Extract session ID from request URIbyte[] buf= uriBC.getBuffer();for (int i=0; i< end- start- semicolon2; i++) {
buf[start+ semicolon+ i]= buf[start+ i+ semicolon2];
}
uriBC.setBytes(buf, start, end- start- semicolon2+ semicolon);
}else {
request.setRequestedSessionId
(new String(uriBC.getBuffer(), start+ sessionIdStart,
(end- start)- sessionIdStart));
uriBC.setEnd(start+ semicolon);
}
request.setRequestedSessionURL(true);

}else {
request.setRequestedSessionId(null);
request.setRequestedSessionURL(false);
}

}
[/Quote]
老大你很强,接分吧
南南北北 2009-09-02
  • 打赏
  • 举报
回复
tomcat处理url传过来的session代码如下:

/**
* Parse session id in URL.
*/
protected void parseSessionId(org.apache.coyote.Request req, Request request) {

ByteChunk uriBC = req.requestURI().getByteChunk();
int semicolon = uriBC.indexOf(match, 0, match.length(), 0);

if (semicolon > 0) {

// Parse session ID, and extract it from the decoded request URI
int start = uriBC.getStart();
int end = uriBC.getEnd();

int sessionIdStart = semicolon + match.length();
int semicolon2 = uriBC.indexOf(';', sessionIdStart);//看这行,就知道为什么是;了
if (semicolon2 >= 0) {
request.setRequestedSessionId
(new String(uriBC.getBuffer(), start + sessionIdStart,
semicolon2 - sessionIdStart));
// Extract session ID from request URI
byte[] buf = uriBC.getBuffer();
for (int i = 0; i < end - start - semicolon2; i++) {
buf[start + semicolon + i]
= buf[start + i + semicolon2];
}
uriBC.setBytes(buf, start, end - start - semicolon2 + semicolon);
} else {
request.setRequestedSessionId
(new String(uriBC.getBuffer(), start + sessionIdStart,
(end - start) - sessionIdStart));
uriBC.setEnd(start + semicolon);
}
request.setRequestedSessionURL(true);

} else {
request.setRequestedSessionId(null);
request.setRequestedSessionURL(false);
}

}


ddhd521 2009-09-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qq327586498 的回复:]
sessionid??你传那干什么?当结束一次回话后,sessionid会在服务器内存中被释放,sessionid就是一个没意义的东西呀?而且url传参数都是地址的写法是:http://localhost:8080/jsp7/MyJsp.jsp?param=(要传的值)
[/Quote]
一次会话结束session保存的信息并不会丢失,除非人为销毁,或是有效期过期,才会丢失,否则只不过是当你再次打开网页又分配了你新的sessionid,从前的sessionid依然在服务器存在,一般情况下用户关闭浏览器会话即结束,如果你得到了sessionid并且像我这样传过去,那怕你是关了一下浏览器,服务器依然是认识你的,但是为什么sessionid一定要用;号传为什么不能用?号,这才是我想知道的,如果传个普通参数,我知道用?传.
quxiuer 2009-09-02
  • 打赏
  • 举报
回复
sessionid不是自己写的,是自动生成的吧!
qq327586498 2009-09-02
  • 打赏
  • 举报
回复
sessionid??你传那干什么?当结束一次回话后,sessionid会在服务器内存中被释放,sessionid就是一个没意义的东西呀?而且url传参数都是地址的写法是:http://localhost:8080/jsp7/MyJsp.jsp?param=(要传的值)
config_man 2009-09-02
  • 打赏
  • 举报
回复
sessionid是关键字,可能因为这个原因,所以要求不一样吧
ddhd521 2009-09-02
  • 打赏
  • 举报
回复
当然我平时也是用?后面跟参数,只是在传这sessionid的时候我查了很多资料,都是用;传,但是都没有说为什么,是什么原理

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧