ModelAndView绑定数据模型配合Thymeleaf渲染数据用法学习

分开介绍,大致说一下ModelAndView
ModelAndView是Spring MVC里面重要的组成部分。分为两部分Model和View,Model是后端的返回值,View指的视图。先回忆一下当用户向服务器发送请求时,Spring MVC处理请求的过程
1. DispatcherServlet捕获前端请求;
2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler是配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回
3. 由HandleMapping定位到具体的(Handler)controller,controller将处理用户请求。
4.一旦controller处理完用户请求,则返回ModelAndView对象给DispatcherSevlet前端控制
4. 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet 。
5. ViewResolver 结合Model和View,来渲染视图
6. 将渲染结果返回给客户端。

回忆完mvc的过程,应该大致可以明白ModelAndView负责哪一部分了,简单来说就是负责绑定模型数据转发到相应页面

ModelAndView共有三个作用

其一:ModelAndView 实现后台与前端页面数据交互;

其二:可以用于重定向与转发到指定页面,

其三:可以保存数据继而渲染到页面

接下来就用一段代码看一下ModelAndView的几个常用的用法。

@RequestMapping(value="/games",method =RequestMethod.GET )
   //返回类型设为ModelAndView,这里是无参构造举例说明。
    public ModelAndView GamesPage(){
        ModelAndView modelAndView = new ModelAndView();//实例化一个View的ModelAndView对象
        modelAndView.setViewName("games");//转发到games.html
        modelAndView.addObject("games",gamesMapper.getAllGames());//封装数据,用于前端页面渲染,这里我返回的是一个List。当然Map,Set等数据结构也是可以的。
        return modelAndView;//返回ModelAndView对象
    }

说完ModelAndView,我们再看一下thymeleaf,这个东西是完全可以代替JSP的。thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面, 还有就是thymeleaf可以很好的和spring集成。因为Spring boot中配置JSP相当麻烦,并且也没有很好的契合,对于习惯JSP的大佬们来说十分头疼,不过Springboot支持thymeleaf模板引擎,这个习惯了也是相当好用的。
那配置这个模板引擎呢,之前在博客中详细说过了配置依赖,就不再赘述,直接上H5页面。
首先是引用命名空间

在html中引入此命名空间,可避免编辑器出现html验证爆红看着不舒服,虽然加不加命名空间对Thymeleaf的功能没有任何影响。
接下来看一下常用标签
最常用输出标签是
th:text 用来将内容输出到所在标签的body中
代码举例


  • 意思是li的内容是game.id这个数据,用${}来选择
    另外还可以选择变量输出

    Today is: 25 September 2018

     25 September 2018
    

    这里的${today} 用来引用 today 变量,第二个是输出不同的日期模式

    其次还有输出URL,输出布尔表达式

     Games List--输出URL
    

    --输出布尔表达式
    其他语法自行百度
    这里再说两个,一个是循环,一个是分支

    结合上面ModelAndView的代码段来看 ,games是我的list数据集合,game相当于是我的一个引用,可以用这种方式遍历输出。

    接下来说分支结构
    先说明一下th:if和th:unless
    只有在th:if中条件成立时才显示:
    th:unless于th:if恰好相反,只有表达式中的条件不成立,才会显示其内容。
    第二个是判断用户类型,不同类型不一样的显示

     view
     view
    
    

    User is an administrator

    User is a manager

    User is some other thing

    --默认的 case 相当于default

    后期还会学习其他的数据模型绑定的方法,再分享大家学习经验,谢谢阅览。

    你可能感兴趣的:(初学经验,Spring,MVC)