Servlet基礎

發表於2015-12-21
1、什麼是Servlet

Servlet是在伺服器上執行的小程式(服務端的小程式)。一個Servlet就是一個Java類,並且可以通過“請求-響應”程式設計模型來訪問到這個駐留在伺服器記憶體裡的Servlet小程式。

Servlet採用了多執行緒的處理方式,而且Servlet還保留有Java的可移植性的特點,這樣使得Servlet更易使用,功能也更加強大。

Servlet帶給開發人員最大的好處是它可以處理客戶端傳來的HTTP請求,並返回一個響應。

2、Tomcat容器等級

Tomcat的容器分為四個等級,Servlet的容器管理Context容器,一個Context對應一個Web工程。

3200716-0dc1214d1e0ec30e.png
Tomcat容器等級
3、編寫一個Servlet類
3200716-806b3b5fb41fad42.PNG
servlet
  1. 繼承HttpServlet。
  2. 重寫doGet()或doPost()方法。
public class HelloServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        this.doGet(req, resp);
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;chanset=utf-8");
        PrintWriter out = response.getWriter();
        System.out.println("Get請求!!!");
        out.println("<b>Hello World</b>");
    }
}
  1. 在web.xml中註冊Servlet
<servlet>
      <servlet-name>Input</servlet-name>
      <servlet-class>com.meng.servlet.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>Input</servlet-name>
      <url-pattern>/servlet/HelloServlet</url-pattern>
  </servlet-mapping>
  1. 請求頁面
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Servlet 測試</title>
</head>
<body>
    <h1>Servlet 測試</h1>
    <ul>
        <li><a href="servlet/HelloServlet">Hello Servlet</a></li>
    </ul>
</body>
</html>
4、Servlet生命週期
3200716-471d2aff71a5e3d9.png
servlet生命週期

在下列時刻Servlet容器裝在Servlet

  • Servlet容器啟動時自動裝載某些Servlet,實現它只需要在web.xml檔案中的<servlet></servlet>之間新增如下程式碼:
    <loadon-startup>1</loadon-startup>,數字越小表示優先順序越高。
  • 在Servlet容器啟動後,客戶首次向Servlet傳送請求。
  • Servlet檔案更新後,重新裝在Servlet。
5、Servlet與九大內建物件
3200716-3a1a92c854997aeb.png
Servlet與九大內建物件
6、Servlet路徑跳轉
  1. 請求重定向方式跳轉
    直接使用HttpServletResponse介面的sendRedirect()方法即可,此跳轉只能傳遞session範圍的屬性,而無法傳遞request範圍的屬性。
response.sendRedirect(request.getContextPath() + "/test.jsp");
  1. 伺服器內部跳轉(轉發)
request.getRequestDispatcher("/test.jsp").forward(request, response);

兩這的區別:

重定向:位址列會改變。
轉發:位址列地址不變。

7、獲取初始化引數

在web.xml中配置Servlet時,可以配置一些初始化引數,而在Servlet中可以通過ServletConfig介面提供的getInitParameter()方法來取得這些引數。

  <servlet>
     <init-param>
          <param-name>username</param-name>
          <param-value>xiaoli</param-value>
      </init-param>
  </servlet>

相關文章