实现方式
第一种:通过302和Location配合的使用,实现重定向
public class TestClass extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setStatus(302);
response.setHeader("Location", "https://www.baidu.com");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
第二种:通过sendRedirect(”URL”)方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="http://localhost:8080/Demo_04/TestClass" method="get">
用户名:<input type="text" name="userName">
密码:<input type="password" name = "pw">
<input type="submit" value="登陆按钮">
</form>
</body>
</html>
跳转
public class TestClass extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("userName");
String pw = request.getParameter("pw");
if(name.equals("123")&& pw.equals("qwe")) {
response.sendRedirect("https://www.baidu.com");
}else {
response.setContentType("text/html;charset=utf-8");
response.getWriter().print("账号密码错误");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
重定向的特点
1,浏览器地址栏发生变化
2,发送了两次请求,且都是由浏览器发送的请求
重定向的路径
由于是浏览器发送得到的请求,所以路径必须要带上项目名称