JSP/Servlet Web 學習筆記 DayFour

來源:互聯網
上載者:User

標籤:coder   初始化   常用   method   ebs   rate   protected   local   com   

Servlet概述

  Servelt是使用Java Servlet應用程式介面及相關類和方法的Java程式。

  Servlet是用Java編寫的Server端程式,它與協議和平台無關。Servlet運行於Java伺服器中。

  Java Servlet API 定義了Servlet和伺服器之間的標準介面,這使得Servlet具有跨伺服器平台的特性

  通常,Servlet採用一種無狀態的“要求-回應”模型來訪問。它能處理用戶端傳來的Http請求,從中提取參數,處理商務邏輯,最終返回資料或輸出HTML。它還可以訪問資料庫,進行計算,並和Enterprise JavaBean 組件進行通訊。

 Servlet的運行原理

  見之前的JSP運行原理。

Servlet的生命週期

  有javax.servlet.Servlet定義。

  裝載類--->初始化(init())--->服務(service())--->銷毀(destroy())

Servlet常見結構
@WebServlet("/Name")public class Servlet extends HttpServlet {    private static final long serialVersionUID = 1L;           /**     * @see HttpServlet#HttpServlet()
   * init() */ public Servlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
   * 處理get請求 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   * 處理post請求 */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub }}
Servlet擷取請求中的參數

  類似於JSP,採用getParameter()方法,常用的具體如下:

public String getParameter(String name);   //擷取指定名稱的參數值public String[] getParameterValues(String name); //適用於一個參數名對應多個值的情況public java.util.Enumeration getParameterNames(); //返回一個包含請求訊息中所有參數名的枚舉對象。public java.util.Map getParamterMap(); //返回所有參數名和對應參數值的map

  資料亂碼問題:

      POST方法:按HTML頁面指定的編碼進行編碼。

            在Servelt類的請求處理方法需先調用HttpServletRequest介面的setCharacterEncoding(String enc)方法使資料按參數編碼。

      通常使用response.setContentType("text/html;charset=utf-8")即可。

 

      GET方法:參數被拼接到URL後面提交。即上述方法已經不起作用。

           在發送這些資料前先手工把他們按頁面指定的編碼方式編碼好:java.net.URLEncoder.encode(String s,String enc)方法。然後再發送。

           再Servlet類的請求處理方法中再手工解碼:java.net.URLDecoder.decode(String s,String enc)方法。

           最好的做法是再URL中不要使用中文等非ASCII字元。

重新導向 && 請求指派
絕對URL 以“/”開頭的路徑,指的是相對於Web應用根目錄的路徑。
相對URL 不是以“/”開頭的路徑,指的是相對於當前路徑目錄的路徑。
    重新導向

    相關方法: HttpServletRequest介面提供的sendRedirect()

    說明:不僅可以重新導向到當前應用程式中的其他資源,還可以重新導向到同一容器中的其他應用程式中的資源,甚至是使用絕對URL重新導向到其他網站的資源

public void sendRedirect(String location) throws IOException;   //location可使用絕對URL和相對URL

    注意:重新導向會將當前URL改變為定向後的程式的URL,即Get方法不能通過重新導向傳遞給後者。發起者和被調用者使用各自的request和response執行個體。

    工作原理:

 

    

    請求指派

    相關方法:  Servlet API中定義了一個RequestDispatcher介面,俗稱請求指派器。它定義了如下兩個方法:

public void forward(ServletRequest request,ServletResponse response) throws ServletException, IOException;public void include(ServletRequest request,ServletResponse response)    throws ServletException, IOException;

    說明:擷取RequestDispatcher執行個體的方法有兩種

          調用ServletContext介面提供的getRequestDispatcher(String url)    URL必須為絕對路徑

          調用ServletRequest介面提供的getRequestDispatcher(String url)    URL可以為相對路徑,也可以為相對路徑

       只能將請求轉寄給同一個Web應用中的其他組件,不能轉寄到其他網站的資源。

    注意:請求轉寄過程接受後,瀏覽器保持初始的URL地址不變。並且發起者和被調用者共用一個request和response執行個體。

    工作原理:

 

   另外:因為公用一個request、response執行個體,則該方法可以利用setAttribute(String name, Oject obj)以及getAttribute(String name)等方法來利用請求域屬性傳遞對象資料。執行個體如下:

boolean isError=true;request.setAttribute("error", isError);request.getRequestDispatcher("servletcom.jsp").forward(request, response);
boolean a=(boolean)request.getAttribute("error");跳轉的另一端直接擷取即可
Servlet的調用

  1)URL調用:當在設定檔中指定Servlet映射地址後,可直接從瀏覽器調用Servlet,如:

       http://localhost:8080/helloworld

  2)JSP檔案中調用:可使用<jsp:include>或者<jsp:forward>語句在JSP頁面中調用一個Servlet,如:

         <jsp:include page="/Servlet" flush="true"/>

    頁面執行中,當遇到這一句會跳轉到響應的Servlet,當Servlet執行結束後控制權又回到原來的JSP頁面中。

    也可以用<jsp:forward>進行跳轉。        

 

JSP/Servlet Web 學習筆記 DayFour

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.