JavaWeb路径问题总结
一、与路径相关的操作
1 超链接
2 表单
3 转发
4 包含
5 重定向
6 <url-pattern>
7 ServletContext获取资源
8 Class获取资源
9 ClassLoader获取资源
二、客户端路径
超链接、表单、重定向都是客户端路径
2.1 客户端路径以“/”开头:相对当前主机
例如:http://localhost:8080/, 所以需要自己手动添加项目名,例如;response.sendRedirect("/day10_1/Bservlet");
2.2 不以“/”开头,相对当前页面所在路径
<a href="AServlet">,如果不以“/”开头,那么相对当前页面所在路径。如果是http://localhost:8080/day10_1/html/form.html。即:http://localhost:8080/day10_1/html/ASevlet
ps:强烈建议使用“/”开头的路径。
三、服务端路径
请求转发、请求包含都是服务器端路径3.1 服务器端路径以“/”开头:相对当前应用
例如:http://localhost:8080/项目名/ request.getRequestdispacher("/BServlet").for...();为:
http://localhost:8080/项目名/BServlet
3.2 不以“/”开头,那么相对当前页面所在路径
request.getRequestdispacher("/BServlet").for...();,假如当前Servlet是:http://localhost:8080/项目名/servlet/AServlet, 它就是http://localhost:8080/项目名/servlet/BServlet
ps:强烈建议使用“/”开头的路径。
四、九种路径相关操作示例
web.xml中<url-pattern>路径,(叫它Servlet路径)
>要么以“*”开头,要么以“/”开头
转发和包含路径
>以“/”开头:相对当前项目路径,例如:http://localhost:8080/项目名/request.getRequestdispacher("/BServlet").for...();
>不以“/”开头:相对当前Servlet路径。request.getRequestdispacher("/BServlet").for...();,假如当前Servlet是: http://localhost:8080/项目名/servlet/AServlet,就是http://localhost:8080/项目名/servlet/BServlet
重定向路径(客户端路径)
>以“/”开头:相对当前主机,例如:http://localhost:8080/, 所以需要自己手动添加项目名,例如response.sendRedirect("/day10_1/Bservlet");
页面中超链接和表单路径
> 与重定向相同,都是客户端路径!需要添加项目名
> <formaction="/day10_1/AServlet">
> <ahref="/day10_/AServlet">
> <a href="AServlet">,如果不以“/”开头,那么相对当前页面所在路径。如果是http://localhost:8080/day10_1/html/form.html。 即:http://localhost:8080/day10_1/html/ASevlet
> *****建立使用以“/”开头的路径,即绝对路径!
ServletContext获取资源路径
> 相对当前项目目录,即当然index.jsp所在目录
ClassLoader获取资源路径
> 相对classes目录
Class获取资源路径
> 以“/”开头相对classes目录
> 不以“/”开头相对当前.class文件所在目录。