JSP RequestDispatcher servlet之間傳參

介紹

RequestDispatcher可以向參數從一個seevlet傳給另一個
大佬路過,小白寫出來僅給另一個小白參考

目錄結構

在這裏插入圖片描述

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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_3_1.xsd">
    <servlet>
        <servlet-name>CalculatorServlet</servlet-name>
        <servlet-class>CalculatorServlet</servlet-class>
    </servlet>
    <servlet>
        <servlet-name>DisplayServlet</servlet-name>
        <servlet-class>DisplayServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CalculatorServlet</servlet-name>
        <url-pattern>/CalculatorServlet</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>DisplayServlet</servlet-name>
        <url-pattern>/DisplayServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

index.html

提交2個參數到 CalculatorServlet.java

<!DOCTYPE html>
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <form name="frm" method="get" action="CalculatorServlet">
            <p align="center">
                Calculation form
            </p>
            <table>
            <tr>
                <td><b>輸入第一個數字:</b></td>
                <td><input type="text" name="number1" size="20"></td>
            </tr>
            <tr>
                <td><b>輸入第二個數字:</b></td>
                <td><input type="text" name="number2" size="20"></td>
            </tr>
            <tr align="center">
                <td colspan=2>
                    <input type="Submit" value="" name="b1">
                </td>
            </tr>
            </table>
        </form>
    </body>
</html>

CalculatorServlet.java

接收index出來的2個參數,計算後發給 DisplayServlet.java

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CalculatorServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        //獲取兩個參數
        int num1 = Integer.parseInt(request.getParameter("number1"));
        int num2 = Integer.parseInt(request.getParameter("number2"));
        // 相加
        int result = num1 + num2;
        
        // 將結果放到屬性 result中,然後傳給/DisplayServlet
        request.setAttribute("result", new Integer(result));
        ServletContext contx = getServletConfig().getServletContext();
        RequestDispatcher reqDispatcher = contx.getRequestDispatcher("/DisplayServlet");
        reqDispatcher.forward(request, response);

    }
}

DisplayServlet.java

接收CalculatorServlet.java 傳的參數,並且輸出

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CalculatorServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        //獲取兩個參數
        int num1 = Integer.parseInt(request.getParameter("number1"));
        int num2 = Integer.parseInt(request.getParameter("number2"));
        // 相加
        int result = num1 + num2;
        
        // 將結果放到屬性 result中,然後傳給/DisplayServlet
        request.setAttribute("result", new Integer(result));
        ServletContext contx = getServletConfig().getServletContext();
        RequestDispatcher reqDispatcher = contx.getRequestDispatcher("/DisplayServlet");
        reqDispatcher.forward(request, response);

    }
}

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