背景:html

在刚开始学习javaweb,使用servlet和jsp开发web项目的过程当中,一直有一个问题困扰着我:servlet 和 jsp 之间相互跳转,跳转的路径应该如何书写,才能正确的访问到相应的servlet或jsp文件?后来,在课堂上,通过老师的讲解,再加上本身的一些思考和实验,终于对web项目中文件中路径的访问有了一些了解。前端

注:如下只是我我的在测试中的一些理解,内容并不全面。java

案例准备:web

为了更好的解释web项目中的路径问题,我准备了一个简单的web项目,项目的结构以下图:浏览器

上图结构只须要关注红框圈起来的部分,第一个红色框圈起来的是servlet文件;而咱们知道,在eclipse的动态web项目中,html 和 jsp等文件都是在WebContent这个文件夹下的,我在WebContent文件夹下建立了一个叫作VIEW文件夹,里面放了两个前端页面,这就是上图的第二个红框;在WebContent文件夹下也直接放置两个前端页面,这就是上图的第三个红框。服务器

访问路径的分类:eclipse

一、相对路径:jsp

相对路径的概念这里就不解释了,直接来谈一谈在web项目中的相对路径是什么样以及如何使用的吧。学习

在web项目中,若咱们在访问路径的最前端不加上“/”,那就是使用相对路径,以下图所示:测试

上图中是一个html页面,它就是项目中WebContent下的login2.html。这个html中写了一个form表单,表单的提交路径action叫UserController,他就是项目中第一个红框里的UserControllerServlet,点击提交后,表单数据将会提交到这个servlet当中。UserController前没有加“/”,因此使用的就是相对路径。那这个相对路径是相对于谁呢?就是相对于当前的这个html所在的文件夹。

首先咱们明确一点,在eclipse的web项目中,前端页面(html,jsp......)的默认起始路径就是WebContent,而java文件的起始路径就是src。假设咱们要访问我这个项目中的login2.html,那路径以下图:

能够看到,访问路径是不须要加上WebContent的。同理,如果想要访问servlet这种src下的Java文件,也是直接“IP地址/项目名/servlet”,不须要写上包名。

而相对路径相对的就是当前文件所在的路径的前缀,也就是上图中的http://localhost:8080/Jsp_Lab2/,也就是说,上面的form表单提交数据到UserController这个servlet,那提交路径实际上就是将UserController这个字符串与当前路径的前缀拼接起来,也就是成了http://localhost:8080/Jsp_Lab2/UserController,而这正是我项目中的UserControllerServlet这个servlet的路径。经过浏览器顶端的url显示能够获得验证:

再好比,在WebContent下有一个VIEW文件夹,里面也有一个login.html文件,它的代码以及路径以下所示:

由于WebContent是初始地址,因此要访问WebContent里面的子文件夹里面的文件,就须要加上子文件夹的名称,就如上面的VIEW文件夹。而这时,若在此login.html页面使用相对路径,那相对的就是http://localhost:8080/Jsp_Lab2/VIEW。

能够看到,上图的表单中,action依然为UserController,因此表单被提交后,提交的路径就是将UserController与相对路径拼接,也就是http://localhost:8080/Jsp_Lab2/VIEW/UserController,数据将被发送到这个地址。以下图:

能够看到,浏览器中的路径确实如此,而且产生了404错误。这是由于在这个路径是错误的,在这个路径下并无这个文件的存在。由于上图的login.html在WebContent中的VIEW文件夹下,因此使用相对路径,那最后的路径中也必定有VIEW的存在。

而UserController的路径其实是http://localhost:8080/Jsp_Lab2/UserController。这时,咱们想要访问的servlet是在/VIEW/login.html的上一级,使用相对路径就难以实现了,由于路径的前缀已经定死了。这时,咱们只能使用绝对路径来访问。

二、绝对路径

绝对路径的使用方式就是在路径的开始加上“/”,若在路径开始处加上了一个“/”,那相对路径前缀就会被“清零”,路径从最初位置开始。

那么,绝对路径的最初位置路径是什么呢?就是服务器的IP地址+端口号,好比在本机访问,那就是http://localhost:8080。也就是说使用绝对地址,那访问所写的路径将会被拼接到http://localhost:8080以后。

使用以前报404的例子来演示,在UserController前加一个‘/’表示表单提交使用绝对路径。以下图所示:

运行以后的路径如图所示:

提交表单后,跳转到的页面以下所示:

能够看到,UserController确实被直接拼接到了服务器IP地址以后,也就证实了绝对路径的起点就是服务器的IP地址。

那如今咱们来解决一下相对路径的最后一个案例:VIEW当中的页面使用相对来说没法跳转到位于src下的servlet中去。

由于咱们知道,src下的UserController这个servlet的访问路径是http://localhost:8080/Jsp_Lab2/UserController,在IP地址后还有一个项目名Jsp_Lab2,因此咱们能够将form表单的action改为下图中的样子:

首先以“/”开头,表示相对路径,再加上项目名,再加上servlet的 url 映射,最后就拼接成了完整的url。运行结果以下:

总结:

一、绝对路径就是在路径开头加“/”,那路径的起始就是服务器IP地址;

