HttpServletResponse应用(三)sendRedirect()实现请求重定向
作者:互联网
说明
当Web服务器接收到客户端的请求后,可能由于某些条件限制,不能访问当前请求URL所指向的Web资源,而是指定了一个新的资源路径,让客户端重新发送请求。
为了实现重定向,在HttpServletResponse接口中定义了一个sendRedirect()方法,该方法用于生成302响应码和Location响应头,从而通知客户端重新访问Location响应头中指定的URL。
sendRedirect()完整语法
public void sendRedirect(java.lang.String location) throws java.io.IOException
其中参数location可以是相对URL或者绝对URL。
sendRedirect()工作原理
1.浏览器 ——>请求Servlet1——>WEB服务器(servlet容器)
2.Servlet1中执行senRedirect()——>通知浏览器重定向到Servlet2——>浏览器
3.浏览器——>请求Servlet2——>Servlet2收到
4.Servlet2——>回送响应消息——>浏览器
sendRedirect()具体使用
编写登录页面login.html和欢迎页面welcome.html
在创建的项目的WebContent文件夹下创建login.html和欢迎页面welcome.html,代码如下:
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>登录页面</title>
</head>
<body>
<!--把表单提交到chapter04工程下的LoginServlet-->
<form action="/chapter04/LoginServlet" method="GET">
用户名:<input type="text" name="username">
<br>
密 码:<input type="password" name="password">
<br>
<input type="submit" value="登录">
</form>
</body>
</html>
welcome.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>欢迎页面</title>
</head>
<body>
<h1>
登录成功!!!
</h1>
</body>
</html>
编写处理登录请求的Servlet类LoginServlet
LoginServlet代码:
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
//处理用户登录请求
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
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");
//假设用户名和密码分别:wangdong和101203
if(("wangdong").equals(username)&&("101203").equals(password)) {
//如果用户名和密码正确,重新定向到welcome.html页面
response.sendRedirect("/chapter04/welcome.html");
}else {
//如果错误,重定向到login.html页面
response.sendRedirect("/chapter04/login.html");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
// http://localhost:8080/chapter04/login.html
}
运行login.html登录页面
1.当密码错误时,重定向到login.html页面
假设
用户名:wangdong
密 码:101203
(1)输入错误密码
(2)提交后又直接返回登录页面
2.当用户名和密码都正确时,跳转到welcome.html页面
(1)输入正确用户名和密码
(2)跳转到welcome.html页面
标签:重定向,sendRedirect,request,HttpServletResponse,html,login,response,页面 来源: https://blog.csdn.net/qq_46452300/article/details/116083511