springmvc资源路径知识:
相对路径:
"/"代表Web站点的根目录
"./"代表当前目录
"../"代表上级目录
1、转发的方式
1)第一种
直接返回视图地址
@RequestMapping(path = "/v1/index1", method = RequestMethod.GET)
public String index() {
return "index";
}
2)通过forward转发
使用forward转发需要注意的是,无法使用http://的绝对路径,forward请求转发只需要请求一次服务器,可以提高访问速度,同时参数传递可以借助HttpServletRequest来处理,由于是处理同一个请求,所以request对象还是同一个,中文也不会出现乱码现象。
@RequestMapping(path = "/testForward1",method = RequestMethod.GET)
public String test(){
logger.info("通过跳转转发到success.jsp");
//forward:转发带/,则会变为//springmvc_demo01/WEB-INF/view/success.jsp
return "forward:/WEB-INF/view/success.jsp";
}
2、重定向
第一种,直接通过redirect重定向
@RequestMapping(path = {"/testRedirect1"}, method = RequestMethod.GET)
public String test1() {
this.logger.info("第一种通过重定向转发到fail.jsp");
return "redirect:fail1";
}
第二种,通过返回ModelAndView设置视图名返回
@RequestMapping(path = {"/testRedirect3"}, method = RequestMethod.GET)
public ModelAndView test3() {
ModelAndView modelAndView = new ModelAndView();
this.logger.info("重定向到fail.jsp");
//返回视图,进行重定向
modelAndView.setViewName("redirect:fail1");
return modelAndView;
}
总结:
1、重定向发起了2次请求,第一次给客户端返回302,让客户端再次根据返回Url进行请求,地址栏会变化;forward对客户端而言就是一次,对于服务端而言是两次,地址栏没有变化;
2、对于处于WEB-INF文件下的资源,forward可以继续访问,redirect无法访问;
3、 forward: 和 redirect: 当成指示符,其后的字符串作为 URL 来处理。即不和视图解析器一同工作。
spring web如何访问工程内页面
设置spring.resource.location=classpath:/