【你不知道的那些事】SpringMVC之请求转发与重定向以及视图与数据的返回

【你不知道的那些事】SpringMVC之请求转发与重定向以及视图与数据的返回

正文:

什么是请求转发和重定向呢?

请求转发(forward):是一种服务器端的行为,当客户端请求发送到服务器后,服务器进行转发,此时会将请求对象进行保存,地址栏中的 URL 不会改变,得到响应后,服务器端再将响应发送给客户端,这个过程中只有一个请求发出

重定向(redirect):是一种客户端的行为,重定向之后地址栏上的地址栏中的URL会发生变化,变化成第二次请求的地址,这个过程中向服务器端发送了两次请求

SpringMVC怎么进行请求转发和重定向呢?

返回值是String类型:
  1. forward请求转发:

    //请求路径
    @RequestMapping(value = "testforward")
    public String testForward() {
    
        // 业务代码
        System.out.println("testForward被执行了");
    
        // 请求转发到/WEB-INF/pages/目录下的forward.jsp页面
        return "forward:/WEB-INF/pages/forward.jsp";
    }
    

2.redirect重定向:

//请求路径
@RequestMapping(value = "testredirect")
public String testRedirect() {

    // 业务代码
    System.out.println("testRedirect被执行了");

    // 请求转发到/webapp/目录下的redirect.jsp页面
    return "redirect:/redirect.jsp";
}

注意:这两种方式的放回值都是String类型。在重定向中,重定向的页面不能放置在WEB-INF目录下,否则会访问不到。

3.返回视图:

//请求路径
@RequestMapping(value = "view")
public String testView() {

    // 业务代码
    System.out.println("testView被执行了");

    // 根据视图解析器,将视图解析到/WEB-INF/page/view.jsp
    return "view";
}

这个在我的上个博客中有详细的说明,感兴趣的小伙伴可以看看:传送门

返回值是ModelAndView:

ModelAndView 是 SpringMVC 为我们提供的一个对象,该对象可以用作控制器方法的返回值,也可以用来调整具体的JSP视图 。

ModelAndView里给我们提供了两个常用的方法:

setViewName(@Nullable String viewName)
addObject(String attributeName, @Nullable Object attributeValue)

setViewName(“视图名称”),这个用法类似于上面放回String类型的第三点返回视图,只要在括号内部写视图对应的名称,会结果视图解析器,解析到对应的页面。

addObject(“key”, “value”),这个方法可以让我们添加模型到该对象,我们在页面上可以用EL表达式对它进行获取。用法类似于request.setAttribute();

//请求路径
@RequestMapping(value = "view")
public ModelAndView testModelAndView() {
    // 初始化视图对象
    ModelAndView mv = new ModelAndView();

    // 添加模型
    mv.addObject("name", "zhangsan");
    
    // 添加视图
    mv.setViewName("viewpage");

    // 返回视图对象
    return mv;
}

数据使用EL表达式获取

${name}

返回值是void:

1、请求转发:

//请求路径
@RequestMapping(value = "void")
public void testVoid(HttpServletRequest request, HttpServletResponse response){
    // 业务代码
    System.out.println("testVoid被执行了");

    // 请求转发
    request.getRequestDispatcher("/WEB-INF/pages/forward.jsp").forward(request, response);
}

2、重定向:

//请求路径
@RequestMapping(value = "void")
public void testVoid(HttpServletRequest request, HttpServletResponse response){
    // 业务代码
    System.out.println("testVoid被执行了");

    // 重定向
    response.sendRedirect(request.getContextPath()+ "/redirect.jsp");
}
总结:

在SpringMVC中给我们提供了ModelAndView对象,使我们对数据操作变得简单。

还是那句话:Spring真香!

点关注,不迷路

如果你觉得好看,对你有帮助,请给博zhu点点大拇指。你的支持是对我最大的肯定,也是我不懈努力的动力。

感觉我还有什么地方写的不足,需要修改的地方,请在评论区留言。关注,即可提高学习效率,让我们一起努力!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值