springmvc 转发与重定向的区别

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:/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值