JSP_SERVLET 中的路徑問題!——百度知道!

 ...

正常的情況下是:不管你把JSP放到哪裏,都可以指向servlet
作爲一個程序員 ,我給你一個建議,
你提交的目錄,最好使用相對於項目根目錄的絕對路徑。這樣肯定沒有問題。

項目名爲ABC,根URL爲/ABC
那麼提交的時候,form的action裏就寫/ABC/servlet
不要寫成servlet或者/servlet
同樣,servlet跳轉會jsp的時候,也要寫/ABC/jsp/Login.jsp
(假設你的jsp放在根目錄的jsp文件夾下。)

這樣不管你的jsp放到哪裏都是可以的。
還要注意一個問題,就是dispatcher的forward和response.sendRirect。他們都用來跳轉jsp和servlet。但他們是不同的。
不同點在於
1:sendRirect是重定向,這時候 ,上一個request帶過來的參數會全部丟失。如要在請求里加新的參數,請在url後面跟上參數。例如response.sendRirect("/ABC/jsp/login.jsp?name="+name);
forward是跳轉,參數還保留在request裏。

2:sendRirect的根路徑是相對於服務器而言,假設你的服務器根路徑是http://localhost:8080/
那麼response.sendRirect("/ABC/jsp/login.jsp?");
就相當於跳到http://localhost:8080/ABC/jsp/login.jsp

forward的根路徑是相對於項目的根路徑而言
resquest.getRequestDispatcher("/ABC/jsp/login.jsp");
相當於跳到http://localhost:8080/ABC/ABC/jsp/login.jsp
注意,路徑出錯了,所以應該這樣寫
resquest.getRequestDispatcher("/jsp/login.jsp");
相當於跳到http://localhost:8080/ABC/jsp/login.jsp

順帶一提:<a href="/ABC/jsp/login.jsp">登錄</a>
<form action="/ABC/servlet/login">
這些鏈接跟sendRirect是一樣的,根路徑是服務器的根路徑。
我認爲你的錯,就是錯在沒有理解這些路徑的區別。

...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章