Web路径专题

文章目录

    • 1.资源定位
        • 1.前置条件
          • 上下文路径设置
        • 2.上下文路径介绍
          • 重点说明
        • 3.资源定位方式
          • 资源路径 = 上下文路径 + 资源位置
          • a.html定位
          • C.java定位
        • 4.浏览器和服务器解析的区别
          • 1.浏览器解析`/`(地址变化)
          • 2.服务器解析`/`(地址不变)
        • 5.带`/`与不带`/`的区别
          • 1.带`/`指的是路径
          • 2.不带`/`指的是资源
        • 6.相对路径直接找到servlet
          • 1.servlet位置
          • 2.login.html位置
          • 3.定位方式
    • 2.浏览器默认相对路径
        • 1.基本介绍
        • 2.问题说明
    • 3.base标签(更改浏览器默认相对路径)
        • 1.基本介绍
        • 2.代码演示
    • 4.服务端请求转发定位资源
        • 1.基本介绍
        • 2.代码演示
          • 1.a.html(最初界面)
          • 2.C.java(中转界面 )
          • 3.b.html(最终界面)
          • 4.结果展示
        • 3.小细节
          • 转发时不带斜杠,服务器默认也是按照前面是上下文路径拼接
    • 5.课后练习
        • 基本环境
        • 第三题
          • 1.使用相对路径
          • 2.使用浏览器默认相对路径
          • 3.使用base标签更改浏览器默认相对路径
          • 4.使用绝对路径
        • 第四题
          • 1.使用相对路径
          • 2.使用绝对路径
        • 第五题
          • 1.使用相对路径
          • 2.使用base标签更改浏览器默认相对路径
          • 3.使用绝对路径
    • 6.小结
        • 1.匹配路径方法(重点)
          • 1.上下文路径 + 资源路径
          • 2.重定向到某个url如果含有中文,需要手动进行url编码
        • 2.注意事项和细节说明
          • 1.Web工程的相对路径和绝对路径
        • 3.斜杠的解析
          • 1.带斜杠与不带斜杠
          • 2.获取真实路径和上下文路径
          • 3.这个目录才是真正执行的文件
          • 4.重定向的斜杠
          • 5.重定向课后练习
            • 1.相对路径
            • 2.绝对路径(推荐)
            • 3.动态获取上下文路径拼接(强烈推荐)
          • 6.老韩小结
          • 7.base路径优化
            • jsp动态获取上下文路径

1.资源定位

1.前置条件
上下文路径设置

image-20240128110508450

2.上下文路径介绍

image-20240128153545319

重点说明
  1. 他们两个是互通的
  2. 意思就是假如C类想要定位a.html,就可以使用相对路径../d1/d2/a.html
  3. 这里的../虽然得到的是java目录下的资源,但是我说过了,他跟webapp是互通的,都称之为上下文路径
3.资源定位方式
资源路径 = 上下文路径 + 资源位置
a.html定位

