问下关于servlet和session的问题

问题描述

这个是我的Servlet.java文件:Stringstr="Thisismystring.";PrintWriterout=response.getWriter();request.getSession().setAttribute("string",str);out.println("<ahref="/MyProject/show.jsp">Show</a>");当转到show.jsp页面时,用getAttribute方法可以得到string的值。但是如果用下面这句:response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");就显示为空,不太明白为什么,这两句用在servlet里有什么区别吗?请帮我解释一下,谢谢了!

解决方案

解决方案二:
request在同一次请求里有效,response.sendRedirect会返回到浏览器,执行另一个请求,之前在request的数据全部丢失。
解决方案三:
可是我试了一下,如果把第一个文件写在普通的.jsp文件中,用两种方法都可以得到值啊?这个跟什么类型的文件有关系吗?如果我想在servlet.java中保存数据,就必须要用全局变量么,比如用ServletContext类,用request.getSession().setAttribute()就不行。这两个问题有关系么,晕死了。。
解决方案四:
该回复于2011-02-21 10:05:06被版主删除
解决方案五:
request.getSession().setAttribute("string",str);是将变量str存在session作用域中的"string"键中当你执行完这个操作:response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");等于是开启了另一个会话。不是同一个会话了。当然就没有了。
解决方案六:
引用2楼hotmail1215的回复:

可是我试了一下,如果把第一个文件写在普通的.jsp文件中,用两种方法都可以得到值啊?这个跟什么类型的文件有关系吗?如果我想在servlet.java中保存数据,就必须要用全局变量么,比如用ServletContext类,用request.getSession().setAttribute()就不行。这两个问题有关系么,晕死了。。

WEB组件之间数据共享关系:同一个WEB程序下,ServletContext,在任何场合都可以用Session:在同一个用户会话(用户登录OK,过期之前)Request:同一个请求,转发的不算。(就是你搞的sendRedirect)page:当前页
解决方案七:
建议看一下Servlet的相关概念,Response.sendRedirect()会将转发地址发回客户端,由客户端再发起请求,有可能转发的地址与前一个请求并不属于同一个WEB应用.
解决方案八:
跳转到show.jsp是站内转发,同享request,sessionresponse.sendRedirect是重定向,站外跳转,不同享request,session,application级别变量
解决方案九:
归根结底,lz没有把session的作用域搞清楚吧!
解决方案十:
lz好好转发试试
解决方案十一:
引用7楼rainsilence的回复:

跳转到show.jsp是站内转发,同享request,sessionresponse.sendRedirect是重定向,站外跳转,不同享request,session,application级别变量

application应该是共享的吧lz可以用request.getRequestDispatcher("show.jsp").forward(request,response);这样信息不会丢失
解决方案十二:
引用10楼happysmhzp的回复:

引用7楼rainsilence的回复:跳转到show.jsp是站内转发,同享request,sessionresponse.sendRedirect是重定向,站外跳转,不同享request,session,application级别变量application应该是共享的吧lz可以用request.getRequestDispatcher("show.j……

你试过吗?如果共享就是严重的安全问题了。
解决方案十三:
转发和重定向的区别不在于取不取得到值,而在于用途!!!!!!
解决方案十四:
楼主加油啊!问的问题是servlet和session的问题。内容又跟这2个扯不上关系,回答的人都回答的莫名其妙,真不知道说什么好。你要真用SESSION保存了值,response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");show.jsp绝对可以取到。可是你用的是SESSION保存了值了吗?你没有啊你用的是REQUIRE请求啊。你这样response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");能取到值就怪了。好好了解下客户端跳转和服务器跳转吧。
解决方案十五:
对楼主无言了。。。。。连续开贴问同一个问题
解决方案:
引用13楼zhuchao_ko的回复:

楼主加油啊!问的问题是servlet和session的问题。内容又跟这2个扯不上关系,回答的人都回答的莫名其妙,真不知道说什么好。你要真用SESSION保存了值,response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");show.jsp绝对可以取到。可是你用的是SESSION……

response.sendRedirect能取到session的值???不懂就别乱说
解决方案:
引用13楼zhuchao_ko的回复:

楼主加油啊!问的问题是servlet和session的问题。内容又跟这2个扯不上关系,回答的人都回答的莫名其妙,真不知道说什么好。你要真用SESSION保存了值,response.sendRedirect("http://localhost:8080/MessageBoard/show.jsp");show.jsp绝对可以取到。可是你用的是SESSION保……

request.getSession().setAttribute("string",str);哥们他用的是session你没看清楚~~
解决方案:
request.getDispatcherHeader("http://localhost:8080/MessageBoard/show.jsp").forward(request,response);
解决方案:
讨论来讨论区,还是自己动手实践下比较好,多做几次什么都明白了
解决方案:
该回复于2011-02-21 13:01:32被版主删除

时间: 2024-09-16 14:15:40

问下关于servlet和session的问题的相关文章

