首先看一下请求转发和请求重定向的区别
下面举一个生活中的小例子来说明
接下来用代码来说明重定向和转发的区别
1.请求重定向
response.jsp
<%@page import="java.io.PrintWriter"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
response.setContentType("text/html;charset=utf-8");
out.println("<h1>response内置对象</h1>");
out.println("<br>");
PrintWriter outer = response.getWriter();
outer.println("大家好,我是response对象生成的输出流outer对象");
response.sendRedirect("request.jsp");
%>
reg.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>用户注册</h1>
<hr>
<form name = "regFrom" 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="read">读书
<input type="checkbox" name="favorite" value="music">音乐
<input type="checkbox" name="favorite" value="movie">电影
<input type="checkbox" name="favorite" value="Internet">上网
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="submit" />
</td>
</tr>
</table>
</form>
<br>
<br>
<a href = "request.jsp?username=lisi">
测试超链接
</a>
</body>
</html>
我们在注册页面输入‘hsy’,爱好选择‘音乐’和‘读书’点‘submit’之后
提交到‘response.jsp’后,response.sendRedirect(“request.jsp”)
页面请求重定向到”request.jsp”
我们发现用户名和爱好都为null,这也就说明了请求重定向相当于两次请求,前一次请求的对象不会被保存,URL地址会发生改变
2.请求转发
response.jsp
<%@page import="java.io.PrintWriter"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
response.setContentType("text/html;charset=utf-8");
out.println("<h1>response内置对象</h1>");
out.println("<br>");
PrintWriter outer = response.getWriter();
outer.println("大家好,我是response对象生成的输出流outer对象");
request.getRequestDispatcher("request.jsp").forward(request, response);
%>
reg.jsp代码和上面一样
同样的我们在注册页面输入‘hsy’,爱好选择‘音乐’和‘读书’点‘submit’之后
提交到‘response.jsp’后,response.sendRedirect(“request.jsp”)
页面请求重定向到”request.jsp”
我们发现用户名和爱好都存在,所以说请求转发相当于一次请求,且URL
地址不会发生改变