[200分问题] Servlet转向请求后如何显示正确URL?

Sheepy 2003-10-17 08:37:22
在做一个登陆系统,登陆的Servlet叫Login,映射到user/Login。登陆后返回根目录下的主页,但是浏览器URL仍然是servlet的URL,造成主页上链接路径错误。
我想知道除了所有的连接都用根目录作参考外,还有什么更好的解决方法,比如让转向后URL显示页面的URL而非servlet的。
...全文
116 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sheepy 2003-11-01
  • 打赏
  • 举报
回复
我投降了,现在用Apache+Tomcat,所有servlet映射到/servlet下,所有网页里的链接以根目录开头。
fantasyCoder 2003-10-28
  • 打赏
  • 举报
回复
up!!!
up!!!
Sheepy 2003-10-26
  • 打赏
  • 举报
回复
self up!!!
fantasyCoder 2003-10-24
  • 打赏
  • 举报
回复
楼主的问题我也想知道!!
因为要正常访问index页面必然要通过一个servlet转向!!!
通过login页面经过servlet验证转象到index
如果直接访问index就会有问题出现,,如果index再通过一个servlet进行数据库操作则问题更大
把代码全写在 jsp页面里是不会有这样的问题的!!!
不知道有什么方法可以很好的解决问题!!!
Sheepy 2003-10-24
  • 打赏
  • 举报
回复
哪位高手发点声音呀!哪怕说我做事方式不对,应该用Struts或者其他什么做我也服了,虽然我还不懂,但是我可以去学了呀!
事实证明这是一个问题呀!楼上的也碰到了呀!
fantasyCoder 2003-10-24
  • 打赏
  • 举报
回复
帮你up!!!
Sheepy 2003-10-23
  • 打赏
  • 举报
回复
这不是一个问题吗……
Sheepy 2003-10-21
  • 打赏
  • 举报
回复
回复人: djws(void)
用../xxx.jsp

不要捣浆糊好不好?你这样servlet转向以后可以用了,但是我直接访问/index.html的时候怎么办?根目录的上一层是什么?..指向什么?
yaray 2003-10-20
  • 打赏
  • 举报
回复
除了用了frameset以后IE地址栏不变化外,没碰到过这种情况.
djws 2003-10-20
  • 打赏
  • 举报
回复
用../xxx.jsp
Sheepy 2003-10-20
  • 打赏
  • 举报
回复
如果网页里面用“/”开头的链接的话,要把所在的module名字放进去,也就是说如果用tomcat,东西放在test这个context下面的话,用“/”链接要指向test下的index.html要把链接写成/test/index.html。WAS也是这样。但是我学长说他用weblogic,不是这样的,weblogic会把根目录映射到你的module目录下,也就是只要写成/index.html,就指向test下面的index.html了。
所以说链接都用“/”开头是不上品的,必须在/后面跟上module的路径。
用sendRedirect()确实可以让URL变成转向后的地址,但是不会把request里面的东西一起传过去,用forward()可以传递request,但是浏览器认为URL还是servlet的URL,有可能造成网页里链接不对,如果它们不是以“/”开头,而是以当前路径作参考。
所以!请问!商业项目中是怎么做的!Sun是怎么做的!IBM是怎么做的!到底应该是怎么做的!!!
Sheepy 2003-10-17
  • 打赏
  • 举报
回复
我没有用sendRedirect()。我的书上没有讲过这个方法,我知道这个方法,用过一次失败了,说IllegaleStateException。
我用的是RequestDispatcher:
RequestDispatcher dispatcher=request.getRequestDispatcher("/index.jsp");
dispatcher.forward("request,response");
这样的话可以把原来的request里面的参数什么的一起给转向后的页面。但是URL还是servlet的URL。

另外,我做网页避免使用根目录开头的超链接,这很好理解。我都是文档为起点的,比如一个/user/index.jsp页面中指向/index.jsp的链接一定是../index.jsp而从来不做成/index.jsp。这样比较灵活。
Sheepy 2003-10-17
  • 打赏
  • 举报
回复
我的意思:
用于登陆的页面是http://localhost/user/login.htm,用于登陆验证的servlet映射到/user/Login,所以htm的form里面action就写"Login",因为相当于在同一目录下。提交并通过验证后用RequestDispatcher重定向到/index.htm,但是这时候浏览器的URL仍然是http://localhost/user/Login,结果造成/index.htm里面的超链接错误,比如原来有个超链接指向user/login.htm,用servlet登陆后由于当前目录是user,该链接指向了user/user/login.htm,不能正常使用了。
xinshou1979330 2003-10-17
  • 打赏
  • 举报
回复

JSP页面中:
<%
if(request.getParameter("err")!=null)
{
String err=URLDecoder.decode(new String(request.getParameter("err").getBytes("iso8859_1"),"gbk"));
out.print(err);
}
%>

JAVA中这样写
Error = URLEncoder.encode("提交成功!");
response.sendRedirect("/cyvod/manage/actadd.jsp?err="+Error);

我这样写可以返回信息的不知道楼主是不是这个意思
yugona 2003-10-17
  • 打赏
  • 举报
回复
楼主的情况真是奇怪,难道你的servlet里有frame?不太可能啊|!
aku0708 2003-10-17
  • 打赏
  • 举报
回复
response.sendRedirect("index.jsp");可以的
blue999star 2003-10-17
  • 打赏
  • 举报
回复
造成主页上链接路径错误??
怎么会有错呢,不明白。ie地址栏的url和你主页的<href>连接没有直接关系。

所有的连接都用根目录作参考!!!
不是这样吗?
wellsoon 2003-10-17
  • 打赏
  • 举报
回复

response.sendRedirect("a.jsp");
匪六哥 2003-10-17
  • 打赏
  • 举报
回复
我在servlet中用response.sendRedirect("/index.jsp");就直接转向到首页,并且浏览器URL仍然是index.jsp的路径。

index.jsp前的/表示根目录!
caodavid2003 2003-10-17
  • 打赏
  • 举报
回复
如果你在servlet中是使用下面方法转向的,是不会错的
ServletContext sc=getServletContext();
RequestDispatcher rd=sc.getRequestDispatcher("../XXX.jsp");
//如果你的servlet不映射到user/Login,而是映射到Login的话,上面转向的参数为"/XXX.jsp"或"./XXX.jsp"
rd.forward(request,response);
加载更多回复(2)

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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