JavaWeb项目中的各种路径问题

1、引入外部css时的href问题

在这里插入图片描述
jsp中内容
在这里插入图片描述
css中内容
在这里插入图片描述
目标:将“测试url”文字居中变红

相对路径请求

相对路径表示的是要引入的index.css和当前jsp的位置关系。可以从目录结构看到当前css目录和当前index.jsp处于同一级目录,所以我们只需要直接使用css/index.css就可以成功获取到css资源了。

不加/直接写包名的都是相对路径
./表示相对于当前这一级目录下,这个是相对路径
../表示当前这一级目录的上一级目录下,这个是相对路径

写法1

<link rel="stylesheet" type="text/css" href="css/index.css">

写法2

<link rel="stylesheet" type="text/css" href="./css/index.css">

值得注意的是./表示的也是相对路径,但是它表示的是当前这一级目录下

绝对路径

所有以/开头的都是绝对路径。

因为我们的项目部署到服务器上了,所以这里的绝对路径的根目录是/,表示tomcat这个容器下,这里不用纠结根目录表示的是tomcat容器中哪一个文件,因为我们写的时候并不会考虑到这个问题。只需要遵循虚拟路径+/相对路径的写法即可

绝对路径怎么写呢?
绝对路径是由虚拟路径+/相对路径组成的,==相对路径前面的/==在idea中就相当于webapp目录或者web目录、在eclipse中就相当于WebContent目录。

虚拟路径是什么呢?
在idea中虚拟路径就是我们配置tomcat是配置的application context
在这里插入图片描述

而在eclipse中的虚拟路径则是/项目名

idea写法举例

<link rel="stylesheet" type="text/css" href="/test_war_exploded/css/index.css">

当然我们并不建议这种写法,因为我们的application context有可能会改变所以不能写死,这里建议使用EL表达式${pageContext.request.contextPath}来动态获取项目的虚拟目录

动态写法举例

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/index.css">

2、引入外部js和引入css同理不做解释

3、form表单提交时的action写法问题

jsp内容如下
在这里插入图片描述

serlvet只做简单获取input中输入的东西
在这里插入图片描述

相对于web容器的绝对路径的写法

也就是虚拟目录+/相对路径的方式### 写法举例

<form method="post" action="/test_war_exploded/doForm">

同样并不建议写死,建议使用el表达式来动态获取虚拟路径

相对路径的写法

<form method="post" action="doForm">

此时这个doForm先当于位于当前html页面的这一级域名目录下,就是这个
在这里插入图片描述
因为当前index.jsp位于这个位置,那么相对路径的写法也会是相对于这个级别的域名的

4、转发的路径写法问题

规则

  1. 转发实际上是服务器资源内部跳转的行为,所以我们在访问的写转发路径的时候不用写虚拟路径
  2. 并且我们在转发到另一个servlet或者jsp的时候可以不写/,写/和不写/效果上没有区别

在这里插入图片描述

serlvet代码如下
发送转发请求
在这里插入图片描述

在这里插入图片描述

xml注册的映射配置
在这里插入图片描述
访问doForm这个servlet
在这里插入图片描述

成功转发
在这里插入图片描述

5、重定向的路径写法问题

规则:

  1. 因为重定向本质上是两次请求,第一次请求然后告诉浏览器下一次访问的路径,然后根据这个路径进行第二次请求
  2. 所以重定向在写路径的时候必须使用虚拟目录
  3. 并且需要注意,一定要有/,不然会404
  4. 当然我们不建议写死,还是建议使用动态获取的方式

虚拟目录写死示范:

在这里插入图片描述

动态获取虚拟目录写法示范

在这里插入图片描述
注意这里不能省略index.jsp的/

6、serlvet的映射路径问题

在这里插入图片描述

7、ajax中的url问题

规则

1、完整路径的写法:包括协议名称、主机地址、端口、web项目名称等的完整请求路径

在这里插入图片描述

2、绝对于web容器的写法:不需要协议名、主机地址、端口、web项目名称,只需要请求的路径。

在这里插入图片描述

3、如果请求不以根路径开头,则该请求路径是相对于当前html所在的路径的。

在这里插入图片描述

声明:
ajax的路径问题参考该博客,该博客中的/webname是eclipse中的叫法,在idea中是application context
https://blog.csdn.net/shenju2011/article/details/90748409

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值