相对路径与绝对路径总结

一,基本概念:

相对路径:指由这个文件所在的路径引起的跟其他文件的路径关系

绝对路径:指目录下的绝对位置,直接到达目标位置,是从树形目录结构顶部的根目录开始到某个目录或文件的路径,由一系列连续的目录组成,中间用斜线分割,直到要指定的目录或文件。

形象比喻:用地址来比喻,你的绝对路径就是:中国陕西省渭南市富平县,当你在富平县是,你的朋友在渭南市高新区,那么你朋友对于你的相对路径就是../高新区,如果你朋友在陕西西安,那么它与你的相对路径就是../../西安。以此类推。如果使用相对路径,则有可能出现问题,因为它是相对于“URL请求的地址”去寻找资源。

/代表根目录,./代表当前目录  而../代表父目录

二,解决方式:

①,直接采用绝对路径:

  1)JSP 表达式 <%=request.getContextPath()%>=/LessonPractice040 例:

<a href="<%=request.getContextPath()%>/target.jsp">TargetPage</a>

  2)EL 表达式 ${pageContext.request.contextPath}=/LessonPractice040 例:

<a href="${pageContext.request.contextPath}/target.jsp">TargetPage</a>

②利用HTML中的<base>标签

  base元素可规定页面中所有链接的基准URL,默认情况下,页面中的链接都是相对于当前页面的地址,可以使用<base>标签中的href属性来设置所有的“相对基准URL”

  在一个文档中,最多能使用一个 <base> 元素。<base> 标签必须位于 <head> 元素内部。

<html>
    <head>
        <base href="${pageContext.request.scheme }://${pageContext.request.serverName }:${pageContext.request.serverPort }${pageContext.request.contextPath}/">
    
    </head>
    <a href="jsp/book.jsp>Login</a>(这里就可以使用相对路径,相对于base标签
</html>

三,总结路径写法:

  JSP——>Sevlet:

  表单提交数据后,交由Servlet处理,action路径可以写成:/项目名/目标Servlet的url-pattern,href里的也是。

不过这里建议使用上面的方式二,由base标签确定当前页面的基准位置,然后页面都是用url-pattern即可

  Servlet——>JSP:

  转发:(内部跳转,服务器行为,同一个请求)“/filename.jsp”,不需要加工程名,默认在当前项目中。

  重定向:(外部跳转,客户端行为,两次请求)“/工程名/filename.jsp”

 

posted @ 2019-12-09 07:46  Boogiever  阅读(1509)  评论(0编辑  收藏  举报