以下来自一个初学JAVA2个月的菜鸟个人见解,求大神指点
一切参考这4点为基准
一: 首先必须明确,这里的目录路径关系,
都是基于Tomcat目录下的
,跟工作区的文件目录毫无关系
二:
相对路径与绝对路径的准确定位
必须弄清
相对的是哪一个路径
!
相对的是原请求的地址
必须弄清哪个是绝对路径!
三:区分哪种形式代表相对路径,哪种代表绝对路径
区分 绝对路径 与 相对路径(是否以“/”开头)
四:servlet类默认直接位于项目目录第一级下
------------------------------------------------------------------------------------------
1. 表单提交与超链接跳转
一:交由servlet处理
相对路径: <form action="../Res2">
绝对路径: <form action="/WEB02/Res2">
注意:Res2必须是url-pattern中定义的映射值,不是类名
若相对地址是该项目目录时,
action="Res2"
这里绝对不能加斜杠
二:交由jsp/html文件处理
相对路径: <form action="test.html">
<form action="../hello.html">
绝对路径: <form action="/WEB02/TS/test.html">
<form action="/WEB02/hello.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
所以,
加不加“/”都是一样的。
------------------------------------------------------------------------------------------