关于静态资源访问的路径问题

来源:互联网 发布:python xpath解析html 编辑:程序博客网 时间:2024/05/22 11:30
1.使用相对于jsp页面的相对路径<script type="text/javascript" src="../scripts/dtree.js"></script>这样在页面使用http://localhost:8080/MyProject/test.jsp访问test.jsp时就可以引用到dtree.js。 2.使用相对于Web工程的相对路径对于1中的相对使用相对于于jsp页面的相对路径的这种方式,如果我们是设置action跳转到test.jsp页面,那么这种使用相对路径的方式就引用不到了。例如我们当访问http://localhost:8080/MyProject/main.do的时候,页面跳转到test.jsp页面,如果使用方法1,就引用不到了。这个时候我们可以使用相对于Web工程的相对路径来引用: <script type="text/javascript" src="scripts/dtree.js"></script>但是请注意:使用方法2这种方式引用,如果直接访问http://localhost:8080/MyProject/test.jsp,是引用不到的。 3.使用Web工程的绝对路径方法1和方法2都有缺点,都只适用一种情况,有没有两种情况都适用的呢?答案肯定的!<script type="text/javascript" src="/MyProject/scripts/dtree.js"></script>这样,不管是通过http://localhost:8080/MyProject/main.do跳转访问test.jsp还是直接访问http://localhost:8080/MyProject/test.jsp,都可以成功引用。 4.注意:如果我们在部署Web应用时,没有设置Context Root(一般情况下配置为工程名),也就是IP和端口后面不带应用名,如http://localhost:8080/main.do和http://localhost:8080/test.jsp,这种情况在引用时就不能带工程名了,应该这样:<script type="text/javascript" src="/scripts/dtree.js"></script>5.关于tomcat利用sercer.xml进行项目映射的部署

平时一般都是在myeclipse上直接把项目加载至tomcat服务器的webApp目录进行项目的部署,

但是这样子有不方便的地方,如果是已经部署了很多个项目,包之间有冲突的话,一个个remove掉很麻烦,而且还占空间。

 

可以使用tomcat的conf目录下的server.xml配置文件进行web项目的映射部署,把不在webApp目录的项目部署运行起来。

具体方法是打开tomcat下conf/server.xml,在<Host> </Host>标签之间输入项目配置信息。一个例子如下:

 

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true"  xmlValidation="false" xmlNamespaceAware="false">

        <!-- 配置方法<Context path="/访问目录名" docBase="e:/项目/WebRoot" debug="0" reloadable="true"/>-->

        <!-- 第一个项目-->        <Context path="/struts" docBase="D:\Struts2\WebRoot" reloadable="true">         </Context>

        <!--第二个项目-->        <!--        <Context path="/robot" docBase="D:\My Documents\MyEclipseWorkspace\robot\WebRoot" reloadable="true">        </Context>         -->        </Host>

 

上面的几个配置参数的含义如下:

path:浏览器访问时的路径名,如第一个项目,浏览器访问时路径名是(我的是80端口):localhost/struts/index.jsp

docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径。

debug:值为0的话,表示不打印日志

reloadble:设定项目有改动时,tomcat是否重新加载该项目

 

以映射的方式部署项目,优点是很明显的,节约了空间,而且想要不加载其他项目时,只需要注释掉配置就可以,需要再用的时候只需取消

注释就行,这在开发中是很方便的。

 

有一点要注意的是,如果是用Notepad++或者其他编辑器改写server.xml时,注意一定要以utf-8的编码方式保存,否则启动tomcat时会提示

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.的错误。

