JSP中请求转发何请求重定向的区别

来源:互联网 发布:淘宝游戏王正版 编辑:程序博客网 时间:2024/06/06 05:00

首先看一下请求转发和请求重定向的区别
这里写图片描述
下面举一个生活中的小例子来说明
这里写图片描述
接下来用代码来说明重定向和转发的区别

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
地址不会发生改变
这里写图片描述

原创粉丝点击