假设视图解析器为如下设置。
servlet-context.xml
<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/page/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
假设在登录页面,登录成功后,想跳转到home页面。
以下三种情况,controller分别返回 "home","redirect:home","forward:home"。
| 返回值 | 动作 | url |
|---|---|---|
| "home" | 视图解析器会自动添加前缀/page/,后缀/.jsp/。因此转发到/page/home.jsp | url不变,还是/login |
| "redirect:home" | 返回相应的url(/home)的请求。重定向到其他controller去处理 | url变为/home |
| "forward:home" | 返回相应的url(/home)的请求。转发到其他controller去处理 | url不变,还是 /login |
@Controller
public class TestLoginController {
@Autowired
TestLoginService service;
@RequestMapping("login")
public String login(Users user, HttpServletRequest request) {
boolean result = service.login(user);
if (result) {
request.getSession().setAttribute("user", user.getUserid());
}
// return "home"; 直接返回视图,也就是 /page/home.jsp。但url不变,还是 /login
// return "redirect:home"; 返回相应的url(/home)的请求。重定向到其他controller去处理。url变为/home
// return "forward:home"; 返回相应的url(/home)的请求。转发到其他controller去处理。但url不变,还是 /login
}
}