成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊Java中的轉發與重定向

開發 后端
轉發和重定向都是實現頁面跳轉,也就是說,當我們訪問一個 Servlet 的時候 ,Servlet 幫我們跳轉到另一個界面。

 [[390002]]

本文轉載自微信公眾號「見賢思編程」,作者泰斗賢若如。轉載本文請聯系見賢思編程公眾號。   

轉發與重定向簡介

轉發和重定向都是實現頁面跳轉

也就是說,當我們訪問一個 Servlet 的時候 ,Servlet 幫我們跳轉到另一個界面。

轉發與重定向的區別

  • 實現轉發調用的是 HttpServletRequest 對象中的方法
  • 實現重定向調用的是 HttpServletResponse 對象中的方法
    • 轉發時瀏覽器中的 url 地址不會發生改變
    • 重定向時瀏覽器中的 url 地址會發生改變
  • 轉發時瀏覽器只請求一次服務器
  • 重定向時瀏覽器請求兩次服務器
    • 轉發能使用 request 帶數據到跳轉的頁面
    • 重定向能使用 ServletContext 帶數據到跳轉的頁面

代碼演示轉發和重定向

  1. package servlet; 
  2.  
  3.  
  4. import javax.servlet.ServletException; 
  5. import javax.servlet.annotation.WebServlet; 
  6. import javax.servlet.http.HttpServlet; 
  7. import javax.servlet.http.HttpServletRequest; 
  8. import javax.servlet.http.HttpServletResponse; 
  9. import java.io.IOException; 
  10.  
  11.  
  12. @WebServlet("/login"
  13. public class ServletDemo extends HttpServlet { 
  14. @Override 
  15. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  16. //獲取表單提交過來的數據 
  17. //getParameter()方法可以獲取請求的參數信息 
  18. String name = req.getParameter("name"); 
  19. String password = req.getParameter("password"); 
  20.  
  21.  
  22. //打印獲取到的參數信息 
  23. System.out.println("name:"+name); 
  24. System.out.println("password:"+password); 
  25.  
  26.  
  27. //如果name=admin,password=123,則跳轉到succee.jsp,否則跳轉到fail.jsp 
  28. if("admin".equals(name)&&"123".equals(password)){ 
  29. //通過轉發實現跳轉 
  30. req.getRequestDispatcher("/success.jsp").forward(req,resp); 
  31. }else { 
  32. //通過重定向實現跳轉 
  33. resp.sendRedirect("/fail.jsp"); 
  34.  
  35.  
  36. @Override 
  37. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  38. doGet(req, resp); 
  39.  
  40.  

JSP代碼

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  2. <html> 
  3. <head> 
  4. <title>登錄</title> 
  5. </head> 
  6. <body> 
  7. <form action="/login"
  8. <table align="center"
  9. <tr> 
  10. <td>賬號:</td> 
  11. <td><input type="text" name="name"></td> 
  12. </tr> 
  13. <tr> 
  14. <td>密碼:</td> 
  15. <td><input type="text" name="password"></td> 
  16. </tr> 
  17. <tr> 
  18. <td><input type="submit" value="登錄"></td> 
  19. <td><input type="reset" value="重置"></td> 
  20. </tr> 
  21. </table
  22. </form> 
  23. </body> 
  24. </html> 

 

 

 

 

 

轉發和重定向如何帶數據到某個頁面

  1. package servlet; 
  2. import javax.servlet.ServletContext; 
  3.  
  4. import javax.servlet.ServletException; 
  5.  
  6. import javax.servlet.annotation.WebServlet; 
  7.  
  8. import javax.servlet.http.HttpServlet; 
  9.  
  10. import javax.servlet.http.HttpServletRequest; 
  11.  
  12. import javax.servlet.http.HttpServletResponse; 
  13.  
  14. import java.io.IOException; 
  15. @WebServlet("/login"
  16.  
  17. public class ServletDemo extends HttpServlet { 
  18.  
  19. @Override 
  20.  
  21. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  22. //通過轉發帶數據 
  23.  
  24. req.setAttribute("name","張三"); 
  25.  
  26. req.getRequestDispatcher("/send.jsp").forward(req,resp); 
  27. @Override 
  28.  
  29. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  30.  
  31. doGet(req, resp); 
  32.  

send.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  2. <html> 
  3. <head> 
  4. <title>轉發和重定向傳代數據練習</title> 
  5. </head> 
  6. <body> 
  7. <% 
  8. //1、接收轉發傳代的數據 
  9. String name = (String) request.getAttribute("name"); 
  10. out.println("轉發傳代的數據:"+name); 
  11.  
  12.  
  13. %> 
  14.  
  15.  
  16. </body> 
  17. </html> 

  1. package servlet; 
  2. import javax.servlet.ServletContext; 
  3.  
  4. import javax.servlet.ServletException; 
  5.  
  6. import javax.servlet.annotation.WebServlet; 
  7.  
  8. import javax.servlet.http.HttpServlet; 
  9.  
  10. import javax.servlet.http.HttpServletRequest; 
  11.  
  12. import javax.servlet.http.HttpServletResponse; 
  13.  
  14. import java.io.IOException; 
  15. @WebServlet("/login"
  16.  
  17. public class ServletDemo extends HttpServlet { 
  18.  
  19. @Override 
  20.  
  21. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  22.  
  23.  
  24.  
  25. //通過重定向帶數據 
  26.  
  27. ServletContext servletContext = this.getServletContext(); 
  28.  
  29. servletContext.setAttribute("name","王二麻子"); 
  30.  
  31. resp.sendRedirect("/send2.jsp"); 
  32. @Override 
  33.  
  34. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
  35.  
  36. doGet(req, resp); 
  37.  

send2.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  2. <html> 
  3. <head> 
  4. <title>轉發和重定向傳代數據練習</title> 
  5. </head> 
  6. <body> 
  7. <% 
  8. //1、接收重定向傳代的數據 
  9. String name1 = (String)application.getAttribute("name"); 
  10. out.println("重定向傳代的數據:"+name1); 
  11. %> 
  12. </body> 
  13. </html> 

 

 

練習

 

index.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  2. <html> 
  3. <head> 
  4. <title>Title</title> 
  5. </head> 
  6. <body> 
  7. <form action="CountServlet" method="post"
  8. <h3>加法計算器</h3> 
  9. 加數1:<input type="number" name="one"
  10. 加數2:<input type="number" name="two"
  11. <input type="submit" value="計算"
  12. </form> 
  13. </body> 
  14. </html> 

count.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  2. <html> 
  3. <head> 
  4. <title>Title</title> 
  5. </head> 
  6. <body> 
  7. 計算結果:<%=request.getAttribute("count")%> 
  8. <!--計算結果:<%=application.getAttribute("count")%>--> 
  9. </body> 
  10. </html> 

Servlet

  1. package servlet; 
  2. import javax.servlet.ServletContext; 
  3. import javax.servlet.ServletException; 
  4. import javax.servlet.annotation.WebServlet; 
  5. import javax.servlet.http.HttpServlet; 
  6. import javax.servlet.http.HttpServletRequest; 
  7. import javax.servlet.http.HttpServletResponse; 
  8. import java.io.IOException; 
  9. @WebServlet("/CountServlet"
  10. public class CountServlet extends HttpServlet { 
  11. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
  12. String one=request.getParameter("one"); 
  13. int o=Integer.parseInt(one);//強制轉換,將String類型的數據轉換成int類型 
  14. String two=request.getParameter("two"); 
  15. int t=Integer.parseInt(two);//強制轉換,將String類型的數據轉換成int類型 
  16. System.out.println(one+" "+two); 
  17. int c=o+t; 
  18. String co=String.valueOf(c);//將int類型的數據轉換成String類型 
  19. //轉發,可以攜帶數據 
  20. request.setAttribute("count",co); 
  21. request.getRequestDispatcher("count.jsp").forward(request,response); 
  22. //用于存放數據 
  23. // ServletContext s=this.getServletContext(); 
  24. // s.setAttribute("count",co); 
  25. //重定向只能依靠ServletContext獲取數據 
  26. // response.sendRedirect("count.jsp"); 
  27. System.out.println(co); 
  28. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
  29. doPost(request,response); 

 

責任編輯:武曉燕 來源: 見賢思編程
相關推薦

2009-06-25 14:54:22

Servlet轉發Servlet重定向

2020-12-09 11:10:12

shellLinux管道

2010-12-14 15:07:15

ICMP路由重定向

2022-11-10 15:08:44

Linux輸入輸出

2009-06-30 15:37:27

Servlet和JSP

2023-02-09 07:01:35

轉發重定向Java

2017-08-08 09:17:41

301302重定向

2024-07-26 08:23:02

2009-11-23 18:39:17

PHP重定向

2010-07-13 14:10:44

ICMP協議

2022-09-02 08:03:44

IO程序網卡

2016-08-23 17:21:51

UnixLinux重定向

2017-01-19 19:14:20

Linux重定向命令

2010-03-09 16:11:59

Linux重定向

2022-07-18 07:11:35

請求轉發請求重定數據共享

2020-07-27 07:41:23

Linux重定向數據流

2010-12-31 13:35:25

文件夾重定向

2011-06-15 14:43:43

301重定向

2009-06-17 17:13:40

UNIX

2012-12-24 09:46:50

RDS打印重定向
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 丝袜 亚洲 另类 欧美 综合 | 一区二区成人 | 欧美日韩一二三区 | 亚洲精品电影网在线观看 | 免费午夜视频在线观看 | 国产精品毛片久久久久久久 | 毛片大全| 国产欧美一区二区三区免费 | 九九热免费看 | 国产高清免费 | 久草视频网站 | 成人在线免费电影 | 羞羞视频网站免费观看 | www天天操| 99re在线视频观看 | 国产美女视频黄 | 亚洲精品一区二区冲田杏梨 | 国产激情免费视频 | 一区二区在线看 | 亚洲网视频 | 91久久综合 | 波波电影院一区二区三区 | 久免费视频 | 国产亚洲精品精品国产亚洲综合 | 91视频大全 | 日韩成人在线看 | 色视频在线播放 | 久久aⅴ乱码一区二区三区 亚洲欧美综合精品另类天天更新 | 男女羞羞在线观看 | 久久久久久一区 | www.黄网| 亚洲精品99 | 国产高清精品一区二区三区 | 欧美999 | 97视频久久 | 精品一级 | 羞羞视频网站免费看 | 亚洲第一区国产精品 | 一区二区三区四区在线 | 精品欧美一区二区三区久久久 | 免费久久久久久 |