Web开发中的路径问题总结
原文地址:http://zzqrj.iteye.com/blog/806909
路径问题在Web开发中算是令人比较蛋疼的问题,尤其是用相对地址时,同样的代码,在不同的目录结构中竟然会出现有对有错的结果,让人茫然不知所措。这种错误,究其原因,还是对Web中路径的概念一知半解,为彻底避免这种错误,提高开发效率,这里对Web中路径问题稍作总结。
1. 服务器端的相对地址
是在服务器端解析的,是相对于web应用的地址
servlet中的相对地址应该是相对于web应用,即相对于http://localhost:8080/webapp/
2. 重定向的路径问题
forward跳转: servlet中的request.getRequestDispatcher(address);这个address是在服务器端解析的,
所以,要forward到a.jsp应该这么写: request.getRequestDispatcher("/user/a.jsp")这个/相对于当前的web应用webapp, 其绝对地址就是:http://
localhost:8080 /webapp/user/a.jsp
sendRedirect跳转: response.sendRedirect(address);这个address是在客户端解析的,要跳转到a.jsp,应该这么写:response.sendRedirect("/webapp/user/a.jsp");
3. 客户端的相对地址
所有的html中的相对地址都是相对于http://
localhost:8080 / 的,而不是http:// localhost:8080 /webapp/ 的。
Html中的form表单的action属性的地址应该是相对于http://
localhost:8080 / 的。
所以,如果提交到a.jsp为:action="/webapp/user/a.jsp";提交到servlet为action="/webapp/handleservlet"
Javascript也是在客户端解析的,所以其相对路径和form表单一样。
4. 两种相对路径
相对于根目录的路径:
/jsp/path/pathTest.jsp
在服务器端解析为绝对路径为:http://localhost:8080/webapp/jsp/path/pathTest.jsp
在客户端解析为的绝对路径为:http://localhost:8080/jsp/path/pathTest.jsp
相对于当前目录的路径:
jsp/path/pathTest.jsp
当前目录的路径为http://localhost:8080/webapp/jsp/path ,
那么绝对路径为:http://localhost:8080/webapp/jsp/path/jsp/path/pathTest.jsp
5. 站点根目录和css路径问题
当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,会正常找到相应的css
但是如果从一个和当前jsp的路径不一样的Servlet中forward到这个jsp时,当前的相对路径是哪个Servlet的相对路径,而不是jsp所在的路径,这时不能在jsp中用这样的路径:<link href="css.css" rel="stylesheet" type="text/css">或者<link href="../../css.css" rel="stylesheet" type="text/css">。
这中情况下,要用站点根目录来引用css文件,就是相对于http://ip/ 的目录,以"/"开头,即href="/webapp/css.css"。这样在servlet转发后和jsp中都是相对于站点根目录的相对路径,就能正确使用所定义的css样式了。
也可以理解为在客户端(jsp/html文件中),引用文件时,都要用/wabapp/***开头,因为客户端的相对地址是http://localhost:8080/
6. servlet中几个获取路径方法的对比
对于url: http://localhost:8080/webapp/blog/list
那么分别调用request.getContextPath( )、request.getServletPath( ) 、 request.getURI( )、request.getURL( )分别返回什么路径?
这几个方法都是在HttpServletRequest接口中定义的。
1). request.getContextPath( )返回web应用程序的路径,上例中该方法将返回/webapp;
2). request.getServletPath( ) 返回Servlet的路径。上例中该方法将返回/blog/list;
3). request.getRequestURL( )返回请求的URL,上例中即为http://localhost:8080/webapp/blog/list ;
4). request.getRequestURI( )返回HTTP请求行中请求URI的部分。上例中该方法将返回/webapp/blog/list
Web开发中的路径问题总结的更多相关文章
- web开发中目录路径问题的解决
web开发当中,目录路径的书写是再常用不过了,一般情况下不会出什么问题,但是有些时候出现了问题却一直感到奇怪,所以这里记录一下,彻底解决web开发中路径的问题,开发分为前端和服务端,那么就从这两个方面 ...
- web开发中的路径问题
http://www.cnblogs.com/tianguook/archive/2012/08/31/2665755.html 转自:http://www.blogjava.net/meil/arc ...
- Java Web开发中路径问题小结
Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...
- Java Web 开发中路径相关问题小结
Java Web开发中路径问题小结 (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 Eclipse中目录结构如图2所示: 图2 那么针对这个站点的几个基本概 ...
- Web开发中的相对路径和绝对路径
在学习HTML的时候一定会遇到引入文件和链接跳转页面,比如:JS文件.CSS文件.Image图片.我们就会考虑是相对路径和绝对路径的问题.下面PHP程序员雷雪松就详细讲解下Web开发中的相对路径和绝对 ...
- Java Web开发中路径问题小结(getRequestUrl getContextUrl getServletUrl)
看以博客感觉不错,分享一下http://www.cnblogs.com/tianguook/archive/2012/08/31/2665755.html (1) Web开发中路径的几个基本概念 假设 ...
- 关于web开发中路径的问题的总结
web开发中的一个困扰web开发新人的是路径问题: 1:项目的静态资源的根路径:http://localhost:8080/sqec-monitor 即是部署在web服务器中(比如tomcat)中项目 ...
- 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践
提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...
- JAVA WEB项目中各种路径的获取
JAVA WEB项目中各种路径的获取 标签: java webpath文件路径 2014-02-14 15:04 1746人阅读 评论(0) 收藏 举报 分类: JAVA开发(41) 1.可以在s ...
随机推荐
- [SCOI2009]生日礼物
https://www.luogu.org/problem/show?pid=2564 题目描述 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x ...
- [uva11137]立方数之和·简单dp
小水题再来一发 给定一个正整数n<=1e4,求将n写成若干个正整数立方和的方法数 典型的多阶段模型 f[i][j]表示当前用到1~i的数,累计和为j的方案数. #include<cstdi ...
- 【BZOJ】1726 [Usaco2006 Nov]Roadblocks第二短路
[算法]最短路(spfa) 次短路 [题解] 正反跑两次SPFA,然后枚举每一条边,如果起点到一个端点的最短路+另一个端点到终点的最短路+长度 ≠ 最短路,则和答案比较,保存最小值. #include ...
- dokuwiki安装部署
dokuwiki的地址:https://www.dokuwiki.org/dokuwiki# 1.部署dokuwiki 在D:\xampp\htdocs(xampp安装目录)新建一个doku文件夹,把 ...
- AndroidStudio创建jinLibs文件夹
在文件中的buildTypes节点下添加 sourceSets.main { jniLibs.srcDir 'libs' } 如图
- Java 关于微信公众号支付总结附代码
很多朋友第一次做微信支付的时候都有蒙,但当你完整的做一次就会发现其实并没有那么难 业务流程和应用场景官网有详细的说明:https://pay.weixin.qq.com/wiki/doc/api/js ...
- 【Python学习】程序运行完发送邮件提醒
有时候我们运行一个需要跑很长时间的程序,不管是在云主机还是本地主机上运行,我们都不可能一直守在电脑面前等.所以想到使用邮件来通知提醒. 示例代码如下 # -*- coding: utf-8 -*- # ...
- Deep Learning基础--线性解码器、卷积、池化
本文主要是学习下Linear Decoder已经在大图片中经常采用的技术convolution和pooling,分别参考网页http://deeplearning.stanford.edu/wiki/ ...
- java8新特性视频、spring4.0视频讲解,javaee基础知识讲解等网址汇总
1.http://ke.atguigu.com/ 海量视频首页 2.http://ke.atguigu.com/course/56 java8新特性学习地址
- java的集合类面试题
转自:https://yq.aliyun.com/articles/78788?spm=5176.8252056.759076.3.uFYrmt java.util包中包含了一系列重要的集合类,而对于 ...