(http://localhost:8080/webpath/) + ( d1/d2/a.html)

C.java定位

(http://localhost:8080/webpath/) + ( c/C) (假设web.xml里面配置的路径是/c/C)

4.浏览器和服务器解析的区别
1.浏览器解析/(地址变化)

http://localhost:8080/ 比如:超链接,表单提交,重定向

2.服务器解析/(地址不变)

http://localhost:8080/webpath/ 比如:请求转发,配置servlet路径,获取真实路径,获取上下文路径

5.带/与不带/的区别
1.带/指的是路径
2.不带/指的是资源
6.相对路径直接找到servlet
1.servlet位置

image-20240128150721579

2.login.html位置

image-20240128150832848

3.定位方式

可以看到这个servlet的地址就是上下文路径加资源,在这个表单中使用./可以得到webapp的位置,这个其实就是上下文路径,再加上servlet的资源路径即可action="./c/C"

2.浏览器默认相对路径

1.基本介绍

image-20240128104132014

2.问题说明

image-20240128104843635

3.base标签(更改浏览器默认相对路径)

1.基本介绍

image-20240128105105645

2.代码演示
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
<!--    这个解析的就是http://localhost:8080/webpath/  --><base  href="/webpath/">
</head>
<body>
<form action="b.html"><input type="submit" value="跳转">
</form>
</body>
</html>

image-20240128141534051

image-20240128141540255

4.服务端请求转发定位资源

1.基本介绍
  1. 请求转发解析的/是上下文路径
  2. 请求转发将请求和响应都转发到了那个界面,所以响应给浏览器的也是那个界面
  3. 开发中一般都是使用转发或重定向到那个界面
2.代码演示
1.a.html(最初界面)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
<!--    这个解析的就是http://localhost:8080/webpath/  --><base  href="/webpath/">
</head>
<body>
<form action="c/C" method="get"><input type="submit" value="跳转">
</form>
</body>
</html>
2.C.java(中转界面 )
package c;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @author 孙显圣* @version 1.0*/
@WebServlet(urlPatterns = "/c/C") //此时解析的就是http://localhost:8080/webpath/c/C
public class C extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//请求转发到b.htmlreq.getRequestDispatcher("/b.html").forward(req,resp);//这里解析的是http://localhost:8080/webpath/b.html}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}
3.b.html(最终界面)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
我是b.html
</body>
</html>
4.结果展示

image-20240128143831682

image-20240128143836926

3.小细节
转发时不带斜杠,服务器默认也是按照前面是上下文路径拼接

image-20240128143949230

5.课后练习

image-20240128144554430

image-20240128144610106

image-20240128144639552

基本环境

image-20240128152406864

第三题
1.使用相对路径

action=“./views/user/user.html”

2.使用浏览器默认相对路径

action=“views/user/user.html”

3.使用base标签更改浏览器默认相对路径

image-20240128145854552

action=“views/user/user.html”

4.使用绝对路径

action=“/webpath/views/user/user.html”

第四题
1.使用相对路径

…/views/user/user.html

(这里的…/就直接是java目录下的了,也就是到了上下文路径)

2.使用绝对路径

/views/user/user.html

第五题
1.使用相对路径

href=“…/…/login.html”

2.使用base标签更改浏览器默认相对路径

image-20240128155241490

href=“login.html”

3.使用绝对路径

href=“/webpath/login.html”

6.小结

1.匹配路径方法(重点)
1.上下文路径 + 资源路径
  1. 一共四种情况
    1. 相对:./ …/之类的(浏览器/服务器)
    2. 默认相对:浏览器有默认相对路径,服务器虽然也有但是不建议使用
    3. 修改默认相对:浏览器可以通过base修改默认相对路径
    4. 绝对:使用/开头(浏览器/服务器)
  2. 无论使用绝对路径还是相对路径,都要先找到上下文路径
  3. 上下文路径对于相对路径来说就是找到**webapp/java/**这两个都是一样的
  4. 上下文路径对于绝对路径来说,注意浏览器解析还是服务器解析的/是不同的
  5. 然后再匹配资源路径
2.重定向到某个url如果含有中文,需要手动进行url编码

image-20240208221101204

2.注意事项和细节说明
1.Web工程的相对路径和绝对路径

image-20240128160351696

3.斜杠的解析

image-20240128160447315

1.带斜杠与不带斜杠

image-20240128161749676

2.获取真实路径和上下文路径
package c;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @author 孙显圣* @version 1.0*/
@WebServlet(urlPatterns = "/c/C") //此时解析的就是http://localhost:8080/webpath/c/C
public class C extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//这里获取的是http://localhost:8080/webpath/String realPath = super.getServletContext().getRealPath("/");String contextPath = super.getServletContext().getContextPath();System.out.println(realPath);System.out.println(contextPath);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);}
}

image-20240128161040285

3.这个目录才是真正执行的文件

image-20240128161539036

4.重定向的斜杠

image-20240128161834518

5.重定向课后练习

image-20240128162328409

image-20240128163023539

1.相对路径

resp.sendRedirect(“…/views/user/user.html”);

2.绝对路径(推荐)

resp.sendRedirect(“/webpath/views/user/user.html”);

3.动态获取上下文路径拼接(强烈推荐)

String contextPath = super.getServletContext().getContextPath();
resp.sendRedirect(contextPath + “/views/user/user.html”);

6.老韩小结

image-20240128162044228

7.base路径优化
jsp动态获取上下文路径

image-20240128164743198

image-20240128164824537

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

备份工具--kopia

kopia 备份测试 安装minio wget https://dl.min.io/server/minio/release/linux-amd64/minio 创建目录 mkdir -p /data/myapp/minio mkdir -p /data/minidata 配置启动 cat start_minio.sh nohup /data/myapp/minio/minio server --console-address :“9090” /data/minidata…

数据流重定向

数据流重定向 标准输入 0 标准输出 1 标准错误输出 2 输出 > 标准输出 1>标准错误输出 2>标准输出标准错误输出 2>&1 或 &> 输入 < 标准输入 0<eof输入 cat > catfile <<“eof” 双向重定向 tee [command] | tee -a [file] [comma…

Spring和Spring MVC和MyBatis面试题

面试题1&#xff1a;请简述Spring、Spring MVC和MyBatis在整合开发中的作用&#xff1f; 答案&#xff1a; Spring&#xff1a;是一个轻量级的控制反转&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;的容器框架。它提供了强大的依赖注入功能&#xff0c;…

git学习 1

打开自己想要存放git仓库的文件夹&#xff0c;右键打开git bush&#xff0c;用git init命令建立仓库 用 ls -a(表示全都要看&#xff0c;包括隐藏的)可以看到git仓库 也可以用 git clone 接github链接&#xff08;点code选项里面会给链接&#xff0c;结尾是git的那个&#xf…

程序员开发指南-- reference

01. 项目介绍 为开发人员分享快速参考备忘清单【速查表】 GitHub - jaywcjlove/reference: 为开发人员分享快速参考备忘清单(速查表) 02. 部署Quick Reference网站 docker pull wcjiang/reference docker run --name reference --rm -d -p 9667:3000 wcjiang/reference:lat…

阿里云ACK k8s集群迁移

1、创建k8s集群 阿里云ACK创建 2、创建所需的第三方插件 ACK ingress创建 3、导出原有ACK集群配置 包含deployment、service、ingress、PersistentVolumeClaim 执行命令 kubectl get deployment,service,secret,ingress,PersistentVolumeClaim -n <namespace_name> -o y…

OpenHarmony南向开发实例:【智能可燃气体检测系统】

样例简介 本项目是基于BearPi套件开发的智能可燃气体检测Demo&#xff0c;该系统内主要由小熊派单板套件和和MQ5可燃气体检测传感器组成。 智能可燃气体检测系统可以通过云和手机建立连接&#xff0c;可以在手机上控制感应的阈值&#xff0c;传感器感知到的可燃气体浓度超过阈…

【ISO体系认证】云服务信息安全管理体系,一起来看看吧!

云服务信息安全管理体系&#xff08;简称“CSISMS”&#xff09;&#xff0c;以ISO/IEC 27017:2015为认证依据。ISO/IEC 27017标准是建立在ISO/IEC 27001信息安全管理体系框架和ISO/IEC 27002作为最佳实践控制设置的坚实基础之上&#xff0c;通过ISO/IEC 27017标准认证&#xf…

C++ | Leetcode C++题解之第12题整数转罗马数字

题目&#xff1a; 题解&#xff1a; const string thousands[] {"", "M", "MM", "MMM"}; const string hundreds[] {"", "C", "CC", "CCC", "CD", "D", "DC&qu…

azkaban的写法

先创建一个.job文件和一个.sql文件 sql语法写到一个test名字的文件里&#xff0c;之后job写法如下&#xff1a; typecommand commandhive -f test6.sql 一定要严格写&#xff0c;不管是字母还是空格&#xff0c;单引号中就是sql文件的名字 然后将它们一块打包&#xff0c;启动…

ubuntu系统逻辑卷Logical Volume扩容根分区

Linux LVM详解 https://blog.csdn.net/qq_35745940/article/details/119054949 https://blog.csdn.net/weixin_41891696/article/details/118805670 https://blog.51cto.com/woyaoxuelinux/1870299 LVM&#xff08;Logical Volume Manager&#xff09;逻辑卷管理&#xff0c…

Go语言开发小技巧易错点100例(十四)

往期回顾&#xff1a; Go语言开发小技巧&易错点100例&#xff08;一&#xff09;Go语言开发小技巧&易错点100例&#xff08;二&#xff09;Go语言开发小技巧&易错点100例&#xff08;三&#xff09;Go语言开发小技巧&易错点100例&#xff08;四&#xff09;Go…

贪心算法|452.用最少数量的箭引爆气球

力扣题目链接 class Solution { private:static bool cmp(const vector<int>& a, const vector<int>& b) {return a[0] < b[0];} public:int findMinArrowShots(vector<vector<int>>& points) {if (points.size() 0) return 0;sort(p…

rk3588开发板上安装ssh服务

目的&#xff1a;实现远程访问和控制&#xff0c;其他主机远程控制rk3588 方法及操作步骤&#xff1a; 1&#xff09;安装&#xff1a;sudo apt install openssh-server 2&#xff09; 查看运行状态 sudo systemctl status ssh 其它主机远程连接该开发板的ip和端口22即可

urwid,一个好用的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个好用的 Python 库 - urwid。 Github地址&#xff1a;https://github.com/urwid/urwid Urwid 是一个功能强大的 Python 库&#xff0c;用于创建基于文本的用户界面&#xf…

[23年蓝桥杯H题] 合并石子

问题描述 在桌面从左至右横向摆放着 N 堆石子。每一堆石子都有着相同的颜色&#xff0c;颜 色可能是颜色 0 &#xff0c;颜色 1 或者颜色 2 中的其中一种。 现在要对石子进行合并&#xff0c;规定每次只能选择位置相邻并且颜色相同的两堆 石子进行合并。合并后新堆的相对位置保…

试除法求素数

目录 一、题目 描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 二、结论 三、代码 四、讲解 五、注意点&#xff1a; 一、题目 描述 输入M、N&#xff0c;1 < M < N < 1000000&#xff0c;求区间[M,N]内的所有素数的个数。素数定义&#xff1a;除了1以…

设计模式(015)行为型之模板方法模式

模板方法模式&#xff0c;它定义了一个算法的骨架&#xff0c;将一些步骤延迟到子类中实现。这个模式允许子类重新定义算法的某些步骤&#xff0c;而不改变算法的结构。通常&#xff0c;模板方法由一个抽象类实现&#xff0c;其中包含算法的基本步骤&#xff0c;并且这些步骤可…

常用的启发式算法

常用的启发式算法 引言&#xff1a;一、启发式算法概述&#xff1a;二、常用的启发式算法&#xff1a;三、启发式算法的选择与应用&#xff1a;四、总结&#xff1a; 引言&#xff1a; 在计算机科学和人工智能领域&#xff0c;启发式算法是一类用于解决优化问题的算法。它们通…

unipush+个推实现消息推送

1.注册个推平台的帐号个推&#xff0c;专业的数据智能服务商-为垂直领域提供数据智能解决方案 2.应用列表中选择新增应用/服务 3.填写下应用信息4.创建好应用后在manifest.json中的sdkConfigs配置上写入appid、appkey、appsecret "sdkConfigs" : {"ad" :…