客户端跳转 VS 服务器端跳转
1,在 Servlet 中获取 session,application
2,客户端跳转 response.sendRedirect("目标地址");
3,服务器跳转:RequestDispatcher rd=request.getRequestDispatcher("目标地址"); rd.forward(request, response);
客户端跳转
客户端跳转request信息是带不到服务器端的,但session和application的信息可以带到。
Servlet类
public class RedirectServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("requestKey", "request值");
HttpSession session = request.getSession(); // 获取session
session.setAttribute("sessionKey", "session值");
ServletContext application = this.getServletContext(); // 获取application
application.setAttribute("applicationKey", "application值");
response.sendRedirect("target.jsp"); // 客户端跳转/重定向
}
}
web.xml
...
<servlet>
<servlet-name>redirectServlet</servlet-name>
<servlet-class>com.beeworkshop.web.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>redirectServlet</servlet-name>
<url-pattern>/redirect</url-pattern>
</servlet-mapping>
target.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<h1>目标地址</h1>
request值:<%=request.getAttribute("requestKey") %><br/>
session值:<%=session.getAttribute("sessionKey") %><br/>
application值:<%=application.getAttribute("applicationKey") %><br/>
</body>
</html>
结果
服务器端跳转
Servlet类
public class RedirectServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("requestKey", "request值");
HttpSession session = request.getSession(); // 获取session
session.setAttribute("sessionKey", "session值");
ServletContext application = this.getServletContext(); // 获取application
application.setAttribute("applicationKey", "application值");
RequestDispatcher rd = request.getRequestDispatcher("target.jsp");
rd.forward(request, response); // 服务器跳转/内部转发
}
}
其他不变,结果如下: