JavaWeb中的绝对路径和相对路径
来源:互联网 发布:node.js 安装 编辑:程序博客网 时间:2024/04/26 19:27
前段时间自己也刚好遇到了这个问题,把相对路径改成绝对路径就没问题了,今天复习到这里就稍微总结一下。
使用绝对路径:使用相对路径可能会有问题, 但使用绝对路径肯定没有问题.
<a href="path/b.jsp">去BBB界面</a>
b.jsp
<a href="c.jsp">去CCC界面</a>
c.jsp
<a href="../a.jsp">去AAA界面</a>
这样写的话,肯定是能a到b,b到c,现在,我们用个TestServlet来处理a.jsp的请求.
a.jsp:
<a href="TestServlet">去BBB界面</a>
TestServlet中doGet()方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//模拟从数据库中查询数据
List<String> cities = Arrays.asList("樟村","玉山","上饶");
request.setAttribute("cities", cities);
//通过转发的方式响应/path/b.jsp
request.getRequestDispatcher("/path/b.jsp").forward(request, response);
}
返回到的b.jsp接收转发过来的信息:
城市:<%=request.getAttribute("cities") %>
这样a.jsp能到b.jsp,此时浏览器地址栏上显示的是Servlet的路径,而jsp页面的超链接还是相对于改jsp页面的地址,则可能会出现路径混乱的问题。
a.jsp--->/TestServlet --转发--->b.jsp(有一个超链接:和b.jsp在同一路径下的c.jsp)--->无法得到页面
该如何解决呢?肯定是要说到绝对路径了
二、编写绝对路径来避免上面的问题
1、在javaweb中什么叫“绝对路径”
相对于contextPath的路径。即任何的路径都必须带上contextPath
比如:http://localhost:8080/contextPath(当前WEB应用的上下文路径)/a.jsp
2、如何解决呢?
1)这里我们要先提一下JavaWeb开发中的"/"到底表示什么
①当前WEB应用的根路径:http://localhost:8080/contextPath/ :若 / 交给servlet容器来处理
--请求转发时:request.getRequestDispatcher("/path/b.jsp").forward(request, response);
--web.xml文件中映射servlet访问路径
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
②、WEB站点的根路径:http://localhost:8080/ :若 / 交给浏览器来处理
--超链接:<a href="TestServlet">去BBB界面</a>
--表达中的action:<form action="/test.jsp">
--做请求重定向的时候:response.sendRedirect("/a.jsp")
2)解决方法
如果 / 代表的是站点的根目录,在其前面加上contextPath,这个contextPath可以由request或application
的getContextPath()方法来获取。
<a href="<%=request.getContextPath() %>/path/c.jsp">去CCC界面</a>
这样上面的错误就解决了。
使用绝对路径:使用相对路径可能会有问题, 但使用绝对路径肯定没有问题.
一、下面先用一个小项目来说事,目录结构如下:
<a href="path/b.jsp">去BBB界面</a>
b.jsp
<a href="c.jsp">去CCC界面</a>
c.jsp
<a href="../a.jsp">去AAA界面</a>
这样写的话,肯定是能a到b,b到c,现在,我们用个TestServlet来处理a.jsp的请求.
a.jsp:
<a href="TestServlet">去BBB界面</a>
TestServlet中doGet()方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//模拟从数据库中查询数据
List<String> cities = Arrays.asList("樟村","玉山","上饶");
request.setAttribute("cities", cities);
//通过转发的方式响应/path/b.jsp
request.getRequestDispatcher("/path/b.jsp").forward(request, response);
}
返回到的b.jsp接收转发过来的信息:
城市:<%=request.getAttribute("cities") %>
这样a.jsp能到b.jsp,此时浏览器地址栏上显示的是Servlet的路径,而jsp页面的超链接还是相对于改jsp页面的地址,则可能会出现路径混乱的问题。
a.jsp--->/TestServlet --转发--->b.jsp(有一个超链接:和b.jsp在同一路径下的c.jsp)--->无法得到页面
该如何解决呢?肯定是要说到绝对路径了
二、编写绝对路径来避免上面的问题
1、在javaweb中什么叫“绝对路径”
相对于contextPath的路径。即任何的路径都必须带上contextPath
比如:http://localhost:8080/contextPath(当前WEB应用的上下文路径)/a.jsp
2、如何解决呢?
1)这里我们要先提一下JavaWeb开发中的"/"到底表示什么
①当前WEB应用的根路径:http://localhost:8080/contextPath/ :若 / 交给servlet容器来处理
--请求转发时:request.getRequestDispatcher("/path/b.jsp").forward(request, response);
--web.xml文件中映射servlet访问路径
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
②、WEB站点的根路径:http://localhost:8080/ :若 / 交给浏览器来处理
--超链接:<a href="TestServlet">去BBB界面</a>
--表达中的action:<form action="/test.jsp">
--做请求重定向的时候:response.sendRedirect("/a.jsp")
2)解决方法
如果 / 代表的是站点的根目录,在其前面加上contextPath,这个contextPath可以由request或application
的getContextPath()方法来获取。
<a href="<%=request.getContextPath() %>/path/c.jsp">去CCC界面</a>
这样上面的错误就解决了。
1 0
- javaweb中的绝对路径和相对路径
- JavaWeb中的绝对路径和相对路径问题
- JavaWeb中的绝对路径和相对路径
- ---javaWeb中的相对路径和绝对路径
- JavaWeb中的相对路径和绝对路径
- JavaWeb开发中的路径问题:绝对路径和相对路径
- JavaWeb 项目中的绝对路径和相对路径问题
- Javaweb中的绝对路径和相对路径(简单易懂)
- JavaWeb中的相对路径与绝对路径
- javaWEB总结(24):相对路径和绝对路径
- Javaweb 绝对路径和相对路径-巧理解
- JavaWeb 05 Web应用路径问题【绝对路径和相对路径】
- JavaWeb 项目中的绝对路径和相对路径以及问题的解决方案
- JavaWeb 项目中的绝对路径和相对路径以及问题的解决方案
- JavaWeb项目中的绝对路径与相对路径问题
- JSP、Servlet中的相对路径和绝对路径
- JSP、Servlet中的相对路径和绝对路径
- web工程中的相对路径和绝对路径
- PyCharm2016激活方案,亲测好用
- mysql命令行备份数据库
- (POJ - 3320)Jessica's Reading Problem 尺取法 set map
- XML文档
- 优化Oracle数据库查询10个方法
- JavaWeb中的绝对路径和相对路径
- 1.2.3.2 TCP/IP模型
- 编译Emacs出现libgif.so.7: cannot open shared object file: No such file or directory
- Android控件显示和隐藏
- FFmpeg中的滤镜(十):视频滤镜 -- blend, tblend
- 通过Process 遇到的坑
- 后缀数组 资料
- hash的简单应用
- 定时器的使用方法