Servlet的转发请求
- 实现方式
- 测试举例
- 总结回顾
实现方式
1.通过请求重定向
response.sendRedirect("/Test/index2.html");
2.通过定时跳转
response.setHeader("refresh", "2;URL=index2.html");
3.通过RequestDispatcher
//x是指html/jsp页面
this.getServletContext().getRequestDispatcher("/x");
request.getRequestDispatcher("x").forward(request, response);
测试举例
1测试
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="first" method="post">
<input type="submit">
</form>
</body>
</html>
package com.vetor.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/first")
public class first extends HttpServlet {
private static final long serialVersionUID = 1L;
public first() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 第二种方式
// response.setContentType("text/html;charset=utf-8");
// response.getWriter().println("将会在3秒后开始跳转页面");
// response.setHeader("refresh", "2;URL=index2.html");
// 第一种方式
response.sendRedirect("/Test/index2.html");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
1测试结果
3测试
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="DispatcherServlet" >点击我,你将会看到一个新世界</a>
</body>
</html>
package com.vetor.dispatcher;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
*/
@WebServlet("/DispatcherServlet")
public class DispatcherServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public DispatcherServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.编码
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//2.包含
request.getRequestDispatcher("index2.html").include(request, response);
request.getRequestDispatcher("index2.html").include(request, response);
request.getRequestDispatcher("index2.html").include(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3.测试结果
总结回顾
1.重定向需要从/项目名开始找文件位置
2.可以定时刷新
3.可以在一个servlet中有多个页面处理和显示