1、首页(redirectvsdispatch.jsp)
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/8/7
Time: 14:48
To change this template use File | Settings | File Templates.
求精要诀P53
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>测试转发和重定向</title>
</head>
<body>
<form method="post" action="redirectvsdispatchServlet">
姓名:<input type="text" name="username" value="海棠"><br><br>
密码:<input type="text" name="userpwd" value="909911"><br><br>
<input type="submit" value="测试重定向"><br>
</br></br>
</form>
<%--
不写反斜杠竟然不报错,按理说应该写成<br/><input/>????????
--%>
<form method="post" action="DispatchServlet">
姓名:<input type="text" name="username" value="海棠A"><br><br>
密码:<input type="text" name="userpwd" value="909911A"><br><br>
<input type="submit" value="测试转发"><br>
</form>
</body>
</html>
2、redirectvsdispatchServlet 文件(重定向)
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("/redirectvsdispatchServlet")
public class redirectvsdispatchServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置请求编码
request.setCharacterEncoding("UTF-8");
//拿到请求页面的元素值
String username = request.getParameter("username");
//重定向到redirect.jsp文件
response.sendRedirect("redirect.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
3、重定向结果页面(redirect.jsp)
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/8/7
Time: 15:21
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>重定向结果</title>
</head>
<body>
用户名:<%= request.getAttribute("username")%>
密码:<%= request.getAttribute("userpwd")%>
</body>
</html>
4、结果页面
5、请求转发页面(dispatch.jsp)
import javax.servlet.RequestDispatcher;
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("/DispatchServlet")
public class DispatchServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//请求转发
//设置请求编码
request.setCharacterEncoding("UTF-8");
//拿到请求页面的元素值
String username = request.getParameter("username");
//获取请求转发器
RequestDispatcher requestDispatcher = request.getRequestDispatcher("dispatch.jsp");
//请求转发
requestDispatcher.forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
6、请求转发跳转页面(dispatch.jsp)
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2019/8/7
Time: 15:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>请求转发页面</title>
</head>
<body>
用户名:<%= request.getParameter("username")%>
密码:<%= request.getParameter("userpwd")%>
</body>
</html>
7、请求转发结果页面
8、对比转发和重定向
重定向发出了两次请求
请求转发发出了一次请求