关于html页面引入静态资源(CSS、JS、JPG)的路径和表单action路径问题

来源:3-3 店铺类别区域信息的获取

哆丶哆

2019-07-31 22:58:10

老师,在视频讲解中,发现其中shopoperation.html页面是在WEB-INF/html/shop文件夹下,但是引入的shopoperation.js在resources/js/shop文件夹下,如图:

http://img.mukewang.com/climg/5d41a9c500019bcd04830500.jpg

对于页面引入JS文件的语句如下:

	<script type='text/javascript'
		src='../resources/js/shop/shopoperation.js' charset='utf-8'></script>
  1. 奇怪的是,shopoperation.html页面不是在WEB-INF下好几层么,../是退出上一级,这个时候不是就在WEB-INF/html这个目录下了么,为什么后面可以直接从resources开始找了?

  2. 另外,我记得路径中前面写“/”是根目录的意思,那这里html引入JS文件的src可否改写成:/resources/js/shop/shopoperation.js

  3. 记得之前有个项目,页面也在webapp的根目录下好几层的,但是在其中一个页面表单里的action属性直接填一个控制器的url映射地址,就可以访问到这个控制器,那能否说明,不管jsp还是html页面,也不管页面是在webapp下几级目录也好,页面的表单的action属性,默认就是以上下文为父级,前面加“/”就表示以服务器根目录为父级(即不带上下文那种)

  4. 对于超链接、静态资源(css、js、jpg等)的访问,href前面写“/”的话是代表在哪个目录下开始找呢?如果前面不写“/”(即相对路径),那是从哪个目录开始找呢?这根自身所处的位置有关么?


写回答

4回答

好帮手慕阿满

2019-08-01

同学你好,关于同学的问题,有如下回答:

1、是的,web项目中路径的访问,是以浏览器解析的url为依据。

2、这个是看同学的访问路径的,比如访问路径是http://localhost:8080/o2o/shopadmin/shoplist,就会转发到shoplist页面,路径如下:

http://img.mukewang.com/climg/5d42bd5700011afc03950321.jpg

3、如果在shoplist.html内写href="login.html",应该是不可以。页面都是在WEB-INF目录下的,这种直接访问应该是不允许的,应该使用转发访问。

4、浏览器解析的通过转发访问到的shoplist页面,直接访问jsp是没有经过浏览器解析,所以是一级一级的。

5、在页面中的action中,默认是没有上下文目录的,所以提交表单时,需要加上上下文路径,重定向时,默认的是没有上下文目录的,而转发是有上下文目录的。

祝:学习愉快~

0

哆丶哆

提问者

2019-08-01

老师,从您发的图来看

  1. 这就是浏览器解析URL时认为的路径树对吧,web项目中所有的跟路径相关的请求和访问都是以此为依据的么?

  2. 从这张图可以看出,无论jsp、html页面在在WEB-INF多少级,../返回上一级都是返回到“o2o”这个上下文的目录下,那也就是说,浏览器把WEB-INF下所有级别的页面当成同级对待了是么?那您看我下面这张图,如果我在shoplist.html内存在一个超链接,视图访问login.html页面,那超链接的href属性可否直接写成href="login.html"

  3. http://img.mukewang.com/climg/5d428ac9000160f104730858.jpg

  4. 在以往的项目开发训练时,我发现,每次访问webapp目录下的jsp页面,在浏览器地址栏输入的url是local:8080/上下文/XXX.jsp,也就是说,浏览器认为,webapp这个目录是在上下文目录之下咯,如果要访问webapp下的多级目录的jsp页面,url地址应该就是local:8080/上下文/子目录1/子目录2...../XXX.jsp。那我就感到奇怪了,既然WEB-INF下不论多少级的页面,都当做是子一级,为什么webapp目录下创子目录就会分等级呢?

  5. 对于web项目中多处涉及到路径填写的问题,有的是前面加“/”代表是服务器根目录下(如重定向),有的前面加“/”代表是上下文目录下(如页面表单中的action、请求转发等),那该如何区分,在什么情况下,前面加“/”是以谁为根目录

0

好帮手慕阿满

2019-08-01

同学你好,关于同学的问题,有如下的回答:

1、浏览器在解析地址时是根据地址的URL来解析的。它认为的目录结构和我们开发时的不同,

http://img.mukewang.com/climg/5d4251580001297008860472.jpg

浏览器会认为我们现在在shopadmin下。“../”回退一步,返回到o2o下。再进入resource/js/shop中,即可找到js文件,如:

http://img.mukewang.com/climg/5d42516d0001b3a110370173.jpg

2、可以的。

3、同学理解的不错。

4、在项目中,href前写“/”表示项目的根目录。如果不加,应该是根据url解析的地址目录开始找,例如上边的shopoperation.js文件。和自身所处的位置有关系。

5、同学是指下载引入JQuery吗?这里在HTML页面中,引入了如下的js。如:

http://img.mukewang.com/climg/5d4255ed000190e408660179.jpg

这里的引入的js已经对JQuery进行了封装,相当于已经引入了JQuery。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

0

哆丶哆

提问者

2019-07-31

对了老师,我忘记问了

5.先前学习jQuery的时候,不是说要下载两个js的么,怎么这么没有引入jQuery的js就可以使用jQuery的语法了么?

0

0 学习 · 8263 问题

查看课程