引用:http://blog.csdn.net/sustbeckham/article/details/6288982
常見的servlet文件夾目錄:
項目名稱-ServletDemo
--WEB_INF
--classes #src中java源文件生成的class文件
--lib#依賴的庫文件
--src#java源文件
--web.xml(若用annotation可以不用在此配置Servlet和ServletMapping)
JSP文件
Servlet的生命週期:
啓動-Servlet啓動即創建實例或被請求第一次時創建 -》初始化(init方法從web.xml或annotation中獲取initParam參數) -》接收請求(doGet等或者service參數)並處理 -》需要銷燬時,調用destroy
annotation配置Servlet:
1)import javax.servlet.annotation.*;
2)在類前增加:@WebServlet(name=“”
,urlPatterns={""})
其中name表示Servlet類的名稱,而urlPattern對應mapping中的URL標識
如果需要增加其他參數,另起一行增加對應的參數名
其他:
RequestDispatcher-常用MVC中的Controller中,轉發請求
調用方法-request.getRequestDispatcher(filename)#動態獲取jsp對象
區別:
HttpServletResponse.sendRedirect()方法將響應定向到參數location指定的、新的URL。location可以是一個絕對的URL,如response.sendRedirect(http://java.sun.com) 也可以使用相對的URL。如果location以“/”開頭,則容器認爲相對於當前Web應用的根,否則,容器將解析爲相對於當前請求的URL。這種重定向的方法,將導致客戶端瀏覽器的請求URL跳轉。從瀏覽器中的地址欄中可以看到新的URL地址,作用類似於上面設置HTTP響應頭信息的實現。
RequestDispatcher.forward()方法將當前的request和response重定向到該RequestDispacher指定的資源。這在實際項目中大量使用,因爲完成一個業務操作往往需要跨越多個步驟,每一步驟完成相應的處理後,轉向到下一個步驟。比如,通常業務處理在Servlet中處理,處理的結果轉向到一個JSP頁面進行顯示。這樣看起來類似於Servlet鏈的功能,但是還有一些區別。一個RequestDispatcher對象可以把請求發送到任意一個服務器資源,而不僅僅是另外一個Servlet。
include()方法將把Request Dispatcher資源的輸出包含到當前輸出中。
注意:
使用必須在給請求者返回相應前調用,否者會拋異常IllegalStateException
調用forward()方法後,原先存放在HttpResponse對象中的內容將會自動被清除
RequestDispatcher常用方法:forward和include