概念: 所谓请求重定向就是在Web服务器接受到客户端的请求后,可能由于某些条件的限制,不能访问当前请求URL所指向的Web资源,而是指定了一个新的资源路径,让客户端重新发送请求。
原理: 为实现请求重定向,在HttpServletResponse接口中,定义了一个sendRedirect()方法,该方法用于生成302响应码和Location响应头,从而通知客户端重新访问Location响应头中指定的URL,sendRedirect()方法工作原理图如下:
sendRedirct()方法工作原理图
实例:
(1)编写用户登陆界面form.html和登陆成功界面welcome.html如下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/Test4/LoginServlet" method="post">
用户名:<input type="text" name = "username"></br>
密码:<input type="password" name="password"></br>
<input type="submit">
</form>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
欢迎你,登陆成功!
</body>
</html>
(2)编写处理用户登陆请求的LoginServlet
package sendRe;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LoginServlet
*/
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//用HttpServletRequest对象的getParameter()方法获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//假设用户名和密码分别为:summer 和 123
if(("summer").equals(username)&&("123").equals(password)) {
//如果用户名和密码正确,重定向到welcome.html
response.sendRedirect("/Test4/welcome.html");
}else {
response.sendRedirect("/Test4/form.html");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
登陆成功时页面:
登陆失败时跳转到登陆页面;