您现在的位置是:亿华云 > 域名
聊聊Java中的转发与重定向
亿华云2025-10-03 11:46:05【域名】2人已围观
简介本文转载自微信公众号「见贤思编程」,作者泰斗贤若如。转载本文请联系见贤思编程公众号。 转发与重定向简介转发和重定向都是实现页面跳转也就是说,当我们访问一个 Servlet 的时候 ,Servlet 帮
本文转载自微信公众号「见贤思编程」,聊聊作者泰斗贤若如。中的转发重定转载本文请联系见贤思编程公众号。聊聊
转发与重定向简介
转发和重定向都是中的转发重定实现页面跳转
也就是说,当我们访问一个 Servlet 的聊聊时候 ,Servlet 帮我们跳转到另一个界面。中的转发重定
转发与重定向的聊聊区别
实现转发调用的是亿华云 HttpServletRequest 对象中的方法 实现重定向调用的是 HttpServletResponse 对象中的方法 转发时浏览器中的 url 地址不会发生改变 重定向时浏览器中的 url 地址会发生改变 转发时浏览器只请求一次服务器 重定向时浏览器请求两次服务器 转发能使用 request 带数据到跳转的页面 重定向能使用 ServletContext 带数据到跳转的页面代码演示转发和重定向
package servlet; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/login") public class ServletDemo extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取表单提交过来的数据 //getParameter()方法可以获取请求的参数信息 String name = req.getParameter("name"); String password = req.getParameter("password"); //打印获取到的参数信息 System.out.println("name:"+name); System.out.println("password:"+password); //如果name=admin,password=123,则跳转到succee.jsp,否则跳转到fail.jsp if("admin".equals(name)&&"123".equals(password)){ //通过转发实现跳转 req.getRequestDispatcher("/success.jsp").forward(req,resp); }else { //通过重定向实现跳转 resp.sendRedirect("/fail.jsp"); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }JSP代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>登录</title> </head> <body> <form action="/login"> <table align="center"> <tr> <td>账号:</td> <td><input type="text" name="name"></td> </tr> <tr> <td>密码:</td> <td><input type="text" name="password"></td> </tr> <tr> <td><input type="submit" value="登录"></td> <td><input type="reset" value="重置"></td> </tr> </table> </form> </body> </html>转发和重定向如何带数据到某个页面
send.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>转发和重定向传代数据练习</title> </head> <body> <% //1、接收转发传代的中的高防服务器转发重定数据 String name = (String) request.getAttribute("name"); out.println("转发传代的数据:"+name); %> </body> </html>send2.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>转发和重定向传代数据练习</title> </head> <body> <% //1、接收重定向传代的聊聊数据 String name1 = (String)application.getAttribute("name"); out.println("重定向传代的数据:"+name1); %> </body> </html>练习
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="CountServlet" method="post"> <h3>加法计算器</h3> 加数1:<input type="number" name="one"> 加数2:<input type="number" name="two"> <input type="submit" value="计算"> </form> </body> </html>count.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> 计算结果:<%=request.getAttribute("count")%> <!--计算结果:<%=application.getAttribute("count")%>--> </body> </html>Servlet
package servlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/CountServlet") public class CountServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String one=request.getParameter("one"); int o=Integer.parseInt(one);//强制转换,将String类型的中的转发重定数据转换成int类型 String two=request.getParameter("two"); int t=Integer.parseInt(two);//强制转换,将String类型的聊聊数据转换成int类型 System.out.println(one+" "+two); int c=o+t; String co=String.valueOf(c);//将int类型的数据转换成String类型 //转发,可以携带数据 request.setAttribute("count",中的转发重定co); request.getRequestDispatcher("count.jsp").forward(request,response); //用于存放数据 // ServletContext s=this.getServletContext(); // s.setAttribute("count",co); //重定向只能依靠ServletContext获取数据 // response.sendRedirect("count.jsp"); System.out.println(co); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } }很赞哦!(798)