[转]JSP编程,url中加斜杠和不加斜杠的区别



在javaweb编程中,路径前加斜杠(\)与不加到底什么时候用什么时候不用?
对此找了2篇博客,转载过来做个记录








文章一:路径前加于不加(/)反斜杠 。
原帖地址:http://blog.sina.com.cn/s/blog_710bd9f80100sve4.html
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------




如题,这是我们今天做关于JavaWeb请求转发时遇到的问题。 
        1.(无)开头表示当前目录下的
         2.(/)开头的目录表示该目录为根目录的一个子目录
         3.(./)开头的目录表示该目录为当前目录(当前目录所在的目录)的一个子目录
        4.(../)开头的目录表示该目录为当前目录的父目录
    但是实际使用过程中我们发现了很多问题,首先关于无反斜杠开头的路径描述基本准确,是表示当前目录下和(./)相似。问题主要集中在关于加了反斜杠(/)的路径上。这里对于根目录的理解,我们遇到的情况主要可分为下面3种:
    1.对于HTML 页面,如果我们在其中有关于反斜杠应用的路径,我们可以分为下面两种情况:如直接对该页面打开访问:则这里相对的是我们的盘符,如(/res/index.html),实际路径为(C://res/index.html);
    如我们在Tomcat中构建打开:则这里相对的是我们的站点,如(/webTest/html/index.html),实际路径为(http://localhost:8080/webTest/html/index.html);
    2.对于我们在请求转发中调用的getRequestDispatcher()方法:则这里相对的是我们的项目根目录,如 request.getRequestDispatcher("/ts.do"),实际路径为,如我们项目名称为webTest,而“/ts.do”是我们在web.XML中配置的servlet-mapping的url-pattern则我们这里找的该(/ts.do)其实是(http://localhost:8080/webTest/ts.do)。而如果我们要找的是一个具体资源如html页面:目录结构如下:(webTest/WebContent/html/index.html)而我们知道webContent这个目录是编译器临时目录在实际生成时是没有的。所以目录修改如下(webTest/html/index.html)这时我们要用getRequestDispatcher()得到这个html页面则应是(html/index.html)。    
    这就是今天主要关于目录加反斜杠的难点,主要是对资源的定位问题。
*************************************************************************************************************************************************************************************












文章二: JSP编程,url中加斜杠和不加斜杠的区别(sendredirect,requestdispatcher,servlet,filter) 
原帖地址:http://blog.csdn.net/tanyit/article/details/7319372
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
url中加斜杠”/”和不加斜杠的区别:
设webapp为web程序包名
通常来说,不加斜杠的形式(如”example.jsp”)请求的是相对于当前页面路径的资源 http://localhost:8080/webapp/examole;
加斜杠的形式(”/example.jsp”)请求的是服务器根目录下的资源,完整的url是由服务器地址+/example构成的:http://localhost:8080/example。如果页面不是放在服务器跟目录而是web程序包下,则不能使用加斜杠的形式。




 这个程序是在WebRoot下面文件member的文件下:  加 / 斜杠  <jsp:include page="/NavServlet?method=navList"></jsp:include>   
这个程序是在webroot下面: 不加 斜杠<jsp:include page="NavServlet?method=navList"></jsp:include>






sendRedirect和getRequestDispatcher方法中的url的不同:




response.sendRedirect(url):url=”example”, 地址相对于当前请求的目录; url=”/example”,请求的地址为服务器根目录下的example,如“http://localhost:8080/example” . 所以,sendRedirect方法中的url通常不在开头加”/”. sendRedirect的url区分方式和通常情况是一致的。
request.getRequestDispatcher(url)则与sendRedirect不同:url=”example”指向相对于当前请求地址的资源,加”/”开头指向web程序根目录下的资源/webapp/example。
servlet-mapping的url:servlet的url通常需要开头加斜杠。比如一个form的action的url=”a”( 因为/a就指向服务器根目录了),与之对应的servlet-mapping的url则为/a。
servlet-mapping的url的匹配方式:




/ex/* : 以斜杠开头,后缀通配符,/ex,/ex/a 都可匹配;
*.do : 通配符*后加点号,后缀名do结尾的,表示以 .do结尾的url都能匹配。如人人网的Home.do就是一例,struts中大量使用 .do和.action的后缀。这个后缀可以是开发者任意设定的,因为它并不指向实际存在的文件,都是用于和servlet或者filter匹配的。
/ex/ :是一种完全匹配,只有url是/ex/时才匹配,/ex ,/ex/a 都不行。
filter-mapping和servlet-mapping是一样的。.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值