JSP——请求重定向与请求转发
来源:互联网 发布:鲱鱼罐头 淘宝 编辑:程序博客网 时间:2024/05/22 11:29
请求重定向
客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变。
请求转发
服务器行为,request.getRequestDispatcher().forward(req,resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变。
案例:
写一个用户注册页面 reg.jsp , 点击“提交”按钮时跳转到 response.jsp 页面,在 response.jsp 页面中分别设置请求重定向和请求转发到 regRequest.jsp 页面。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'reg.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>用户注册</h1> <hr> <form name="regForm" action="response.jsp" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"/></td> </tr> <tr> <td>兴趣:</td> <td> <input type="checkbox" name="favorite" value="sports"/>运动 <input type="checkbox" name="favorite" value="read"/>看书 <input type="checkbox" name="favorite" value="paint"/>画画 <input type="checkbox" name="favorite" value="sing"/>唱歌 </td> </tr> <tr> <td colspan="2"><input type="submit" name="submitBnt" value="submit"/></td> </tr> </table> </form> </body></html>
regRequest.jsp 页面:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'regRequest.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <h1>request内置对象</h1><hr> <% //解决页面显示中文乱码问题,无法解决URL传递中文出现的乱码问题 request.setCharacterEncoding("utf-8"); %> 用户名:<%=request.getParameter("username") %><br/> 兴趣:<% if(request.getParameterValues("favorite")!=null){ String[] favorites=request.getParameterValues("favorite"); for(String str:favorites){ out.println(str+" "); } } %> </body></html>
在 response.jsp 中设置请求重定向:
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%><% //请求重定向 response.sendRedirect("regRequest.jsp");%>
保存所有程序,启动tomcat服务器,运行:
用户注册页面:
点击“submit”提交,发现地址栏URL地址不是 reg.jsp 指定处理请求的 response.jsp , 而且 regRequest.jsp 无法取得用户信息。说明用户的请求由 response.jsp 变为 regRequest.jsp ,相当于用户提出了2次请求,并且没有保存第一次的请求对象:
在 response.jsp 中设置请求转发
<%@ page language="java" import="java.util.*,java.io.*" contentType="text/html; charset=utf-8"%><%//请求转发 request.getRequestDispatcher("regRequest.jsp").forward(request,response);%>
保存所有,刷新用户注册页面,用户注册页面注册信息不变,点击“submit”提交按钮,页面跳转下图,发现地址栏地址仍为 reg.jsp 第一次请求的 response.jsp , 而且 regRequest.jsp 也取得了用户信息。说明客户端的请求没有改变,一直都是 response.jsp , 只做了一次请求,并且保存了该次的请求对象,实际上是由服务器端替客户端完成了到 regRequest.jsp 页面的请求:
- JSP——请求重定向与请求转发
- JSP请求的转发与重定向——day10
- jsp重定向与请求转发
- JSP内置对象——请求转发与请求重定向的区别
- Jsp 重定向、请求转发
- Jsp 重定向、请求转发
- Jsp 重定向、请求转发
- Jsp请求转发与请求重定向的区别
- JSP中请求重定向与请求转发的区别
- jsp请求转发和请求重定向
- jsp 请求重定向 请求转发
- JSP 请求重定向和请求转发
- 重定向与请求转发
- 请求转发与重定向
- 请求转发与重定向
- 请求转发与重定向!!*
- 重定向与请求转发
- 重定向与请求转发
- java邮件发送
- Mongodb 3.4配置搭建高可用集群(1)
- ubuntu下查看CPU,GPU内存使用率
- Gym 100741G Yet Another Median Task
- 在一定时间内连续双击返回键退出应用
- JSP——请求重定向与请求转发
- 阿里云linux系统安装mysql
- ssh和ssm的对比
- Thinkphp 5.0 命名空间
- c/c++程序编译连接过程
- Spring IoC(控制反转)和DI(依赖注入)的理解
- 【POJ】2976 Dropping tests(二分)
- bzoj 3366: [Usaco2004 Feb]Breeding 奶牛饲育
- C#反射获取文件流实现逐行读取