輕量級Java EE 企業應用實戰-JSP筆記(三)-servlet

引用: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

 

 

 

 

 

 

 

 

 

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