在java中,JSP重定向,转发,Cookie,session

<%//第一种情况,先增加Cookie后重定向,A2.jsp能正常获取name的值"你好"//Cookiec=newCookie("name",URLEncoder.en... <%

//第一种情况,先增加Cookie后重定向,A2.jsp能正常获取name的值"你好"
//Cookie c=new Cookie("name",URLEncoder.encode("你好"));
//response.addCookie(c);
//response.sendRedirect("A2.jsp");

//第二种情况,先增加Cookie后转发,A2.jsp获取不了name的值,需要刷新A2.jsp或者其他网址都能正常获取name
//response.addCookie(c);
//response.sendRedirect("A2.jsp");
//request.getRequestDispatcher("A2.jsp").forward(request,response);

//第三种情况,先重定向后增加Cookie,无论怎么刷新就获取不了值,就是根本没写入cookie
//response.sendRedirect("A2.jsp");
//response.addCookie(c);
//response.sendRedirect("A2.jsp");

//第四种情况,先转发后增加Cookie,无论怎么刷新就获取不了值,就是根本没写入cookie
//request.getRequestDispatcher("A2.jsp").forward(request,response);
//response.addCookie(c);
//response.sendRedirect("A2.jsp");

//第五种情况,先重定向后设置session对象值,A2.jsp能正常获取name的值"你好"
//response.sendRedirect("A2.jsp");
//session.setAttribute("name","你好啊");

//第六种情况,先转发后设置session对象值,需要刷新A2.jsp或者其他网址都能正常获取name
//request.getRequestDispatcher("A2.jsp").forward(request,response);
//session.setAttribute("name","你好啊");

//第七种情况,先设置session对象值后重定向,A2.jsp能正常获取name的值"你好"
//session.setAttribute("name","你好啊");
//response.sendRedirect("A2.jsp");

//第八种情况,先设置session对象值后重定向,A2.jsp能正常获取name的值"你好"
//session.setAttribute("name","你好啊");
//request.getRequestDispatcher("A2.jsp").forward(request,response);
%>

我对重定向,转发,Cookie,session比较乱,希望大家能逐个解释以上8个现象
注:不要只给我解释重定向和转发的概念,是要详细解释上面8个现象
展开
 我来答
chao1575639478
2013-08-18 · TA获得超过1391个赞
知道小有建树答主
回答量:353
采纳率:0%
帮助的人:219万
展开全部
首先要明白这些对象的作用以及联系,(第一、第二种情况解释):先要知道这些对象是存在哪里的.其次是了解这些对象的作用范围,先说第一种情况吧.用重定向就是重新发送一个请求..你可以用firefox的firebug工具(或者chrome自带的开发者工具看一下)重定向是向服务器重新发一个请求.第一cookie是存在于浏览器中的,也就是如果你把cookie写入了你的硬盘,那么每次当你用该浏览器不管访问那个页面都会看到你写到硬盘中的cookie.而重定向就是再一次发起请求.就是这个请求以外的请求了.因为你的上一个请求的处理把cookie放入到了浏览器中.所以再进行一次请求当然能够获取到cookie的值了.
还有第二种情况是请求转发.这种情况是不会再一次请求服务器的.请求转发的一次是把你本次的请求交给另一个处理程序处理.当然,请求的参数还是刚开始你提交的那些参数(并不包括你后来写到浏览器中的cookie的值了)。要理解第一、第二中情况,就要理解cookie是存在于浏览器中的,只要浏览器不清除cookie的信息,只要你访问任何网页都会有cookie的值噢..2、就是要理解重定向跟请求转发的区别,重定向是在本次请求响应之后又向服务器发送了与上次请求毫不相干的请求.而此时cookie已经在浏览器中了.所以就会看到cookie的值了.而请求转发虽然在转发的时候也把cookie的值写到了浏览器中.但是这次转发的请求还是上一次的请求..参数也全部一样.所以这次的请求中并不包括cookie的值
(第三、第四种情况解释)如果进行了重定向或者请求转发,那么就相当于该请求或者又发起的请求已经进入了另一个程序中处理.所以这两个语句后面的语句都将不会执行了.所以根本没有写入cookie
至于第五第六中情况的话,那只能说我第三第四种情况理解有点错误.不过按说这两个语句后面的应该都不会执行的.
第七第八种情况是因为session是一次会话中设置的值.只要每个浏览器对session的处理不一样,有些浏览器就是如果该浏览器不关闭,那么session永远存在(除非session设置了过期的最长不活动时间)那么session有可能失效,所以一般如果你把session写入服务器,那么什么时候访问都会有值的..
myvowlove
2013-08-18
知道答主
回答量:11
采纳率:0%
帮助的人:3.5万
展开全部
既然不需要解释重定向和转发的概念 上面的逐条注释就解释的很清楚了 要别人解释也是大同小异
首先对于重定向,转发 要了解他们的工作流程 然后对于Cookie,session的值
Cookie保存于客户端 session保存于服务器 还有一些概念自己查
重定向是客户端跳转,共有二次请求 转发是服务器端跳转 只有最开始打开页面的一次请求
对照上面的概念 自己看看就明白了
第一个是对的 我就不说了
第二个 要记住对Cookie的赋值只有等下一次浏览请求时才能生效。
第三个 第四个 没写入Cookie
第五个 第六个 第七个 第八个 了解session作用范围 基本上写入session的东西 只要不是编译报错 都能取得到 一般很少会把值保存 session里面
还说个request 作用域更小了 保存值+然后重定向=获取不到 以后request 用的多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
2013-08-18 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3443万
展开全部
先说下重定向和转发也就是sendRedirect 和forward的区别
sendRedirect 就是直接跳转页面 效果就和你点击一个<a></a>元素一样完全没有别的效果
forward会把request,response当作参数传递到下个要打开的页面

但是重定向和转发在一个页面里只能使用其中的一个而且只能使用一次 所以你写的2 3 4 这些 写在下边的重定向和转发是不会被执行的

还有就是jsp里设置cookie必须是在跳转语句之前设置 之后无效 至于为什么必须这么写...我也不知道书上没写 所有看的书上都是先定义好Cookie然后在添加到response里 然后Session的使用也是一样的 书上也都是先设置好Session以后才跳转的 你就按这个来就行了 有时间纠结这个不如去看看别的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式