JAVAWEB——绝对路径和相对路径,到底加不加“/“,以及解决方案

本文详细介绍了Web表单中action属性的使用,包括不带"/"和带"/"的区别,以及如何解决由此产生的问题。讨论了通过在action前添加项目名、使用EL表达式和设置base标签三种方式来确保表单正确提交到服务器。这些方法对于理解Web应用中URL路径的管理和表单交互至关重要。
摘要由CSDN通过智能技术生成

一、地址分类

  • 绝对地址

带有协议名称的是绝对地址, http://www.baidu.com , ftp://202.122.23.1

  • 相对地址

没有协议开头的, 例如 user/some.do , /user/some.do
相对地址不能独立使用,必须有一个参考地址。 通过参考地址+相对地址本身才能指定资源

二、表单中的action加“/”区别

1. 不加“/”

<form action="some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年龄:<input type="text" name="age"><br/>
    <input type="submit" value="提交参数">
</form>

注意此时的action是不以斜杠“/”开头的。此时我们点击表单访问的地址是
“http://localhost:8080/SpringMVC_05/” + “some.do”

在这里插入图片描述
2.加"/"

<form action="/some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年龄:<input type="text" name="age"><br/>
    <input type="submit" value="提交参数">
</form>

注意此时的action是以斜杠“/”开头的。此时我们点击表单访问的地址是http://localhost:8080/some.do
在这里插入图片描述

三、解决加"/"这个问题

方式一:我们只需要在/前面加上我们的项目名即可

<form action="/SpringMVC_05/some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年龄:<input type="text" name="age"><br/>
    <input type="submit" value="提交参数">
</form>

注意此时的表单名称前面加入了我们的项目名

该方式不够灵活,我们一般都是使用EL表达式

方式二:使用EL表达式

在jsp中我们一般使用EL表达式进行处理

<form action="${pageContext.request.contextPath}/some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年龄:<input type="text" name="age"><br/>
    <input type="submit" value="提交参数">
</form>

方式三:使用base标签

  • 加入一个base标签, 是html语言中的标签。

  • 表示当前页面中访问地址的基地址。
    你的页面中所有 没有“/”开头的地址,都是以base标签中的地址为参考地址
    使用base中的地址 + some.do 组成访问地址

<head>
    <title>静态资源测试</title>
    <base href="http://localhost:8080/SpringMVC_05/">
</head>
<body>
<form action="some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年龄:<input type="text" name="age"><br/>
    <input type="submit" value="提交参数">
</form>
</body>
</html>

这样获取的好处,就是我们可以不用每次都使用EL表达式,但我们也不可能每次去手动输入http://localhost/…这样的表达式,所以我们一般动态获取绝对路径

<%
    String basePath = request.getScheme() + "://" +
            request.getServerName() + ":" + request.getServerPort() +
            request.getContextPath() + "/";
%>
<html>
<head>
    <title>动态获取绝对路径</title>
    <base href="<%=basePath%>" />
</head>
<body>
     
<form action="some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年龄:<input type="text" name="age"><br/>
    <input type="submit" value="提交参数">
</form>
</body>
</html>
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值