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,一经查实,立即删除!

相关文章

git学习 1

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

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

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

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…

贪心算法|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;规定每次只能选择位置相邻并且颜色相同的两堆 石子进行合并。合并后新堆的相对位置保…

unipush+个推实现消息推送

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

【Keil5-Boot和APP配置】

Keil5-Boot和App配置 ■ Keil5-Boot和APP配置■ 一&#xff1a;sct文件 sct文件配置■ 二&#xff1a;发布版本不需要在 C/C&#xff0c;Asm&#xff0c;Linker&#xff0c;中添加 CMDDEBUG 宏定义。■ 三&#xff1a;Debug版本需要在Linker添加 --pd"-DCMDDEBUG" 才…

windows版本-idea中下载的java版本在哪

1、点击idea的file-projectStructure 进入&#xff1a; 通过电脑目录进入该目录 找到bin目录&#xff0c;copy该目录地址 copy下来之后设置到系统环境变量中

脑电放大 LM386

LM386介绍 LM386 是一种音频集成功放&#xff0c;具有自身功耗低、电压增益可调整电源电压范围大、外接元件少和总谐波失真小等优点&#xff0c;广泛应用于录音机和收音机之中。 电源电压 4-12V 或 5-18V(LM386N-4);静态消耗电流为 4mA;电压增益为20-200dB;在引脚1和8开路时&a…

scan纯享代码 java

scan纯享代码 java 1 scan用法2 next3 nextLine 1 scan用法 在录入中间有回车的字符串的时候&#xff0c;不要使用next&#xff08;&#xff09;和nextLine&#xff08;&#xff09;的配合&#xff01;&#xff01; scan用法 Scanner scannernew Scanner(System.in); String…

【通信原理笔记】【三】模拟信号调制——3.5 角度调制(FM、PM)与其频谱特性

文章目录 前言一、相位与频率二、PM和FM的数学表示三、FM的频谱四、FM信号的带宽——卡松公式总结 前言 在之前介绍的几种调制方式中&#xff0c;我提到信噪比时计算的是用户解调后的信噪比&#xff0c;然而在北邮通信原理课中考虑的是解调器输入的信噪比&#xff0c;即考虑的…

python 图片 中文识别 pytesseract

python 图片 中文识别 pytesseract 参考链接 https://blog.csdn.net/weixin_47754149/article/details/125651707 微信 中 长截图&#xff0c;然后传到 电脑上面 安装 方法 https://digi.bib.uni-mannheim.de/tesseract/ tesseract-ocr-w64-setup-5.3.3.20231005.exe 安装的…

linux常用目录结构(目录命令)--6986字详谈

前面与大家讨论了linux的发展与由来&#xff08;这一块挺多的&#xff0c;小编还没有编写完成&#xff0c;希望大家理解&#xff09;&#xff0c;紧接着谈到了vmware安装及运行所存在的故障&#xff08;鉴定错误&#xff0c;虚拟机没有网&#xff0c;蓝屏等常见现象的总结及处理…

【vim 学习系列文章 20 -- a:mode 的值有哪些?】

请阅读【嵌入式开发学习必备专栏 之 Vim】 文章目录 a:mode 的值有哪些?举例Vim 底部状态栏设置 a:mode 的值有哪些? 在 Vim 脚本语言中&#xff0c;a:mode 常常用于函数内部&#xff0c;以获取该函数被调用时 Vim 正处于的模式。它主常用于那些可以从不同模式下被调用的函数…

what is tty?

waht is tty? 黑话&#xff1a;TTY 为什么使用Linux的时候CtrlC就会终止一个命令运行,ta是如何设置的? stty -a 桌面切换 CTRL ALT F1 – 锁屏 CTRL ALT F2 – 桌面环境 CTRL ALT F3 – TTY3 CTRL ALT F4 – TTY4 CTRL ALT F5 – TTY5 CTRL ALT F6 – TTY6

力扣HOT100 - 239. 滑动窗口最大值

解题思路&#xff1a; class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if(nums.length 0 || k 0) return new int[0];Deque<Integer> deque new LinkedList<>();int[] res new int[nums.length - k 1];// 未形成窗口for(int i 0; i <…