一文讀懂Servlet

每天向前一步發表於2021-02-22

1 Servlet簡介

  • Servlet就是sun公司開發動態web的一門技術

  • Sun在這些API中提供一個介面叫做:Servlet。

  • 開發一個Servlet程式,只需兩步:

    • 編寫一個類,實現Servlet介面
    • 把開發好的java類部署到web伺服器中。

實現了Servlet介面的java程式叫做:Servlet。

2 HelloServlet

實現了Servlet介面的預設有兩個類:HttpServlet、GenericServlet。

一般直接繼承HttpServlet,重寫doGet()和doPost()方法。

3 步驟

1、Maven依賴

主要是兩個包:

  • servlet-api
  • jsp-api
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2</version>
            <scope>provided</scope>
        </dependency>

2、寫一個類,繼承HttpServlet

  • 重寫doGet()和doPost()方法。

  • 由於get或者post只是請求的方式不同,業務邏輯一樣,可以互相呼叫。

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //獲取前端傳送引數
        String method =req.getParameter("method");
        if("add".equals(method)){
            req.getSession().setAttribute("msg", "執行一個add方法~");
        }
        if("delete".equals(method)){
            req.getSession().setAttribute("msg", "執行一個delete方法~~");
        }
        //進行業務處理
        //轉發或重定向到檢視,此處為轉發到指定頁面
        req.getRequestDispatcher("/WEB-INF/jsp/home.jsp").forward(req, resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

3、編寫要轉發的頁面 home.jsp

  • servlet處理完成後,轉發到 /WEB-INF/jsp/home.jsp頁面。
  • 頁面正文展示${msg},表示servlet返回的msg欄位內容。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
    <title>zuka</title>
 </head>
 <body>
  ${msg}
  </body>
</html>

4、編寫Servlet對映

為什麼需要對映:

  • Servlet實現類是JAVA程式,是通過瀏覽器訪問,而瀏覽器需要連線web伺服器,所以我們需要在web.xml中註冊我們寫的Servlet。
  • 還需要提供一個瀏覽器可以訪問的路徑

【注意】:/hi中,斜槓/一定不能少,否則IDEA啟動Tomcat會報錯。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--註冊servlet-->
    <servlet>
        <servlet-name>hi</servlet-name>
        <servlet-class>servlet.MyServlet</servlet-class>
    </servlet>
    <!--servlet請求路徑,斜槓/不能少,否則啟動Tomcat會報錯-->
    <servlet-mapping>
        <servlet-name>hi</servlet-name>
        <url-pattern>/hi</url-pattern>
    </servlet-mapping>
</web-app>

5、Tomcat配置

  • 首先確保要測試的工程,至少有一個artifact,若一個都沒有,則點選+新增。

  • 新增本地Tomcat測試例項。



6、啟動測試

  • 首先進入http://localhost:8080/servlet_war/ ,展示預設頁面index.jsp。

MVC框架做了哪些事情

  • 將URL對映到java類或java類的方法。
  • 封裝使用者提交的資料。
  • 處理請求--呼叫相關的業務處理--封裝響應資料。
  • 將響應的資料進行渲染,jsp/html等表示層資料。

相關文章