Servlet基礎


一、什么是servlet
servlet是在服務器端運行的一個小程序。一個servlet就是一個java類,並且可以通過“請求-響應”編程模型來訪問的這個駐留在服務器內存里的servlet程序。


二、tomcat容器等級
    tomcat的容器等級分為四個等級,servlet的容器管理context容器,一個context對應一個web工程。
Engine是個引擎容器
HOST是主機容器


三、手工編寫servlet程序的步驟
    1.繼承HttpServlet
    2.重寫doGet()或者doPost()方法
    3.在web.xml中注冊Servlet

  • 使用普通的方法對servlet進行注冊
    
    
    
            
  1. <servlet>
  2. <!--servlet的名字-->
  3. <servlet-name>MyServlet</servlet-name>
  4. <!--servlet類的名字(包括完整包名)-->
  5. <servlet-class>MyServlet</servlet-class>
  6. </servlet>
  7. <servlet-mapping>
  8. <!--要與上面的那個名字一一對應-->
  9. <servlet-name>MyServlet</servlet-name>
  10. <!--表示該servlet的訪問路徑 /表示項目的根目錄-->
  11. <url-pattern>/servlet/MyServlet</url-pattern>
  12. </servlet-mapping>

  • JavaEE6及其以上可以使用注釋來對servlet進行注冊 
    name為必須,urlPatterns或者value為指定的URL訪問地址,也可定義多個URL地址訪問
    
    
    
            
  1. @WebServlet(name = "MyFirstServlet",urlPatterns = "/servlet/MyFirstServlet")
@WebServlet有很多的屬性:
asyncSupported 聲明servlet是否支持異步操作模式
description servlet的描述
displayName servlet的顯示名稱
initParams servlet的init參數
name servlet的名稱
urlPatterns servlet的訪問URL
value servlet的訪問URL


四、servlet的生命周期
        1.初始化階段,調用init()方法
        2.響應客戶請求階段,調用servlet()方法。由servlet()方法根據提交方式選擇執行doGet()或者doPost()方法。
        3.終止階段,調用destroy()方法

           servlet生命周期階段包括初始化、加載、實例化、服務和銷毀。


在下列時刻servlet容器裝在servlet:
        1.servlet容器啟動時自動裝在某些servlet,實現它只需要在web.xml文件中的<Servlet></Servlet>之間添加如下代碼:<load-on-startup>1</load-on-startup>數字越小表示優先級越高。
        2.在servlet容器啟動后,客戶端首次向servlet發送請求。
        3.servlet類文件被更新后,重新裝載servlet。
servlet被裝載后,servlet容器創建一個servlet實例並且調用servlet的init()方法進行初始化。在servlet的整個生命周期內,init()方法只被調用一次。
 

五、servlet與九大內置對象
如何在servlet中獲取jsp的九大內置對象
JSP對象 如何獲取
out response.getWriter方法(類型並不一致,但功能一致)
request service方法中的參數
response service方法中的參數
session request.getSession()方法
application getServletContext()方法
exception Throwable
page this
pageContext PageContext
config getServletConfig方法


六、如何通過servlet獲取jsp表單中的值與如何將值發送給jsp
從servlet獲取jsp表單中的值:
     
     
     
             
  1. //獲取單個值的時候
  2. String context=request.getParameter("username");
  3. //獲取復選框等多個選址的時候
  4. String[] parameterValues = request.getParameterValues("username");

servlet將值發送給jsp
將內容存儲到session中,將內容通過請求轉發的方式發送給jsp
示例:
     
     
     
             
  1. // 將內容存儲到session中
  2. request.getSession().setAttribute("a","object");
  3. // 通過請求轉發將其發送給jsp頁面
  4. request.getRequestDispatcher("index.jsp").forward(request,response);


七、servlet路徑跳轉
        絕對路徑:從根目錄來計算 "/"表示服務器的根目錄
        相對路徑:從相對於當前資源來計算

xml中servlet的映射地址必須以"/"開頭
在servlet中使用請求重定向的時候,可以使用request.getContextPath方法獲取上下文對象后加上目標jsp名字
在servlet中使用服務器內不跳轉,可以使用 "/"表示項目的根目錄


八、獲取初始化參數
        在web.xml中配置servlet時,可以配置一些初始化參數。而在servlet中可以通過ServletConfig接口提供的方法來取得這些參數。
在XML的servlet標簽里面設置初始化參數
     
     
     
             
  1. <servlet>
  2. <servlet-name>GetInitParameterServlet</servlet-name>
  3. <servlet-class>servlet.GetInitParameterServlet</servlet-class>
  4. <!--設置初始化參數-->
  5. <init-param>
  6. <param-name>username</param-name>
  7. <param-value>admin</param-value>
  8. </init-param>
  9. <init-param>
  10. <param-name>password</param-name>
  11. <param-value>123456</param-value>
  12. </init-param>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>GetInitParameterServlet</servlet-name>
  16. <url-pattern>/servlet/GetInitParameterServlet</url-pattern>
  17. </servlet-mapping>

在servlet中重寫init()方法
通過getInitParameter方法獲取
     
     
     
             
  1. @Override
  2. public void init() throws ServletException {
  3. String username = this.getInitParameter("username");
  4. this.setUsername(username);
  5. }





本筆記地址
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM