【一】目前项目中涉及路径跳转一共就两个位置
[1] 前台页面——>后台Servlet
浏览器端发送请求种类: URL地址 提交表单 超链接
[2]后台Servlet—->前台页面
服务器端控制跳转方式: 转发和重定向
路径:强制推荐使用【根路径】
转发根路径: /跳转地址
重定向根路径: /上下文路径/跳转地址
【二】前台页面——>后台servlet
[1]绝对路径(协议+IP+端口+跳转地址)
<%—优点:任何服务器中任何资源都可以访问 缺点:路径书写比较长 比较麻烦—%>
<a href="http://127.0.0.1:8080/web05_war_exploded/path1/add.jsp">同一个项目中同一个目录中文件add.jsp</a><br/>
<a href="http://127.0.0.1:8080/web05_war_exploded/path1/subpath/sub.jsp">同一个项目中子级目录中文件subpath/sub.jsp</a><br/>
<a href="http://127.0.0.1:8080/web05_war_exploded/path2/update.jsp">同一个项目中同级目录中文件path2/update.jsp</a><br/>
<a href="http://127.0.0.1:8080/web05_war_exploded/index.jsp">同一个项目中父级目录中文件index.jsp</a><br/>
<a href="http://127.0.0.1:8080/web05_war_exploded/LoginServlet">同一个项目中Servlet如何访问</a><br/>
<%--前提是web04发布--%>
<a href="http://127.0.0.1:8080/web04_war_exploded/index.jsp">web04项目中index.jsp文件(同一个服务器)</a><br/>
<a href="http://www.bjsxt.com">北京尚学堂官网如何访问(不同服务器)</a><br/>
[2]跟路径(必须/开始 后面紧跟【项目上下文】 +访问地址)
<%—优点:路径书写方式比较简单 缺点:只可以访问同一个服务器中项目—%>
<a href="/web05_war_exploded/path1/add.jsp">同一个项目中同一个目录中文件add.jsp</a><br/>
<a href="/web05_war_exploded/path1/subpath/sub.jsp">同一个项目中子级目录中文件subpath/sub.jsp</a><br/>
<a href="/web05_war_exploded/path2/update.jsp">同一个项目中同级目录中文件path2/update.jsp</a><br/>
<a href="/web05_war_exploded/index.jsp">同一个项目中父级目录中文件index.jsp</a><br/>
<a href="/web05_war_exploded/LoginServlet">同一个项目中Servlet如何访问</a><br/>
<a href="/web04_war_exploded/index.jsp">web04项目中index.jsp文件(同一个服务器)</a><br/>
<%--<a href="http://www.bjsxt.com">北京尚学堂官网如何访问(不同服务器)</a><br/>--%>
[3]相对路径A(直接写路径 在最前面不需要写/ 相对于本身 ./当前目录 ../返回上级 /下一级)
<%—优点:路径书写方式比较简单 缺点:只可以访问同一个服务器中项目 必须找相对关系 如果path的位置改变了 这个相对路径全部不对—%>
<a href="add.jsp">同一个项目中同一个目录中文件add.jsp</a><br/>
<a href="subpath/sub.jsp">同一个项目中子级目录中文件subpath/sub.jsp</a><br/>
<a href="../path2/update.jsp">同一个项目中同级目录中文件path2/update.jsp</a><br/>
<a href="../index.jsp">同一个项目中父级目录中文件index.jsp</a><br/>
<%--如果找到servlet中配置的注解是:/abc/LoginServlet。就相当于在web下新建abc包,在abc包里新建LoginServlet--%>
<%--此时找到servlet中配置的注解是:/LoginServlet。就相当于在web下新建LoginServlet--%>
<a href="../LoginServlet">同一个项目中Servlet如何访问</a><br/>
<a href="../../web04_war_exploded/index.jsp">web04项目中index.jsp文件(同一个服务器)</a><br/>
[4]相对路径B(相对于base)
<%—优点:书写最简单,并且不需要找相对关系只要顺着上面base继续写即可 缺点:只可以访问当前项目中内容—%>
<%—如果配置了base标签,那么相对路径就是基于base的—%>
<base href=”<%=request.getContextPath()+“/“%>”/>
<a href="path1/add.jsp">同一个项目中同一个目录中文件add.jsp</a><br/>
<a href="path1/subpath/sub.jsp">同一个项目中子级目录中文件subpath/sub.jsp</a><br/>
<a href="path2/update.jsp">同一个项目中同级目录中文件path2/update.jsp</a><br/>
<a href="index.jsp">同一个项目中父级目录中文件index.jsp</a><br/>
<a href="abc/LoginServlet">同一个项目中Servlet如何访问</a><br/>
<%-- <a href="/web04_war_exploded/index.jsp">web04项目中index.jsp文件(同一个服务器)</a><br/>--%>
[5]总结
1、路径规则适用于页面中 img a form ..
2.路径使用场景
如果访问的都是当前项目文件: 推荐使用基于base的路径
如果访问是同一个服务器中其他项目文件:推荐使用根路径
如果访问是不同服务器中项目:必须使用绝对路径
【三】后台servlet—->前台页面
[1]绝对路径(协议 端口 IP) http://www.taobao.com
转发:不支持
重定向:支持
[2]相对路径
转发和重定向都是支持相对路径(不建议写)
[3]根路径(/开头) (推荐使用)
转发和重定向都是支持根路径
转发: / 就已经代表了项目上下文
重定向: /代表是当前服务器