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是一样的。.