java web中的相对路径和绝对路径
以往一直没注意javaweb中的相对路径和绝对路径问题,有时有问题了,才想起去看看是否是路径的问题,一直对路径问题都是一知半解。今天就姑且记录一下,毕竟事如春梦了无痕嘛,倘不记之笔墨,未免有辜彼苍之厚。
对于一个URL地址,我们在编码的时候不会去这样写http://localhost/TestProject/registerUserServlet
大多只会在form表单的提交路径中写上registerUserServlet或者/TestProject/registerUserServlet
如此这般。
那其实这两种写法效果是一样的,只是前者叫做相对路径或者叫做绝对路径。
- 相对路径:以
./开头,可以省略 - 绝对路径:以
/开头
我们先来看相对路径,只要搞清楚当前资源与目标资源之间的相对关系,相对路径是非常容易的。
我们通过举例来说明。
我们建立一个javawebl类型的项目
在web文件夹下我们新建一个location.html文件
<body>
<h1>相对路径</h1>
<h1>找到当前资源和目标资源之间的相对位置关系</h1>
<P>
当前资源:location.html
http://localhost/day15/location.html
</P>
<P>
目标资源:
http://localhost/day15/responseDemo
</P>
<a href="./responseDemo">
responseDemo2
</a>
<a href="responseDemo">
responseDemo2
</a>
在src/com/helius/servelt文件夹下新建一个responseDemo的servlet类,来处理location.html
中的响应。
那此时采用上图中的两种写法都是可以的,因为相对路径中的./可以省略。
分析:当我们打开浏览器,准备访问这个html文件,我们访问的路径是什么呢?
显然是 http://localhost/day15/location.html
day15我们称为虚拟目录,虚拟目录可以在idea中的启动的tomcat中配置。
也就是apache-tomcat-7.0.94\conf\server.xml中配置的Context标签
<Context path="/day15" docBase="c:\work_folder" />
另外这个文件是在web目录下的,也就是项目根目录
所以得出它的访问路径 http://localhost/day15/location.html
再来看responseDemo这个从哪里来的呢,当然是我们在web.xml中配置的
<servlet>
<servlet-name>ResponseDemo</servlet-name>
<servlet-class>ResponseDemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ResponseDemo</servlet-name>
<url-pattern>/responseDemo</url-pattern>
</servlet-mapping>
注:Servlet3.0可以直接通过注解进行配置
所以当我们请求这个类的路径就是http://localhost/day15/responseDemo
将两个路径比较一下,使用相对路径可以通过href="responseDemo"进行访问。
再来看绝对路径
绝对路径要分两种情况了,需要判断定义的路径是给谁用的?判断请求从哪里发出?
- 给客户端使用:需要加虚拟目录
<a>标签,<form>标签、重定向
- 给服务端使用:不需要加虚拟目录
- 转发
再来看用绝对路径怎么改写上个例子
<h1>绝对路径</h1>
<a href="/day15/responseDemo">
responseDemo2
</a>
绝对路径以/开头,显然,这个超链接肯定是通过用户点击,也即是客户端使用,请求也由客户端发出,所以需要加上虚拟目录day15
同理,我们可以思考,哪些是客户端发出的请求呢?
比如使用
- form表单进行提交
- 点击超连接
- 重定向:切记重定向是客户端行为,
哪些是服务端行为呢?
比较常见的就是转发操作
Tips:如果动态获取虚拟目录
request.getContextPath()
好吧,这次记录的比较简洁,希望这次不会再忘记了。
java web中的相对路径和绝对路径的更多相关文章
- java web中读取properties文件时的路径问题
在web开发时,难免会有一些固定的参数,我们一般把这些固定的参数存在properties文件中,然后用的时候要读出来.但经常出现一些错误,找不到相应的路径,所以,今天特地讲一些如何正确获得路径. 首先 ...
- java web中servlet、jsp、html 互相访问的路径问题
java web中servlet.jsp.html 互相访问的路径问题 在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可 ...
- java web中路径问题。
转自:http://blog.csdn.net/liang5630/article/details/38474543 如有侵权,请及时联系本人及时删除 在java web种经常出现 404找不到网页的 ...
- Java web中常见编码乱码问题(一)
最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...
- Java Web 中使用ffmpeg实现视频转码、视频截图
Java Web 中使用ffmpeg实现视频转码.视频截图 转载自:[ http://www.cnblogs.com/dennisit/archive/2013/02/16/2913287.html ...
- Java Web 中 过滤器与拦截器的区别
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法u ...
- JAVA WEB 中的编码分析
JAVA WEB 中的编码分析 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.src {background-co ...
- Java web中常见编码乱码问题(二)
根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析: 2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码, ...
- 深入分析Java Web中的编码问题
编码问题一直困扰着我,每次遇到乱码或者编码问题,网上一查,问题解决了,但是实际的原理并没有搞懂,每次遇到,都是什么头疼. 决定彻彻底底的一次性解决编码问题. 1.为什么要编码 计算机的基本单元是字节, ...
- 解决java web中safari浏览器下载后文件中文乱码问题
解决java web中safari浏览器下载后文件中文乱码问题 String fileName = "测试文件.doc"; String userAgent = request.g ...
随机推荐
- cifar-10数据集的可视化
import numpy as np from PIL import Image import pickle import os CHANNEL = 3 WIDTH = 32 HEIGHT = 32 ...
- rhcsa备战笔记
笔记全部手打 转载请加原文链接 0)重置密码开机按e 找到linux16行 rd.break console=tty0 ctrl+xmount -o remount,rw /sysrootchroo ...
- 开源项目 06 NPOI
using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using S ...
- 18-ESP8266 SDK开发基础入门篇--TCP 服务器 RTOS版,串口透传,TCP客户端控制LED
https://www.cnblogs.com/yangfengwu/p/11112015.html 先规定一下协议 aa 55 02 01 F1 4C 控制LED点亮 F1 4C为CRC高位和低位 ...
- 洛谷P4343 [SHOI2015]自动刷题机
题目 易得该题目中的\(n\)和\(k\)具有单调性,满足二分的性质,因此该题目而已用二分来枚举\(n\),然后对于每个\(n\)模拟出它所对应的\(k\),然后注意注意代码细节,并且当当前\(k\) ...
- 事务控制语言(TCL)
一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行.如:转账. 原子性(Atomicity):一个事务要么都执行,要么都回滚(不可再分割) 一致性(Consistency) ...
- mysql 存储过程 动态表名
今天写存储过程时,遇到要将表名最为参数的问题,如果不涉及到游标的话,使用prepare可以解决问题,但是,动态表名要运用在游标中的话,则prepare就得靠边站了. 集众人之智慧,最后,使用临时表解决 ...
- 剑指offer:构建乘积数组
题目描述: 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]. ...
- python 文件夹下的图片转PDF
from PIL import Image import os def rea(path, pdf_name): file_list = os.listdir(path) pic_name = [] ...
- mongodb设置 十个要点
mongodb设置 十个要点 一.对象ID的生成 每一个mongoDB文档那个都要求有一个主键.它在每一个集合中对全部的文档必须是唯一的.主键存放在文档_id字段中.由12个字符组成: 4c291 ...