路径问题是一个在平时学习和开发碰到的常见问题,对于初学者是一个比较值得研究的东西。因此对路径问题进行总结。

  1. 编写路径为了告诉编译器如何找到其他资源。

   2. 路径分类

    • 相对路径:从当前资源出发寻找其他资源的过程。

      • 例如,在src目录下的mybatis.xml文件里配置resource使用的是相对路径,即从src目录下寻找com/bjsxt/mapper/PeopleMapper.xml

    • 绝对路径: 从根目录(服务器根目录或项目根目录)出发找到其他资源的过程

      • 例如,在ShowServlet中请求转发到index.jsp,因为在注解WebServlet中配置Servlet时定义了("/abc/b/show"),也就是在WebContent下映射了一个虚拟文件夹abc,abc文件夹下有一个虚拟文件夹b,文件夹b下有资源show,而此时index.jsp在WebContent下。请求转发如果使用相对路径,则应写为"../../index.jsp",而这就非常复杂,而如果使用绝对路径,就可写为"/index.jsp",这样不会出错。

      • 标志: 只要以 / 开头的都是绝对路径 。

3. 绝对路径

    • 如果是请求转发 / 表示项目根目录(WebContent。
    • 其他重定向或者静态资源引用<img src=""/>, <a href="">,  <script src=""/> ,css等引用时/都表示服务器根目录(tomcat/webapps 文件夹)。

4. 如果客户端请求的控制器(Servlet),控制器转发到JSP后,jsp中如果使用相对路径,需要按照控制器的路径去找其他资源

    • 保险方法:使用绝对路径。
    • 例如:
      • 之前的ShowServlet请求转发至index.jsp,在jsp中显示图片<img src="data:image/a.png"/>,使用相对路径,此时显示失败,原因是jsp中如果使用相对路径,需要按照控制器的路径(ShowServlet)去找其他资源,而控制器中有虚拟的文件目录abc/b/,浏览器就会在abc/b/下寻找image文件夹,所以无法寻找到图片。
      • 此时为避免路径太过复杂,使用绝对路径,</项目名/img src="data:image/a.png"/>,图片显示成功。
      • 使用项目名而不使用WebContent是因为Tomcat发布项目以后,WebContent会更改文件名为项目名

  

java学习中碰到的疑惑和解答(二)的更多相关文章

  1. java学习中碰到的疑惑和解答(一)

    今天写一个接口的时候发现,接口的方法不需要写修饰符,直接写数据类型加上方法名(参数)即可通过编译. import java.util.List; import com.bjm.pojo.Flower; ...

  2. java学习中的一些疑惑解答

    一.java中的枚举类型: 在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.例如星期一到星期日七个数据元素 ...

  3. Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录)

    Java 打印金字塔 or 打印带数字的金字塔 (Java 学习中的小记录) 作者:王可利(Star·星星) 效果图: 代码如下: class Star8 { public static void m ...

  4. Java 需要记得、了解的关键词 (Java 学习中的小记录)

    Java 需要记得.了解的关键词 (Java 学习中的小记录)     作者:王可利(Star·星星) 总结:本次随笔,仅且拿来平时翻阅记忆用

  5. Java学习中,常用的命令管理(Java 学习中的小记录)

    Java学习中,常用的命令管理      作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始  ---->所有程序---& ...

  6. JAVA学习中好网站 - -

    http://www.54bk.com 我是博客 http://www.java-cn.com java中文网 http://java.sun.com sun官方网站 http://www.comej ...

  7. Java web中常见编码乱码问题(二)

    根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析:   2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码, ...

  8. java学习中一些疑惑解答(2)

    (一)继承条件下构造方法的调用 以下面的源代码为例: package ktdemo; class Grandparent { public Grandparent() { System.out.pri ...

  9. JAVA学习中Swing概述中的JFrame学习

    package com.swing; import java.awt.Color;import java.awt.Container;import java.awt.event.WindowAdapt ...

随机推荐

  1. 5分钟快速部署DataDraw数字绘

    经常有小伙伴问,有没有一款好用又免费的画图软件,画画流程图.UML.思维导图?今天就介绍一款开源的在线画图软件,满足各方面人的需求. DataDraw数字绘是一个在线线框图.流程图.网络图.组织结构图 ...

  2. Docker笔记(二):Docker管理的对象

    原文地址:http://blog.jboost.cn/2019/07/14/docker-2.html 在Docker笔记(一):什么是Docker中,我们提到了Docker管理的对象包含镜像.容器. ...

  3. c#零碎知识随笔

    1. 字符串转换日期: DateTime.ParseExact(item.Attribute("event-timestamp").Value,"dd.MM.yyyy H ...

  4. 关系型数据库MySql简介

    什么是关系型数据库? 数据库就是用来存储数据的仓库,是一种特殊的文件. 根据存储的数据不同,划分为关系型数据库和非关系型数据库. 关系型数据库就是指 建立在关系模型基础上的数据库,通俗来讲这种数据库就 ...

  5. STM32F0_HAL库驱动描述——基于F1的USART串口IT中断实现解析

    从原子F103 HAL库基础串口例程来看HAL程序结构: 从main函数开始,首先是HAL库两个函数的初始化: HAL_Init(): Stm32_Clock_Init(RCC_PLL_MUL9); ...

  6. vue组件之间的传值——中央事件总线与跨组件之间的通信($attrs、$listeners)

    vue组件之间的通信有很多种方式,最常用到的就是父子组件之间的传值,但是当项目工程比较大的时候,就会出现兄弟组件之间的传值,跨级组件之间的传值.不可否认,这些都可以类似父子组件一级一级的转换传递,但是 ...

  7. mimalloc内存分配代码分析

    这篇文章中我们会介绍一下mimalloc的实现,其中可能涉及上一篇文章提到的内容,如果不了解的可以先看下这篇mimalloc剖析.首先我们需要了解的是其整体结构,mimalloc的结构如下图所示   ...

  8. 个人永久性免费-Excel催化剂功能第93波-地图数据挖宝之两点距离的路径规划

    在日常手机端,网页端的向地图发出两点距离的行程规划,相信绝大多数人都有用到过,但毕竟是个体单一行为,若某些时候需要用到批量性的操作,就显得很不现实了,同时,数据只是在应用或网页内,非结构化的数据,也是 ...

  9. vijos p1304 回文数

    N进制下的加法 2/10/16进制下,char到int的转换 #include<iostream>#include<string>using namespace std;str ...

  10. Java EE.JSP.内置对象

    JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象.JSP提供了九中内置对象:request.response.out.session.ap ...