Servlet 路径 客户端路径 服务器端路径 ServletContext获得资源路径 Class获得资源路径 ClassLoader获得资源路径

(1)路径分为三种

1.绝对路径

2.相对路径(分两种)

带“/”的相对路径

不带“/”的相对路径

(2)客户端路径

1.超链接

绝对路径:<a href="http://Localhost:8080/javaEE-05/servlet/AServlet">点击</a>

相对路径(带“/”的相对路径):<a href="/javaEE-05/servlet/AServlet">点击</a> //相对于主机

相对路径(不带“/”的相对路径):<a href="AServlet"></a>    //相对于当前文件的位置

2.表单

绝对路径:<form action="http://Localhost:8080/javaEE-05/servlet/AServlet">

                           <input type="submit" value="">

                 </form>

相对路径(带“/”的相对路径):<form action="/javaEE-05/servlet/AServlet"> //相对于主机

                                                                <input type="submit" value="">

                                                    </form>

相对路径(不带“/”的相对路径):<form action="AServlet">    //相对于当前文件的位置

                                                                    <input type="submit" value="">

                                                        </form>

3.重定向

相对路径(带“/”的相对路径):response.sendRedirect("/javaEE-05/servlet/AServlet");  //相对于主机 路径带项目名称

相对路径(不带“/”的相对路径):response.sendRedirect("AServlet"); //相对于当前路径

总结:客户端路径 

客户端路径 带“/”的相对路径:相对于主机

客户端路径 不带“/”的相对路径:相对于当前路径(当前文件位置)

(2.1)建议使用“/”

在Servlet中的重定向建议使用“/”开头,路径相对以主机 要给出应用名称

例如:response.sendRedirect("/javaEE-05/servlet/AServlet");

其中/javaEE-05是当前应用名,如果将来修改了应用名称,那么也要修改所有重定向的路径,这一问题的处理方案是使用request.getContextPath()来获取应用名称。

response.sendRedirect(request.getContextPath+"/servlet/AServlet");


 (3)服务端路径

服务端路径必须是相对路径,不能是绝对路径

带“/”的相对路径

不带“/”的相对路径

1.请求转发

转发相对路径(带"/"的相对路径):

request.getRequestDispatcher("/servlet/AServlet").forward(request.response); //相对于web应用

转发相对路径(不带"/"的相对路径):

request.getRequestDispatcher("servlet/AServlet").forward(request.response); //相对于web应用

2.请求包含

包含相对路径(带"/"的相对路径):

request.getRequestDispatcher("/servlet/AServlet").include(request.response); //相对于web应用

包含相对路径(不带"/"的相对路径):

request.getRequestDispatcher("/servlet/AServlet").include(request.response); //相对于web应用

3.<url-pattern> 映射路径

<url-pattern>必须使用“/”开头,并且相对的是当前web应用

总结:请求转发包含映射路径带不带“/”都是相对于当前web应用


(4)ServletContext上下文对象获取资源路径

必须是相对路径 

ServletContext获取资源相对路径(带“/”的相对路径):

this.getServletContext.getRealPath("/servlet/AServlet");  //相对于当前web应用

ServletContext获取资源相对路径(不带“/”的相对路径):

this.getServletContext.getRealPath("servlet/AServlet");  //相对于当前web应用

(5)Class获取资源

必须是相对路径

带“/”的相对路径:类名.class.getResourceAsStream("/a.txt"); //相对于当前类classes路径

不带“/”的相对路径:类名.class.getResourceAsStream("a.txt"); //相对于classes所在路径

(6)ClassLoader获取资源

必须是相对路径

带“/”的相对路径:类名.class.getClassLoader().getResourceAsStream("/a.txt"); //相对于当前类路径

不带“/”的相对路径:类名.class.getClassLoader().getResourceAsStream("a.txt"); //相对于当前类路径

  










  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值