以下来自一个初学JAVA2个月的菜鸟个人见解,求大神指点
一切参考这4点为基准
一: 首先必须明确,这里的目录路径关系,都是基于Tomcat目录下的,跟工作区的文件目录毫无关系
二:相对路径与绝对路径的准确定位
必须弄清相对的是哪一个路径!
相对的是原请求的地址
比如说原求请求地址为http://127.0.0.1:8080/WEB02/TS/index.html
相对的就是http://127.0.0.1:8080/WEB02/TS/
必须弄清哪个是绝对路径!
绝对地址:web服务器本身地址http://localhost:8080
三:区分哪种形式代表相对路径,哪种代表绝对路径
区分 绝对路径 与 相对路径(是否以“/”开头)
四:servlet类默认直接位于项目目录第一级下
------------------------------------------------------------------------------------------
1. 表单提交与超链接跳转
一:交由servlet处理
相对路径:
绝对路径:
注意:Res2必须是url-pattern中定义的映射值,不是类名
若相对地址是该项目目录时,action="Res2"
这里绝对不能加斜杠
二:交由jsp/html文件处理
相对路径:
绝对路径:
超链接的机制与此是相同的(已验证)
------------------------------------------------------------------------------------------
2. 请求转发与重定向
参考第四点以及第二点,所以对于servlet的转发和重定向的相对的路径都是
http://localhost:8080/项目名
重定向:
参数可以指定为相对路径或绝对路径或web应用程序(跨资源)。
①相对路径:response.sendRedirect("Manager/index.jsp")
生成的地址:相对的路径+参数生成完整的URL即:
http://localhost:8080/项目名/Manager/index.jsp
②绝对路径:response.sendRedirect("/Manager/index.jsp")
生成的地址:web服务器本身地址+参数生成完整的URL即:
http://localhost:8080/Manager/index.jsp
③其他web应用地址(跨资源)
response.sendRedirect("http://127.0.0.1:8080/WEB01/MyFirstServlet");
该response属于WEB02中,可以实现跨项目
response.sendRedirect("http://www.baidu.com")
容器直接定向到该URL。
转发:
参数可以指定为相对路径或绝对路径。
①相对路径
相对路径情况下生成的完整URL与重定向方法相同。
②绝对路径
绝对路径与重定向不同,容器将相对于Web应用的根目录加参数生成完整的URL
生成的地址: 原来请求地址+参数生成完整的URL 即:
http://localhost:8080/项目名/Manager/index.jsp
转发用相对路径和绝对路径地址都一样。
ServletContext.getRequestDispatcher(UrlString)
参数只能指定为绝对路径,生成的完整URL与
HttpServletRequest.getRequestDispatcher(String)相同。
---------------------------------------------------------------------------------------
3. ServletContext
getRealPath(String path)
getResource(String path)
这两个方法都不存在相对路径与绝对路径的概念
方法的参数,规定了必须是相对路径,无所谓参数是否以“/”开头,默认将其当做相对路径来处理,并且指定了具体相对于哪个路径,参考笔记servlet体系详解-->上下文
代码解释
String realPath = this.getServletContext().getRealPath("/WEB02/hello.html");
System.out.println(realPath);
输出结果 E:\Tomcat-7\apache-tomcat-7.0.52\webapps\WEB02\WEB02\hello.html
所以,加不加“/”都是一样的。
------------------------------------------------------------------------------------------