#Java中的绝对路径与相对路径
近些天对Java中的绝对路径与相对路径比较模糊,本着一个学到手都是自己的原则,下面我们来好好区分下绝对路径与相对路径。
- 1.绝对路径: 听着名字就大概可以了解到这个东西是绝对的,我们查一下百度百科"绝对":指没有任何条件限制,不受任何限制而言。这个就比较官方一点了,咱们用咱们计算机的事物去分析,举个例子: 比如说你要读取某个文件,如果说这个文件在你的硬盘中(D:\Java\天线宝宝传奇.txt),那么就可以说他是绝对的,因为他相对于你当前的程序他是绝对的,不管你用Eclipse打开还是用IDEA打开,还是说 你把项目从C盘移动到D盘,天线宝宝传奇这本书他都是不变的。
- 2.相对路径:从名字上我们就可以知道,绝对与相对是相比较而言的,如果说绝对路径是相对于磁盘来说(也可以是服务器)不变的,那么相对路径就可以说是相对于项目来说不变的
下面来说说关于访问时候所出现的问题
在我们访问的时候不外乎以下几种情况
- 1./
- 2.不加/
- 3.localhost:8080/(加不加项目名称这个需要你自己去设置在application.properties里面Springboot项目),他们之间的关系
- 4.webpp目录
以上几点是我们需要重点区分的,下面我们来一一进行区分
先分享以下博客,WebContent与webapp的区别和联系: https://www.jianshu.com/p/49d106cee189 侵删
一般情况下我们都是将Jsp/Css/Image文件放置到webapp目录下面一般情况下我们需要进行如下的配置:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
意味着,我们从后端映射的请求回去webapp下面的/WEB-INF/jsp/去寻找文件后缀为jsp的文件
代码结构如下
@Controller
public class TestPathController {
@RequestMapping(value = "/index" ,method = RequestMethod.GET)
public ModelAndView init() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
}
前端的代码结构
展示页面情况
访问地址http://localhost:8080/aoc/index
那么下面就到了我们所讨论的第一个问题,那么我们一般情况下所说的相对路径指的到底是哪里?
我们先做出一个大胆的推测:
- 1.指的我们所说的src目录
- 2.指的我们所说的webapp目录
我个人更加倾向于第一种吧,因为想到了所有的目录都可能是相对而言的,不单单是前端页面,后端请求servlet同样也是这样子的或者说包括我们的Mybatis里面的.sql文件 这些都是需要相对路径去访问的,下面再次提出一个问题。
咱们所指的classPath:这个路径指的是哪里
- 1.src目录?
- 2.还是有其他所指?
那么下面就回到了我们最初的问题,还是探究相对路径指的是哪里?
- 或 中的路径 “/”代表的是 web 站点的根路径.。
也就是我们平时所说的:http://localhost:8080/
- 2.三.web.xml中的路径
Servlet 映射 /xx 中的 “/” 代表当 前 web 应用的根路径。
web应用程序的的根目录:http://localhost:8080/abosulutelyOrRelatively/
-3 .四.转发和重定向中的路径问题
1. 如果没有“/”,如request.getRequestDispatcher("hello.jsp ").forward(request,
response) 和response.sendRedirect(" hello.jsp ") 就表示在同级目录
中寻找login.jsp文件。
- 如果路径中包含“/”(注意,这里的“/”是指路径中的第一个“/”)
a, 转发
如request.getRequestDispatcher("/hello.jsp").forward(request, response) :代表到http://localhost:8080/test/ 下目录寻找hello.jsp文件。
b,重定向
如response.sendRedirect("/hello.jsp"):代表到http://localhost:8080/ 目录下寻找hello.jsp文件
收获还是蛮大的,知识还是记录下来的好