想问下session 问题

问题描述 一直做的是后台管理系统,过个一会session失效重新登陆.最近想做一个购物网站,想问下这里的登陆怎么做得.我百度了下,没有理想的session一直保存.举例子,淘宝的登陆是怎么做得. 解决方案 解决方案二:用cookie做呗解决方案三:cookie做的.但是虽然登陆了,也是假登陆.因为你需要购买东西,或者添加东西到购物车的话.需要重新输入密码.解决方案四:这个问题以前我也遇到过,找不到原因,改cookie了.Response.Cookies["loginName"].Val

weblogic 集群 部署-weblogic 集群下部署部署 产生session无效问题,谁帮帮忙急!!!!!

问题描述 weblogic 集群下部署部署 产生session无效问题,谁帮帮忙急!!!!! <[ServletContext@1429537765[app:web11 module:web11.war path:/web11 spec-version:2.5]] Servlet failed with Exception java.lang.IllegalStateException: Session invalidation is in progress with different thr

php 集成环境-我想问下php的集成环境的php版本和安装的php程序版本之间怎么样才能使用呢?

问题描述 我想问下php的集成环境的php版本和安装的php程序版本之间怎么样才能使用呢? 我想问下php的集成环境的php版本和安装的php程序版本之间怎么样才能正常使用呢?就是说哪个版本高一些 解决方案 可以参考下这篇文章http://blog.csdn.net/oneym/article/details/48050487 解决方案二: wamp集成环境下升级php版本集成的PHP环境的使用Linux环境Nginx安装多版本PHP

让不同的Servlet在一个Session共享连接

==== 问题所在 ==== 如果要编写一个购物车,通常需要写很多个不同功能的servlet.例如用户登录.添加商品.查询购物车.结帐等. 在这些 servlet 中都需要读写数据库.如果我们在每个 servlet 中都进行连接 -> 读写 -> 断开连接的操作,就会消耗大量的服务器资源,不仅程序响应速度减缓,而且会加重服务器和数据库的负担. ==== 把希望寄托于 HttpSession ==== 如我们所学,Servlet API 提供了一些方法和类来专门处理短期的会话跟踪.网站的每个用户

servlet中session简介和使用例子

  在servlet中,session是封装在javax.servlet.http.HttpSession这个接口中的,这个接口是构建在cookie或者URL重写的基础上,要得到一个HttpSession的实例,就可以通过HttpServletRequest的getSession()方法来获得 HttpServletRequest有两个重载的getSession()方法,一个接受一个boolean的类型的值,另一个不带任何参数,getSession()方法和getSession(true)方法功

我在做windows下的蓝牙4.0通信编程,想买一个适配器,想问下对适配器有要求吗

问题描述 我在做windows下的蓝牙4.0通信编程,想买一个适配器,想问下对适配器有要求吗 还有程序是怎么与适配器联系的呀,初学,有过开发经验的大神帮帮我吧,急急急,拜托啦 解决方案 没什么要求,京东上30块钱的足够了.注意看清楚支持bluetooth4.0就可以.蓝牙的开发除了配对,其它和网络类似.很简单的.会有一个ip地址.不需要你额外的代码.

音频-问下关于android编程的问题····声波测距方面的

问题描述 问下关于android编程的问题····声波测距方面的 请问下android的大神···我想用手机发送8--9HZ的音频(Beep信号).然后用另外一个手机(也是android的接收···)问下能不能实现啊····求大神指点我其实是想实现手机与手机之间的测距··想用声波的方式···请问下有没有可能实现? 解决方案 个人觉得可以实现,要考虑手机如何接收到音频信号,A手机发信号如果确保B手机收到,收到时间如何确定的,知道时间和速度求距离应该可以的.android bonjour这个新技术也

代码转换-问下内容里面的字符转换是什么转换

问题描述 问下内容里面的字符转换是什么转换 转换前:FA161D8A27D01BF7转换后:SkdWNJAdOddZN1QxUMjGNx== 转换前:206DBDB0FBD04BE转换后:UJ=3SdjdQJBGQkQxNdjA 转换前:AF19CEA16A211563转换后:QMYWOMNAQtd3QtiWUtM3Ux== 转换前:6968EBF2198A2C转换后:NJk3OdwFSJiWOtgBUkU= 转换前:859C6E544566A18转换后:OEM6QqzANtQ1NtY3Qtd2

问下模板

问题描述 小弟最近在看个cms的代码看他aspx生成了一些模板页但是貌似在以后的代码中没有用到这些模板页了问下这些模板页是做什么用的新手求高手指教下 解决方案 解决方案二:这些模板,是用来作显示用的,里边会有一些预留的区域,用来放代码生成的内容.这样你也可以自己定制模板解决方案三:就好比是给了你一张好看的信纸,只等你往中间空白处写情书.解决方案四:在后台用数据填充模板页中的特定标签,以实现静态化.