一、servlet路径
webapp/ //当前Web工程
web-inf/
classes/
lib/
web.xml
<servlet-mapping>
<servlet-name>handleservlet</servlet-name>
<url-pattern>/handleservlet</url-pattern> //此映射是相对于当前 web 应用的
</servlet-mapping>
二、其他文件路径(有客户端解析)
user/
a.jsp
b.jsp
images/
css/
js/
文件夹user,images,css,js为同级目录
若在a.html 中有 <link href="路径" rel="stylesheet" type="text/css"> ,其中 href 属性表示引用的 css 文件的路径。 可以表示为:
one.css :表示 one.css 和 a.hmtl 处于同一个目录
user/one.css :表示 one.css 处于 a.html 所在目录的子目录 user 中。
../one.css :表示 one.css 位于 a.html上一级目录下,
../../one.css :表示 one.css 位于 a.hmtl 上一级目录的上一级目录下,
./ :表示和 a.hmtl 同一目录
三、绝对路径
jsp中返回的结果
request.getContextPath() = /TestProject
request.getServletPath() = /TestPath.jsp
request.getRequestURI() = /TestProject/TestPath.jsp
request.getRequestURL() = http://localhost:8080/TestProject/TestPath.jsp
request.getRealPath("/") = C:TomcatwebappsTestProject
servlet中返回的结果
request.getContextPath() = /TestProject
request.getServletPath() = /servlet/TestPath
request.getRequestURI() = /TestProject/servlet/TestPath
request.getRequestURL() = http://localhost:8080/TestProject/servlet/TestPath
request.getRealPath("/") = C:Tomcat/webapps/TestProject
注:
request.getRealPath(String path)已被废弃。现在要用ServletContext.getRealPath(String path)。也就是说要先得到ServletContext对象,而这个对象获得方式有好几种,比较简单的无非是从Session中获得:
HttpSession session = request.getSession();
String realPath = session.getServletContext().getRealPath("/");
还有几种方法同样可以获得ServletContext:
Javax.servlet.http.HttpSession.getServletContext()
Javax.servlet.jsp.PageContext.getServletContext()
Javax.servlet.ServletConfig.getServletContext()
四、相对路径
servlet中有两种方式:
1、sendRedirect()方式
response.sendRedirect(String targetUrl);
2、RequestDispather方式
RequestDispatcher requestDispatcher = request.getRequestDispatcher(String targetUrl);
requestDispatcher.forward(request, response);
转发时因为它是服务器端跳转,所以用户浏览器的地址栏是不发生变化的。jsp就会以地址栏中路径为当前路径,所以就会发生找不到资源的时候。所以jsp中要用绝对路径