一 请求转发
controller 方法在提供了 String 类型的返回值之后,默认就是请求转发。我们也可以写成【forward:路径】的形式。
1. index3.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<a href="user/forward">测试请求转发</a>
</body>
</html>
2. UserController
package cn.itcast.controller;
import cn.itcast.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/forward")
public String testForward(){
System.out.println("testForward执行了");
//forward可写可不写
return "forward:/WEB-INF/pages/success.jsp";
}
}
3. success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>执行成功...</h3>
</body>
</html>
二 重定向
要记住重定向和请求转发的区别:
请求转发是一次请求,地址栏不会发生变化。
重定向是两次请求,就是告诉浏览器它需要访问的地址,所以重定向时不能直接访问/WEB-INF下的资源。
1. index3.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--<a href="user/forward">测试请求转发</a>--%>
<a href="user/redirect">测试重定向</a>
</body>
</html>
2. UserController
package cn.itcast.controller;
import cn.itcast.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/redirect")
public String testRedirect(){
System.out.println("testRedirect执行了");
return "redirect:/hello.jsp";
}
}
3. hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>hello呀....</h3>
</body>
</html>
结果: