关于Javaweb中的路径
我在学习javaweb阶段的时候,在读取或者写入对象的时候,发现容易混肴了关于路径的 “/” “” “.” “./” “…/” “classpath:” "${pageContext.request.contextPath}"等等!所以自己抽时间做了一份总结,用于归类记忆 !
路径分为 web路径 “/ " 与真实路径”\"。
下面使用一个tomcat部署javaweb的例子来解析路径!
1. tomcat部署路径(图)
2. web项目(图)
3. 配置信息web.xml(图与代码)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<!-- ************************************* -->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>ServletTest.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/CC</url-pattern>
</servlet-mapping>
</web-app>
4. servlet内容(图与代码)
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("request.getContentLength(): " + request.getContentLength());
System.out.println("request.getContentType(): " + request.getContentType());
System.out.println("request.getContextPath(): " + request.getContextPath());
System.out.println("request.getMethod(): " + request.getMethod());
System.out.println("request.getLocale(): " + request.getLocale());
System.out.println("request.getQueryString(): " + request.getQueryString());
System.out.println("request.getRequestURI(): " + request.getRequestURI());
System.out.println("request.getRequestURL(): " + request.getRequestURL());
System.out.println("request.getServletPath(): " + request.getServletPath());
System.out.println("request.getRemoteAddr(): " + request.getRemoteAddr());
System.out.println("request.getRemoteHost(): " + request.getRemoteHost());
System.out.println("request.getRemotePort(): " + request.getRemotePort());
System.out.println("request.getScheme(): " + request.getScheme());
System.out.println("request.getServerName(): " + request.getServerName());
System.out.println("request.getServerPort(): " + request.getServerPort());
System.out.println("request.getServletContext().getRealPath('/'):" + request.getServletContext().getRealPath("/"));
System.out.println("request.getServletContext():" + request.getServletContext());
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
- 访问 http://localhost:8080/reqestAndResponse/CC 后的结果是 :
分析:
1. 可以发现路径有"/" 和 "\"
- "/"代表的是web的路径!
- “\“代表的是真实的路径,也就是我们本地电脑中某一个文件的路径。注意在web中使用要转义”\\”
2. 绝对路径与相对路径(先创建一个a.html文件)
- 绝对路径
写全所有路径(可以使用根目录)
注意:这里是客户端外部,所以根目录"/"不包含项目名称. - 相对路径
上图中,CC的位置相对于a.html为同一个文件夹:./CC 或者 CC
…/ 的意思是 : 上一个文件夹中!
3. 关于"."
有"."那么就是涉及到类
比如说,CC是在servletContext容器中的一个servlet,是一个单例的对象。
所以我们在web.xml中配置该对象的时候,为:
4. 关于classPath
一般使用是在spring配置文件ApplicationContext.xml中 :
等等。。。 。。。