重定向到servlet是不用写上下文路径的吗?

重定向到servlet是不用写上下文路径的吗?

我看到在html和java代码中

http://img1.sycdn.imooc.com//climg/5cbb06b900011f8208550129.jpg

http://img1.sycdn.imooc.com//climg/5cbb06ca0001031608940232.jpg

在html中a标签的属性href和在java代码中,resp.sendRedirect("/cart/list.do");重定向的参数没有写上下文路径(工程名),这是为什么呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

抱歉,老师表达上有些错误。不是这样的。重定向相当于在地址栏中重新访问,这里没有使用项目名,是因为IDEA中上下文路径默认是“/”,如下图,所以即便是使用了request.getContextPath()获取到的仍然是“/”

http://img1.sycdn.imooc.com//climg/5cbbe9cf000153ea10920686.jpg

而之前在Eclipse中,默认是使用项目名来作为ApplicationContext的。

所以使用

response.sendRedirect("" + request.getContextPath() + "/XXServlet");

才是最为稳妥的选择。

祝学习愉快~

  • MasonM 提问者 #1
    感谢老师的解答!!!
    2019-04-21 12:13:06
芝芝兰兰 2019-04-21 10:57:24

同学你好。WEB-INF下面的内容都是只能由服务器级别才能访问,客户端并不能访问。a标签的href 属性的值可以是任何有效文档的相对或绝对 URL,可以是绝对路径,也可以是相对路径。使用重定向是先在服务器端拼好请求地址以后,再由浏览器发起的请求。所以不能直接使用重定向来访问在WEB-INF目录下的文件。

而这里访问的是Servlet,没有在WEB-INF下。并且这个限制和发起方并没有关系。一个页面要去请求WEB-INF下的页面,都需要经过Servlet才能访问。

如果解答了同学的疑问,望采纳~

祝学习愉快~


  • 提问者 MasonM #1
    老师你的意思是:如果重定向访问的是一个servlet的话,就不用写上下文路径吗?
    2019-04-21 11:00:17
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师