jsp,在servlet中重定向后,定向到的页面导航等链接不可用,一点就出现错误页面。 10
我是用servlet做业务处理层,jsp做视图层。在servlet中用request.getRequestDispatcher("/f_pages/login.jsp")...
我是用servlet做业务处理层,jsp做视图层。在servlet中用 request.getRequestDispatcher("/f_pages/login.jsp").forward(request, response);重定向,则login.jsp中的导航链接都不能正常使用,但是单独在地址栏中输入login.jsp的地址,链接一切正常。若用response.sendRedirect("f_pages/login.jsp");重定向,导航中的链接是可以用的,但很显然这样会导致数据不能传递到新的页面中去。急求各位高手帮忙。我用的是tomcat6.0版本。
我已经自己解决了。其实用request.getRequestDispatcher("/f_pages/login.jsp").forward(request, response)跳转后,链接不可用,肯定是服务器找不到链接的地址。因为大多时间我们习惯用相对地址,把它改为绝对地址就好。但是绝对地址存在安全隐患,所以可用用getServletContext().getRealPath("/")获得根目录,在加上相对地址。不过,还是谢谢大家的关注,谢谢! 展开
我已经自己解决了。其实用request.getRequestDispatcher("/f_pages/login.jsp").forward(request, response)跳转后,链接不可用,肯定是服务器找不到链接的地址。因为大多时间我们习惯用相对地址,把它改为绝对地址就好。但是绝对地址存在安全隐患,所以可用用getServletContext().getRealPath("/")获得根目录,在加上相对地址。不过,还是谢谢大家的关注,谢谢! 展开
1个回答
展开全部
forward是服务器端的跳转,不会重写客户端的http地址。所以login.jsp里面的相对路径是基于跳转之前的那个地址目录的。
redirect才是重定向。重定向相当于一次完整的客户端请求和服务器应答的处理,会刷新客户端的http地址,所以如果login.jsp里面有相对路径的话,请使用重定向,而非服务器跳转的方式定位。
这2者类似但是又完全不同。
redirect才是重定向。重定向相当于一次完整的客户端请求和服务器应答的处理,会刷新客户端的http地址,所以如果login.jsp里面有相对路径的话,请使用重定向,而非服务器跳转的方式定位。
这2者类似但是又完全不同。
更多追问追答
追问
请问,那我怎么实现跳转到的页面或是重定向到的页面能同时满足两个条件:即能把数据传递到新的页面又能使新的页面中的超链接可用。在线等中……
追答
重定向的话直接把参数追加到后面,比如有个参数ABC的值是DEF可以写成response.sendRedirect("f_pages/login.jsp?abc=def");但是这种方式以明文传送参数和数值,只适用于对安全性没要求的场合。
另外一种方法是把参数存入session中。这种方式安全,但是开销比较大,适合用于传送密码之类有安全性要求的参数和属性。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询