这个是我的Servlet.java文件:
String str="This is my string.";
PrintWriter out=response.getWriter();
request.getSession().setAttribute("string", str);
out.println("<a href=\"/MyProject/show.jsp\">Show</a>");当转到show.jsp页面时,用getAttribute方法可以得到string的值。
但是如果用下面这句:
response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");就显示为空,不太明白为什么,这两句用在servlet里有什么区别吗?
请帮我解释一下,谢谢了!
String str="This is my string.";
PrintWriter out=response.getWriter();
request.getSession().setAttribute("string", str);
out.println("<a href=\"/MyProject/show.jsp\">Show</a>");当转到show.jsp页面时,用getAttribute方法可以得到string的值。
但是如果用下面这句:
response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");就显示为空,不太明白为什么,这两句用在servlet里有什么区别吗?
请帮我解释一下,谢谢了!
response.sendRedirect会返回到浏览器,执行另一个请求,之前在request的数据全部丢失。
如果我想在servlet.java中保存数据,就必须要用全局变量么,比如用ServletContext类,用request.getSession().setAttribute()就不行。
这两个问题有关系么,晕死了。。
request.getSession().setAttribute("string", str);
是将变量str存在session作用域中的"string"键中
当你执行完这个操作:
response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");
等于是开启了另一个会话。
不是同一个会话了。
当然就没有了。
WEB组件之间数据共享关系:同一个WEB程序下,ServletContext,在任何场合都可以用
Session:在同一个用户会话(用户登录OK,过期之前)
Request:同一个请求,转发的不算。(就是你搞的sendRedirect)
page:当前页
response.sendRedirect是重定向,站外跳转,不同享request, session , application级别变量
application应该是共享的吧lz可以用request.getRequestDispatcher("show.jsp").forward(request,
response);这样信息不会丢失
问的问题是servlet 和 session 的问题。
内容又跟这2个扯不上关系,回答的人都回答的莫名其妙,真不知道说什么好。你要真用SESSION 保存了值 ,
response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");
show.jsp绝对可以取到。可是你用的是SESSION保存了值了吗?你没有啊你用的是REQUIRE请求啊。
你这样response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");
能取到值就怪了。好好了解下客户端跳转和服务器跳转吧。
response.sendRedirect能取到session的值???不懂就别乱说
request.getSession().setAttribute("string", str);
哥们他用的是session 你没看清楚~~