如何在Servlet中实现带req,resp重定向到其他URL的问题

qianxuxiaozi 2006-10-23 07:06:33
重定向问题在网上的文章比较多
一般都是
HttpServletResponse.sendRedirect()

RequestDispatcher.forward()
两种

第一种是纯粹的重定向,req/resp都会丢失
第二种虽然能带上req/resp,但是文章中介绍的都是重定向到同一个服务器的资源。
对带参数重定向到其他服务器地址,则只有简单的介绍:HttpServletResponse.sendRequest()

虽然在jsp中这个问题其实解决非常简单,form的action直接写绝对地址就能实现,但是小弟不才,在开发中遇到先要判断用户在本地存不存在,然后再去其他服务器判断密码对不对,实现单点登录的问题。

在Servlet中如何实现,请大侠们支招啊!!!

...全文
522 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cacy06 2006-10-25
  • 打赏
  • 举报
回复
据我所用.用RequestDispatcher.forward 在servlet里根据nextJsp来进行页面的跳转.
RequestDispatcher requestDispatcher = req.getRequestDispatcher(nextJsp);
if (requestDispatcher != null) {
requestDispatcher.forward(req, resp);
poko 2006-10-24
  • 打赏
  • 举报
回复
原来这就是单点登陆啊

我不经意间已经做过好几次了,PHP到JAVA
廖雪峰 2006-10-24
  • 打赏
  • 举报
回复
单点登陆不是用redirect实现的

要用凭据

1.浏览器请求站点A
2.站点A指示浏览器去服务器L登录
3.浏览器通过服务器L登录,然后拿到一个票据,再redirect到站点A,url就像http://siteA/xxx?ticket=23982389274

4.站点A拿到ticket然后再与服务器L通信,看这个Ticket是否有效,因为ticket是服务器L发给浏览器的,所以它知道是否有效

5.如果有效,站点A就认为登录成功了,但是验证过程却是在服务器L上进行的
hw2008 2006-10-24
  • 打赏
  • 举报
回复
第一种:response.sendRedirect("跳转页");但是此方法会丢失掉request和response
第二种是:request.getRequestDispatcher("跳转页").forward(request,response);
qianxuxiaozi 2006-10-23
  • 打赏
  • 举报
回复
<form name="form1" method="post" action="www.tom.com">
...
</form>

这种方式,经试验是可以将form里的数据提交到绝对路径的action中去的,难道在java中无法模拟这种效果?

唉,看来只好中间嵌一层html提交了。

谢谢楼上的兄弟
lip009 2006-10-23
  • 打赏
  • 举报
回复
要把请求发送到另一个服务器资源用request是不可能把参数传递过去的,只有用?传参数:
response.sendRedirect("http://www.tom.com?param="+param);
qianxuxiaozi 2006-10-23
  • 打赏
  • 举报
回复
不行,req.setAttrbute()的数据丢失了
lip009 2006-10-23
  • 打赏
  • 举报
回复
response.sendRedirect("http://www.tom.com");
直接这样就可以了
qianxuxiaozi 2006-10-23
  • 打赏
  • 举报
回复
100分求教

是不是发错地方了,没人回啊

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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