二、而相对路径就是开头不加“/”,而起始就是发起跳转的文件的所在路径;

java web项目 相对路径怎么写_理解JavaWeb项目中的路径问题——相对路径与绝对路径...相关推荐

  1. python中filepath路径怎么写_详解Python中的路径问题

    1. 绝对路径引入 Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止.下面命令可以查看当前的搜索路径: import sys print(sys.path) sys.pa ...

  2. java web 不用框架_MyShop-不用框架的基础javaweb项目

    javaweb基础开发Servlet+jsp+mysql+html+css+js (找一个前端模板,一大堆html,自己写的没有模板的美观) 数据库设计 来一个最基础的用户表 drop table i ...

  3. 用php web编程作业,代做CSE2ISD作业、代做Web,php程序作业、代写Java/web编程作业、代写C/C++/Java留学生作业...

    代做CSE2ISD作业.代做Web,php程序作业.代写Java/web编程作业.代写C/C++/Java留学生作业 日期:2018-10-08 10:00 CSE2ISD – Information ...

  4. java web电子相册_电子相册Javaweb项目源码及数据库

    [实例简介] 这是一个电子相册,可实现用户注册,登录,验证码验证,本地图片上传在线浏览等功能 [实例截图] [核心代码] exun1u ├── db.sql └── ElectronicAlbum ├ ...

  5. Java web 开发的概念、环境配置、创建项目过程详解(Eclipse)

    Java Web 开发 Java Web 开发概念 搭建过程 详解 在eclipse创建Dynamic Web Project 创建时选择Tomcat的版本 创建项目成功 eclipse环境下如何配置 ...

  6. java动态拼接请求_在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案...

    在开发网站时候我们会遇到下面问题? - 在引用网页中引用js和css或者动态的Servlet的时候我们是写绝对路径还是相对路径? - 如果写相对路径吧,上线偶尔会报404,还要手动去拼接绝对路径 - ...

  7. java中项目启动时加载_如何在项目启动时,加载或解析某配置文件

    在web项目中有很多时候需要在项目启动时就执行一些方法,而且只需要执行一次,比如:加载解析自定义的配置文件.初始化数据库信息等等,在项目启动时就直接执行一些方法,可以减少很多繁琐的操作. 在工作中遇到 ...

  8. java路径向上引用_关于javaweb中的绝对路径和相对路径(关于引用外部资源时的路径问题)...

    相信大家在写web项目时,对于外间资源的引用多多少少都会用到,而此时引用的路径就显得十分重要!(在跳转或者其它请求后页面样式得丢失便就是路径得问题) 在开始之前大家需要明白一点就是web项目创建的时候 ...

  9. java web 酒店管理系统_GitHub - inkss/hotelbook-JavaWeb: 酒店管理系统-JavaWeb期末项目。...

    酒店管理系统 受限于当时的知识储备,所采用的技术都非常的原始,完成度也不是很好,基本就是单纯对表的增删改查.一个成熟的项目不仅仅只是对表的增删改,最重要的是业务上的处理,报表数据的分析等等.当初在学校 ...

最新文章

  1. java免费低代码开发平台,steedos-platform
  2. 机器学习中的范数规则化之(二)核范数与规则项参数选择
  3. 【VC基础】1、特性和分类
  4. python编程定义圆_Python语言编程系列014——PyQt中自定义圆形指示灯
  5. C# 连接Oracle(利用ODP.net,不安装oracle客户端)
  6. uni-app实现微信小程序本地图片转为base64
  7. Spark源码分析之Master注册机制原理
  8. Unity3D动画面板编辑器状态属性对照表
  9. 修饰类方法(静态方法)
  10. Spring Boot 2.2 正式发布,性能大幅提升、Java 13 支持|CSDN博文精选
  11. Flink on Zeppelin (3) - Streaming 篇
  12. 平衡二叉树的调整整理
  13. 前端之路--第三周学习
  14. Illustrator CS5序列号
  15. 镜像加速器——使用加速器可以提升获取Docker官方镜像的速度
  16. 如何在markdown中打出上标、下标和一些特殊符号 from jianshuer 这是朕的江山
  17. HUAWEI华为MateBook X Pro 2020 i7 16GB+512GB (MACHC-WAE9LP)原装出厂系统恢复原厂系统(送解压密码)
  18. 苹果证书导出p12文件
  19. kepserver在设备上添加项目失败_隔空投送存储项目失败怎么办
  20. Linear Discriminant Analysis (LDA)

热门文章

  1. android充电器给mac充电,苹果MagSafe充电器也可以给安卓机充电?看看评测
  2. 荧光素标记双孢蘑菇凝集素(ABL);FITC-ABL
  3. navicat使用代理服务器连接数据库
  4. Android App的工作原理
  5. Unbuntu 18.04 显卡驱动崩溃
  6. R语言系统教程(七):数据的分布(含多种图的绘制)
  7. 全卷积网络FCN详细讲解(超级详细哦)
  8. 51单片机自学笔记(1)——定时计数器
  9. Java解析SQL生成语法树_04. Hive源码 — HQL解析(抽象语法树的生成和语义分析)
  10. M1芯片import numpy 报错问题