转发
@Controller
public class Hello7 {
@GetMapping("hello7")
public String say(String goods) {
return "hello7";
}
这个会跳转到WEB-INF/jsp/hello.jsp文件。
因为我在springmvc-servlet.xml文件中配置了视图解析器,在里面加了前缀和后缀。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
如果要传参数可以在里面加一个Model,Map,ModelMap对象。
@Controller
public class Hello7 {
@GetMapping("hello7")
public String say( Model model,String goods) {
model.addAttribute( "name","123");
return "hello7";
}
Model和ModelMap,Map走的是同一个类是BindingAwareModelMap。
还可以使用ModelAndView方法。
@Controller
public class Hello7 {
@GetMapping("hello7")
public ModelAndView say( Model model,String goods) {
ModelAndView mv = new ModelAndView("hello77");
String name="abc";
mv.addObject("name", name);
return mv;
}
这里是model和view的。会跳转到hello77,地址就在new的时候放的字符串。
2.使用forword关键字
@GetMapping("hello8")
public String say1(String goods) {
return "foeword:hello8";
}
这个会转发到hello8的映射地址,不会走视图解析器,所以不会加前缀和后缀。
@GetMapping("hello8")
public String say1(String goods) {
return "foeword:hello8.jsp";
}
同上,或跳转到根目录下的hello8.jsp
重定向
使用redirect关键字。
@GetMapping("hello8")
public String say2(String goods) {
return "redirect:hello8";
}
页面会跳转到映射地址hello8
@GetMapping("hello8")
public String say2(String goods) {
return "redirect:WEB-INF/jsp/hello8";
}
需注意这个地址是不能重定向过去的。因为WEB-INF不能直接访问只能通过转发访问。这样可以使一些文件更加的安全