Java

it2022-05-05  192

关于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中 :

等等。。。 。。。


最新回复(0)