1、forward转发
在方法返回结果加上forward
前缀,转发再转发则方法返回结果加上forward:/forward
@Controller
public class ForWardController {
@RequestMapping("/forward")
public String forward1(){
System.out.println("forword1");
return "forward:/hello.jsp";
}
@RequestMapping("/forward2")
public String forward2(){
System.out.println("forward2");
return "forward:/forward";
}
转发的特点:
(1)地址栏请求不会发生变化,还是显示第一次的请求地址,如再上面代码forward2()
中,转发后再次转发,地址栏显示的地址仍是.../forward2
(2)请求的次数,有且仅有一次
(3)请求域中的数据不会丢失,及存在request、session等中的数据不会丢失。
(4)更目录:localhost:8080/项目地址/项目的访问地址
2、redirect重定向
应用与转发是一样的,在方法的返回结果中添加redirect:/返回地址
,也可在重定向后再次重定向,方法返回结果加上redirect:/redirect
@Controller
public class Redirect {
@RequestMapping("/redirect1")
public String redirectTest1(){
System.out.println("redirect1");
return "redirect:/index.jsp";
}
@RequestMapping("/redirect2")
public String redirectTest2(){
System.out.println("redirect2");
return "redirect:/redirect";
}
}
redirect特点:
(1)地址栏的地址发生变化,显示最新发送请求的地址
(2)请求次数两次
(3)请求域中的数据会丢失,因为是不同的请求
(4)根目录:localhost:8080/不包含项目名称
3、访问静态资源
在访问静态资源的时候,如jsp文件访问项目中的图片,是访问不到的,因为DispacherServlet中没有对应静态资源的处理逻辑,而全部请求都是交给DipatcherServlet来处理,所以这里需要添加默认,也就是servlet原本默认的处理方式,添加以后动态请求仍是无法访问,
需要另外一个标签配合使用
<mvc:default-servlet-handler></mvc:default-servlet-handler>
<mvc:annotation-driven></mvc:annotation-driven>