这一点原因可见http://blog.csdn.net/lcjackson/article/details/80149326. basePath
相对路径-以引用文件之网页所在位置为参考基础,而建立出的目录路径。 
绝对路径-以Web站点根目录为参考基础的目录路径。 
在web应用程序中绝对路径不是指的磁盘文件中盘符目录路径。如:C:\Windows\System32
其实绝对路径与相对路径的不同处,只在于描述目录路径时,所采用的参考点不同。由于对网站上所有文件而言,根目录这个参考点对所有文件都是一样的,因此,运用以根目录为参考点的路径描述方式才会被称之为绝对路径。
在这里需要讲几个特殊符号: 
"/"代表根目录,".."代表上一层目录,而"../../"所代表的是上一层目录的上一层目录。假设你注册了域名www.arm4u.com,并申请了虚拟主机,你的虚拟主机提供商会给你一个目录,比如www,这个www就是你网站的根目录。 
假设你在www根目录下放了一个文件index.html,这个文件的绝对路径就是: http://www.arm4u.com/index.html。 
假设你在www根目录下建了一个目录叫html_tutorials,然后在该目录下放了一个文件index.html,这个文件的绝对路径就是http://www.arm4u.com/html_tutorials/index.html 
了解了相对路径与绝对路劲的概念后,我们来看看所谓的basePath是怎么写的: 
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
看看上面的代码,我们来了解一下它具体的意思, 
request.getContextPath()是在开发Web项目时,经常用到的方法,其作用是获取当前的系统路径。request.getContextPath()得到项目名,如果项目为根目录,则得到一个"",即空的字条串, 如果项目为Test, <%=request.getContextPath()% >/ 将得到Test/,服务器端的路径则会自动加上. 
request.getScheme()返回的协议名称,默认是http。 
request.getServerName()返回的是你浏览器中显示的主机名(例127.0.0.1). 
getServerPort()获取服务器端口号(例:8080)。 
我们不妨把basePath打印出来看看是什么,http://127.0.0.1:8080/test。 
值得注意的是:request.getServerName()始终获取的是浏览器中显示的主机名,比如可以举个例子,我们在浏览其中输入的主机名是本地主机名192.168.10.23,那么我们在内网中可以通过http://192.168.10.23:8080/test这个路径来访问项目,如果是外网需要访问则需要提供域名http://www.arm4u.com/Test来访问,当然内网也可以通过这个路径来访问,此时打印出来的basePath是这个路径http://www.arm4u.com:8080/Test了,而不是http://192.168.10.23:8080/test
<base href="<%=basePath%>">必须放在<head></head>中。
在开发中试用basePath能够很好的避免出现路径的问题。basepath可称作web全路径。 页面中加了basepath,无论当前页面处于什么目录路径下,如manage/index.jsp,指的是web根目录下的manage文件夹下index.jsp。图片、链接引用的路径都是从当前应用程序的根路径开始的!如果没有basepath,写的路径是表示从相对于当前页面的路径,manage/index.jsp指的是当前目录下manage文件夹下的index.jsp
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天津车牌有指标想买车怎么办 上海大牌拍中了怎么办 买新车牌下不了怎么办 临沂上小学没报上名怎么办 早教中心倒闭了怎么办 企业税没交联系不上法人怎么办 企业被拉黑法人联系不到怎么办 支票根写错了怎么办 月结客户不付款怎么办 退市整理期过了怎么办 老板跑了财务负责人怎么办 在南京加入嘀嘀代驾怎么办 苹果盗刷支付宝怎么办 街电支付宝掉了怎么办 转转上号器没有苹果版的怎么办 安卓6不支持的应用怎么办 银行卡被存款机吞了怎么办 去银行卡存款机器故障怎么办 银行卡存款没有存进去怎么办 被黑网站黑钱了怎么办 饿了吗账户异常怎么办 单位里有人整你怎么办 乌鲁木齐信息采集结束后怎么办 头发很长时间不长怎么办啊 打嘟噜时间不长怎么办 阴茎勃起的时间不长怎么办 睡觉的时间不长怎么办 每次锻炼时间不长怎么办 微信好友不知道是谁怎么办 就一个软件闪退怎么办 葫芦侠修改闪退怎么办 戴尔游匣磁盘占用100怎么办 步步高家教机扫描笔不亮怎么办 社保卡手机号换了怎么办 香港公司进出口没有申报怎么办 智能电视右上角网络未连接怎么办 电子秤按键板不好用怎么办失灵 桑塔纳车钥匙锁车里了怎么办 舌头上有锯齿印怎么办 夏天有脚气脚臭怎么办 xp分辨率太高黑屏怎么办