request請求轉發和request域運用
阿新 • • 發佈:2019-01-09
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); } }