一直很苦恼各种路径,今天在百度上看到一个帖子,先保存一下,以后验证
."/"的意义:(工程为filter)
一、在-form-表单的action属性中代表web站点的根目录
action="/loginservlet" 代表http://localhost:8080/loginservlet 服务器会去当前web应用根目录的外面去,这肯定会出错!
action="loginservlet" 代表http://localhost:8080/filter/loginservlet 这是我们一般映射Servlet的路径(要求表单与loginservlet在同一级目录下)
二、在--重定向--操作中代表web站点的根目录
在LoginServlet.java中:
response.sendRedirect("/hello.jsp"); 代表http://localhost:8080/hello.jsp 不存在,会报错
response.sendRedirect("hello.jsp"); 代表hello.jsp与loginservlet在同一目录下,否则会报错
三、在--转发--操作中代表当前web应用的的根目录
在LoginServlet.java中:
request.getRequestDispatcher("/hello.jsp") 代表http://localhost:8080/filter/hello.jsp
request.getRequestDispatcher("hello.jsp") 代表hello.jsp与loginservlet在同一目录下
四、在--映射路径--操作中代表当前web应用的的根目录
在web.xml文件中:
<url-pattern>/loginservlet</url-pattern> 代表将LoginServlet映射成:http://localhost:8080/filter/LoginServlet
五、无"/"则代表当前目录
要求发送请求的对象与接受请求的对象在同一目录下,否则就会报错
请测试一个例子:
在LonginServlet.java中
request.getRequestDispatcher(servletContext.getContextPath()+"/login.jsp") 是转发到的url为:http://localhost:8080/filter/login.jsp 吗?
答:这个是错误的,转发的时候,“/login.jsp”中的“/” 已经代表当前web应用的根了,如果再加上 servletContext.getContextPath(),最后拼接出来的url是:
/filter/filter/-----,弄出两个filter,肯定出错。
本文详细解析了Web应用中'/'符号的不同用途:在表单动作属性、重定向、转发和映射路径操作中的作用,以及在不同情况下的正确使用方法。通过实例演示,帮助开发者避免常见错误。

被折叠的 条评论
为什么被折叠?



