日期:2014-05-18  浏览次数:20744 次

请问下request.getSession()和encodeUrl()的问题。
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExceptionIOException {

response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

request.getSession();
/**
 * 如果不不加上面这行代码,那么下面url1,url2就不会讲session的信息增加到后面.
 * 加了之后,就添加上去了。
 * 上面这行代码究竟完成了什么功能。
 * request.getSession();
 * 到底做了什么?
 * 他不是返回Session对象么。这里都没有将其返回结果保存
 * 我以为这代码属于无意义代码了!!!
 * 
 */

String url1 = response.encodeUrl("/JavaWeb2/mySessionDemo1");
String url2 = response.encodeUrl("/JavaWeb2/mySessionDemo2");

out.write("<a href='"+url1+"'>购买</a>");
out.write("<br/>");
out.write("<a href='"+url2+"'>结账</a>");
}


将request.getSession();注释掉的源文件:
<a href='/JavaWeb2/mySessionDemo1'>购买</a><br/><a href='/JavaWeb2/mySessionDemo2'>结账</a>


如果不注释掉,则出现如下情况:
<a href='/JavaWeb2/mySessionDemo1;jsessionid=4F4D02D3FF5E5E3AEA08F2EA27342F8D'>购买</a><br/><a href='/JavaWeb2/mySessionDemo2;jsessionid=4F4D02D3FF5E5E3AEA08F2EA27342F8D'>结账</a>

------解决方案--------------------
引用:
Quote: 引用:

Session在这里是基于cookie的,创建Session的时候会把jsessionid存到你的Cookie里

恩。谢谢了。

然后String url2 = response.encodeUrl("/JavaWeb2/mySessionDemo2");
这代码就会将Cookie里的jsessionid的信息添加进去?

encodeURL会判断cookie是否可用,如果cookie被禁用那么jsessionid就会放在URL里面,没禁用URL还是原样