servlet中的相对路径和绝对路径 及/, ./, ../的区别
./ 当前目录
../ 父级目录
/ 根目录
资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算。
servlet中,所有路径的配置都要用绝对路径。
什么是绝对路径,就是以“/”开头的路径(开发中就这样理解)。
实际开发中,“/”所代表的含义不同,但主要分以下两种情况:
1.servlet内部配置路径
servlet内部的含义就是:在客户端看不到,全是在(应用)后台处理的部分(简单说,就是除了JSP以外的所有地方)。包含以下2点:
a. web.xml中servlet 配置的路径
<servlet>
<servlet-name>helloWorld</servlet-name>
<servlet-class>
com.bill99.li.servlet.HelloWorldServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloWorld</servlet-name>
<url-pattern>/test1/helloWorld</url-pattern>
</servlet-mapping>
我们配置的这个“ /test1/helloWorld”,前面必须加“/” ---- 该“/”代表我们应用的名称。比如我们的应用名是“test”,那访问我们应有的地址就是: http:// 192.168.XX.XX:8080/test ,说白了就是代表项目的名称。
“ /test1/helloWorld”代表的路径就是http:// 192.168.XX.XX:8080/test/test1/helloWorld
b.forward转发的路径(注意:不包含redirect重定向)
做完后台业务逻辑处理后,需要做页面的跳转,比如:
req.getRequestDispatcher("/pages/succ.jsp").forward(req, resp);
这时候跳转的页面"/pages/succ.jsp"也必须添加“/”,它代表的含义也一样,是我们应用的名称。
总结:
在应用内部,“/”代表的就是应用的名称!!!
2.页面配置的路径
页面是指什么 ------ 肯定是指我们的JSP页面,而JSP页面是服务端解析的,对我们而言是下载到客户端,让浏览器解析为HTML展示出来的页面。
比如,我们的应用url是:http:// 192.168.XX.XX:8080/test
那站点的路径就是:http:// 192.168.XX.XX:8080/ --- 很明显 test 是应用名
对客户端的浏览器而言,它认识的只有站点,也就是说,我们的jsp页面,“/”代表的是站点名。
所以在“/”后需要添加上我们应用的名称才能正确的访问到。(也容易理解,一个tomcat下可以部署多个应用,就相当于一个站点多个应用,怎么区别不同的应用呢,当然是不同应用名啦-----这个需要和上面的servlet内部配置路径区分理解一下啊,因为servlet本身就部署在服务端,在站点内部了,内部处理肯定知道它是站点下的哪个应用内,但对于外部而言,只知道一个站点IP。)
页面主要表现有以下3个地方:
a. form的action路径配置
页面举例:
<form action=" /test /test1/helloWorld" method="post">
解析:
应用名是test,/ 代表站点的url http:// 192.168.XX.XX:8080/,所以/test代表 http:// 192.168.XX.XX:8080/test
而/test1/helloWorld代表servlet在web.xml中配置的访问路径,所有上面的action可以正确的访问。
但是在真正的应用中,我们经常这样写:
<form action="${pageContext.request.contextPath}/test1/helloWorld" method="post">
${pageContext.request.contextPath} 的效果就是"/应用名" ,这里等于 /test
一样的效果,不解释啦。
b. 页面资源引用
同样,只要是页面中引入的东西(常常需要引入CSS,JS,图片等),都要如此写,比如
<script type="text/javascript" src="${pageContext.request.contextPath}/pages/event/js/addevent.js"></script>
c. jsp/servlet的重定向 redirect
首先必须理解重定向的概念:重定向其实向服务器发送了2次请求,第一次把请求url告诉给服务器,服务器看到这个请求的状态码,马上明白该url是需要浏览器来重新去请求的url,于是呢把该url显示在浏览器的地址栏内,再次向服务器请求(第二次了吧),服务器响应,然后返回。
很明显,只要和页面打交道的,“/”都代表站点名,需要在后面添加应用名以区分是哪个应用的请求。所有。。。。不解释也明白了吧!
总结:
所有涉及前端页面的地方,“/”代表的是站点名,需要我们在“/”加上应用名以明确应用服务!!
=========================================================
基本上可以总结为两点:
a. servlet中所有访问路径都要用绝对路径“/”开头
b. 页面中“/”表示站点路径(在客户端展现出来,只知道它的站点路径,所有需要“/”后追加应用名来区分属于站点下的哪个应用),其他地方的“/”表示应用路径(在服务端的应用程序内调用,肯定是相对于应用的路径啦)
servlet中的相对路径和绝对路径 及/, ./, ../的区别的更多相关文章
- 在servlet中的中文乱码,相对路径和绝对路径
默认情况下在servlet中的中文是显示不出来的,解决问题就是加resp.setContentType("text/html;charset=gbk"); 而且这句加的话必须写在P ...
- java中的绝对路径和相对路径
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:/xyz/test.txt 代表了test.txt文件的绝对路径.http://www ...
- php中相对路径和绝对路径如何使用(详解)
目录 一.总结 一句话总结: 1.php中用用“/”表示根目录么? 2.什么符号表示当前目录(asp,jsp,php都一样)? 3.php中如何使用$_SERVER['DOCUMENT_ROOT']做 ...
- JAVA开发中相对路径,绝对路径全面总结
JAVA开发中相对路径,绝对路径全面总结 博客分类: Java综合 JavaJSP应用服务器Servlet网络应用 1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径, ...
- J2EE项目相对路径、绝对路径获取
String path = getServletContext().getRealPath("/"); 这将获取web项目的全路径. this.getClass().getClas ...
- 2.java相对路径与绝对路径
1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:C:xyz/test.txt 代表了test.txt文件的绝对路径.http://www. ...
- Spring读取配置文件,地址问题,绝对路径,相对路径
Spring在读取配置文件时,是相对于bin,或者WEB-INF的: “applicationContext.xml”就是找bin或WEB-INF及子文件夹下的文件: “/res/applicatio ...
- servlet中的“/”代表当前项目,html中的“/”代表当前服务器
servlet中重定向或请求转发的路径如果用“/”开头,代表当前项目下的路径,浏览器转发这条路径时会自动加上当前项目的路径前缀,如果这个路径不是以“/”开头,那么代表这个路径和当前所在servlet的 ...
- servlet中this.getServletContext(); this.getServletConfig().getServletContext(); 的区别
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用.ServletConfig对象中维护了ServletContext对象的引用,开发人 ...
随机推荐
- bootstrap-fileinput简单完整列子
文件夹结构 版本都是3.x <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http ...
- js清除浏览器缓存的几种方法
2014年9月24日 4692次浏览 关于浏览器缓存 浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能.但是有时候我们又不得不清除缓存,因为缓存可能误事,出现一些错误的数 ...
- 58. Android一些开发习惯总结
作者:漫步 链接:https://www.zhihu.com/question/27227425/answer/35973793 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- 【BZOJ-3122】随机数生成器 BSGS
3122: [Sdoi2013]随机数生成器 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1362 Solved: 531[Submit][Sta ...
- HA模式强制手动切换:IPC's epoch [X] is less than the last promised epoch [X+1]
-- ::, WARN org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Remote journal failed to wr ...
- 使用reids结合wcf实现集群模式下的聊天室功能
1.reids的特点 Redis数据库完全在内存中,使用磁盘仅用于持久性. 相比许多键值数据存储,Redis拥有一套较为丰富的数据类型(字符串,哈希,列表,集合,有序集合),. Redis可以将数据复 ...
- eclipse crash
SIGSEGV (0xb) at pc=0x00007fbcae8f2c91, pid=5707, tid=140449979574016 JRE version: 7.0_25-b30 Java V ...
- struts2 CVE-2012-0838 S2-007 Remote Code Execution && Hotfix
catalog . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch Fix 1 ...
- 净捡软柿子捏--jQuery
恩现在是在学习阶段,所以还只是一个小小的搬运工, 大部分参考自 http://www.w3school.com.cn/ 和http://www.zhangxinxu.com/ 超级好的两个学习网站,因 ...
- LaTeX 笔记---Q&A
Q: Is it possible to check which package do I need to install to get certain .sty file from tlmgr ra ...