Servlet執行流程 - JavaWeb

學習SpringMVC, 今天又複習了一下Servlet

簡單寫一下體會吧

在這裏插入圖片描述
首先, 導入依賴

<dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

注意: javax.servlet-api 3.0以上可以使用@WebServlet("/XXX")形式, 以前的就需要配置web.xml

寫頁面form.jsp來發送表單請求

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form action="hello" method="get">
    <input type="text" name="method"/>
    <input type="submit">
</form>

</body>
</html>

請求方式, get 即發送的內容可以看到. 跳到/hello

編寫servlet之前, 先配置web.xml,

<?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-name>hello</servlet-name>
        <servlet-class>top.clearlight.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>-->

    <!--超時時間-->
    <!--<session-config>
        <session-timeout>15</session-timeout>
    </session-config>-->

    <!--歡迎頁,項目首先打開的頁面-->
    <welcome-file-list>
        <welcome-file>form.jsp</welcome-file>
    </welcome-file-list>
</web-app>

這裏 把servlet和servlet-mapping註釋了, 用的註解形式

然後,書寫servlet來接受請求

package top.clearlight.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author <a href="mail to: [email protected]" rel="nofollow">lxy</a>
 * @date 2020/3/26 21:39
 */
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 取得前端參數
        String method = req.getParameter("method");
        if (method.equals("add")) {
            req.getSession().setAttribute("msg", "執行了add方法");
        }
        if (method.equals("delete")) {
            req.getSession().setAttribute("msg", "執行了delete方法");
        }

        // 2. 調用業務層


        // 3. 視圖轉發或者重定向
        req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

服務器內部進行轉發到 test.jsp
注意: 由於test.jsp放在web的WEB-INF文件夾下, 客戶端是訪問不到的!

test.jsp的內容

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

${msg}

</body>
</html>

圖片來源:Servlet 簡介及其執行流程
在這裏插入圖片描述

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