1. 程式人生 > >request請求轉發和request域運用

request請求轉發和request域運用

1.請求轉發
	1.概述:讓伺服器跳轉到另一個資源上
	2.方法
	    1.request.getRequestDispatcher("跳轉資源路徑").forward(request, response); 
2.域物件
	1.作用:實現servlet與servlet之間的資料傳輸功能
	2.例如:Request本質上就是一個域物件, 域物件就是一個容器。
	3.域物件的方法
		1.request.setAttribute(key,value);往request物件中存資料
		2.requet.getAttribute(key)  從request物件中取資料
		3.request.removeAttribute(key)  刪除request中的資料。
		4.域物件儲存資料的方式是鍵值對
	4.程式碼	
		1.Html程式碼:  
			<html>
			  <head>
			    <title>reg.html</title>
			  </head>
			  <body>
			  	<form action="/day36_login/userServlet" method="post">
			  		使用者名稱:<input type="text" name="username"/><br/>
			  		密碼:<input type="password" name="password"/><br/>
			  		<input type="submit" value="提交"/>
			  	</form>
			  </body>
			</html>
		2.UserServlet程式碼: 
	public class UserServlet extends HttpServlet {
		private UserDao userDao = new UserDao();
				public void doGet(HttpServletRequest request, HttpServletResponse response)
						throws ServletException, IOException {
					//解決亂碼
					request.setCharacterEncoding("utf-8");
					//獲取請求引數
					String userName = request.getParameter("username");
					String password  = request.getParameter("password");
					User user = new User(userName,password);
					//把資料儲存到資料庫中
					userDao.save(user);
					// 往request域物件儲存資料
					request.setAttribute("USER",user);
					
					//跳轉到另外一個Servlet上顯示註冊是否成功的資訊。
			request.getRequestDispatcher("/infoServlet").forward(request, response); //請求轉發,跳轉到infoServlet	
					
		}
		public void doPost(HttpServletRequest request, HttpServletResponse response)
						throws ServletException, IOException {
					doGet(request, response);
		}
	}
		3.InfoServlet程式碼:  
			public class InfoServlet extends HttpServlet {
				public void doGet(HttpServletRequest request, HttpServletResponse response)
						throws ServletException, IOException {
					//從域物件物件中取出資料
					User user = (User) request.getAttribute("USER");(強轉)
					OutputStream out = response.getOutputStream();
					out.write(("<h1>恭喜"+user.getUsername()+"註冊成功</h1>").getBytes());
				}
				public void doPost(HttpServletRequest request, HttpServletResponse response)
						throws ServletException, IOException {
					doGet(request, response);
				}
			 
			}