昨天製作了一個只有文字的網頁,今天要來做一個Post表單,選擇Post而不是Get是因為:使用Post方法數據不會顯示在 URL 中,而是作為請求的「主體」傳遞到伺服器,因此在地址欄上看不到提交的數據。相對來說比Get更安全。具體程式碼大概長這樣
jsp檔,裡面是4個輸入框,分別是學號、姓名、性別、年齡,輸入完會傳送到到伺服器的/TryToEnterData
其中label是一個輸入框,name="xxx"代表的是這筆資料在程式中的名稱,submit是提交表單的按鈕
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8">
<title>TryToEnterData</title>
</head>
<body>
<form action="http://localhost:8080/TryToEnterData" method="post">
<label>學號:</label>
<input type="text" name="number">
<br>
<label>姓名:</label>
<input type="text" name="name">
<br>
<label>性別:</label>
<input type="text" name="gender">
<br>
<label>年齡:</label>
<input type="text" name="age">
<input type="submit" value="GNTM">
</form>
</body>
</html>
下面是EnterData的class程式碼,它的作用是抓取Post表單中輸入的資料(就是上述的name="xxx"),並把它定義成字串,然後再以html格式輸出文字
package Package1;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name = "EnterData", value = "/TryToEnterData ")
public class EnterData extends HttpServlet {
private PrintWriter out;
public void init() {
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String number = request.getParameter("number");
String name = request.getParameter("name");
String gender = request.getParameter("gender");
String age = request.getParameter("age");
out = response.getWriter();
out.println("<html><body>");
out.println("<h1>" +"your data is : "+ "</h1>");
out.println("<br>");
out.println("<h3>" + number + "</h3>");
out.println("<h3>" + name + "</h3>");
out.println("<h3>" + gender + "</h3>");
out.println("<h3>" + age + "</h3>");
out.println("</body></html>");
}
public void destroy() {
}
}
來看看執行畫面
可以看到跟我們預想的一樣