1. 程式人生 > >Servlet 獲取前端Form表單資料,並實現請求重定向、請求轉發

Servlet 獲取前端Form表單資料,並實現請求重定向、請求轉發

1.前端介面

編寫一個最簡單的登入介面:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<div>
		<form action="/class02/BlogServlet1" method="post">
			使用者名稱:<input type="text" name="username">
			<br>
			密&nbsp;&nbsp;&nbsp;&nbsp;碼:<input type="password" name="password">
			<br>
			<input type="submit" value="登入">
		</form>
	</div>
</body>
</html>

在這裡插入圖片描述

2. Servlet 編寫

共編寫2個Servlet(繼承 HttpServlet ):

  1. BlogServlet1:
    doPost()
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
		// 獲取引數值
		String username = (String) request.getParameter("username");
		String password = (String) request.getParameter("password");
		// 輸出到控制檯
		System.out.println("username: " + username);
		System.out.println("password: " + password);
		
		// 請求重定向
		// 設定引數值
		request.setAttribute("newName", "sendRedirect");
		response.sendRedirect("/class02/BlogServlet2");
		
		// 請求轉發
		// 設定引數值
		request.setAttribute("newName", "RequestDispatcher");
		RequestDispatcher requestDispatcher = request.getRequestDispatcher("/BlogServlet2");
		requestDispatcher.forward(request, response);
	}
  1. BlogServlet2:
    doGet()
	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
//		response.getWriter().append("Served at: ").append(request.getContextPath());
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");

		PrintWriter out = response.getWriter();
		// 輸出到頁面
		out.println("BlogServlet2: <br><br>");
		out.println("name: " + request.getParameter("username") + "<br>");
		out.println("passwd: " + request.getParameter("password") + "<br>");
		out.println("newName: " + request.getAttribute("newName") + "<br>");
	}

3. 執行

註釋請求轉發:
在這裡插入圖片描述

結果:URL地址變化
瀏覽器登入:
在這裡插入圖片描述
控制檯:
在這裡插入圖片描述
在這裡插入圖片描述

註釋請求重定向:
在這裡插入圖片描述

結果:
在這裡插入圖片描述

完!