请求转发和请求重定向

  • 请求重定向

客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL地址会改变;

  • 请求转发

服务器行为,request.getRequestDispatcher.forward(request,response);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变;

  • 一个现实生活的例子

重定向:你先去A了局,A局的人说:“这个是不归我们管,去B局”,然后,你就从A局退了出来,自己乘车去了B局;

转发:你去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他们没有把你退回来,而是让你坐了一会,自己到后面办公室联系了B的人,让他们办好了,送了过来。

  • REG页
<%--
  Created by IntelliJ IDEA.
  User: jdq8576
  Date: 2018/6/27
  Time: 19:36
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户注册</title>
</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="read">读书
            <input type="checkbox" name="favorite" value="movie">电影
            <input type="checkbox" name="favorite" value="music">音乐
            <input type="checkbox" name="favorite" value="runing">跑步
            </td>
        </tr>
        <tr>
            <td colspan="2"><input type="submit" value="提交"/></td>
        </tr>
    </table>
</form>
<br>
<br>
<hr>
<a href="request.jsp?username=李四">url传参数</a>

</body>
</html>

  • request页
<%--
  Created by IntelliJ IDEA.
  User: jdq8576
  Date: 2018/6/27
  Time: 19:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>request</title>
</head>
<body>
<h1>request内置对象</h1>
<%
    request.setAttribute("password","123456");
%>
用户名:<%=request.getParameter("username") %><br>
爱好:<%
    if(request.getParameterValues("favorite")!=null) {
        String[] favorites = request.getParameterValues("favorite");
        for (int i = 0; i < favorites.length; i++) {
            out.println(favorites[i] + " ");
        }
    }
%>
<br>
密码:<%=request.getAttribute("password")%><br>
请求体的MIME类型:<%=request.getContentType()%><br>
协议类型及版本号:<%=request.getProtocol()%><br>
服务器主机号:<%=request.getServerName()%><br>
服务器端口号:<%=request.getServerPort()%><br>
请求客户端的IP地址:<%=request.getRemoteAddr()%><br>
</body>
</html>
  • response页
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
//请求重定向
response.sendRedirect("request.jsp");
//请求转发
//request.getRequestDispatcher("request.jsp").forward(request,response);
%>
</body>
</html>



猜你喜欢

转载自blog.csdn.net/jdq8576/article/details/80863693