文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

聊聊Java中的转发与重定向

2024-12-03 07:45

关注

本文转载自微信公众号「见贤思编程」,作者泰斗贤若如。转载本文请联系见贤思编程公众号。   

转发与重定向简介

转发和重定向都是实现页面跳转

也就是说,当我们访问一个 Servlet 的时候 ,Servlet 帮我们跳转到另一个界面。

转发与重定向的区别

代码演示转发和重定向

  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.  
  3.  
  4. 登录 
  5.  
  6.  
  7. action="/login"
  8. <table align="center"
  9.  
  10. 账号: 
  11. "text" name="name"
  12.  
  13.  
  14. 密码: 
  15. "text" name="password"
  16.  
  17.  
  18. "submit" value="登录"
  19. "reset" value="重置"
  20.  
  21. table
  22.  
  23.  
  24.  

 

 

 

 

 

转发和重定向如何带数据到某个页面

  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.  
  3.  
  4. 转发和重定向传代数据练习 
  5.  
  6.  
  7. <% 
  8. //1、接收转发传代的数据 
  9. String name = (String) request.getAttribute("name"); 
  10. out.println("转发传代的数据:"+name); 
  11.  
  12.  
  13. %> 
  14.  
  15.  
  16.  
  17.  

  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.  
  3.  
  4. 转发和重定向传代数据练习 
  5.  
  6.  
  7. <% 
  8. //1、接收重定向传代的数据 
  9. String name1 = (String)application.getAttribute("name"); 
  10. out.println("重定向传代的数据:"+name1); 
  11. %> 
  12.  
  13.  

 

 

练习

 

index.jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %> 
  2.  
  3.  
  4. Title 
  5.  
  6.  
  7. action="CountServlet" method="post"
  8. 加法计算器

     
  9. 加数1:"number" name="one"
  10. 加数2:"number" name="two"
  11. "submit" value="计算"
  12.  
  13.  
  14.  

count.jsp

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

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); 

 

来源:见贤思编程内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