文章目录
客户端路径和服务器端路径
- 客户端路径需要给出应用名称,例如:/day05_1/AServlet
- 服务器端路径无需给出应用名称,例如:/AServlet
客户端路径(需添加项目名)
页面中都是客户端路径:
-
超链接的href
-
表单的action
-
<img>
的src -
重定向也是客户端路径:response.sendRedirect("/day05_1/BServlet");
重定向路径(客户端路径)
以“/”开头:相对当前主机,例如:http://localhost:8080/,
所以需要自己手动添加项目名,例如;response.sendRedirect("/重定向项目名/Bservlet");
页面中超链接和表单路径
与重定向相同,都是
客户端路径
!需要添加项目名
<form action="/day10_1/AServlet">
<a href="/day10_/AServlet">
<a href="AServlet">
,如果不以“/”开头,那么相对当前页面所在路径。如果是
http://localhost:8080/day10_1/html/form.html
。
即:http://localhost:8080/day10_1/html/ASevlet
建立使用以“/”开头的路径,即绝对路径!
服务器端路径(项目内,无需添加项目名)
<url-pattern>
(Servlet路径)- 请求转发和请求包含
- ServletContext获取资源等
Servlet路径
web.xml中<url-pattern>
路径,(叫它Servlet路径!)
要么以“*”开关 (慎用
)
要么为“/”开头 (推荐
)
转发和包含路径
以“/”开头:相对当前项目路径,例如:http://localhost:8080/项目名/ request.getRequestdispacher("/BServlet").forward(); (
推荐
)
不以“/”开头:相对当前Servlet路径。 request.getRequestdispacher("/BServlet").forward();,
假如当前Servlet是:http://localhost:8080/项目名/servlet/AServlet,
就是http://localhost:8080/项目名/servlet/BServlet
ServletContext获取资源路径
相对当前项目目录,即当然index.jsp所在目录
ClassLoader获取资源路径(类加载器)
相对classes目录,不能以/开头
任何一个类得到ClassLoader :xxx.class.getClassLoader();
Class获取资源路径
以“/”开头相对classes目录
不以“/”开头相对当前.class文件所在目录。