介紹
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);
}
}