一、重定向:
一个web资源(B)收到客户端(A)的请求后,B通知客户端去访问另外一个web资源(C)
二、重定向和转发的区别
相同点:页面都会进行跳转
不同点:
请求转发:url地址栏不会变 307
重定向:url会发生变化 302
三、小案例
index.jsp (登录)
<html>
<body>
<h2>Hello World!</h2>
<%--这里action提交路径需要获取到项目根路径--%>
<%--pageContext.request.contextPath 当前项目路径--%>
<form action="${pageContext.request.contextPath}/login" method="get">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="pwd"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
success.jsp (跳转页面)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>Hello!</h2>
</body>
</html>
RedirctServlet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*获取请求参数*/
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
System.out.println(username+" "+pwd);
/*resp.setHeader("Location","/re/seccess.jsp");
resp.setStatus(302);*/
resp.sendRedirect("/re/success.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
web.xml
<servlet>
<servlet-name>regirect</servlet-name>
<servlet-class>com.mily.servlet.RedirctServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>regirect</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
四、演示
- 登录
- 跳转
- 后台输出