oss-todomvc-thymeleaf

简介

todomvc官方并未提供基于java后端模板的实现。本项目使用thymeleaf模板技术实现与todomvc官网功能相同的产品,用于演示模板技术与OSS框架的集成。

设计思路

用户登录 && 身份认证

应用类型需要设置为"TEMPLATE"。本项目引入了lib-security依赖,该库实现了如下功能:

  • 用户登录成功之后,自动跳转到开发者设定的handler页面
  • 用户退出,自动跳转到登陆页面
  • 对于身份认证错误,跳转到 /error 页面,并在错误页面显示定制的错误信息。

前后分离的方式,页面登录、登录的跳转操作需要由前端开发人员来完成。
而使用模板技术的方案,页面跳转由后端开发人员在配置文件中指定,由lib-security库完成跳转操作。

错误处理

  • 使用纯模板技术之后,除非页面失去响应,否则不会出现5xx的返回值。
  • 用户请求数据错误或者服务端错误,跳转到 /error 页面,并在错误页面显示定制的错误信息。

使用模板技术与前后分离的对比

使用模板技术的缺点

  • 使用模板技术,js往往只用于简单的表单校验以及处理控件的事件绑定,丧失了ajax(fetch or others)的表达能力。

    • 一般通过form表单提交、<a href="xxx"> 标签,通过POST/GET方法向后端发起请求。参数只能通过formData、url params进行传递。
    • 无法自定义header,身份认证只能通过携带cookie。
    • 不适用用户交互复杂的项目。
  • 使用模板技术,后端逻辑与页面渲染逻辑耦合在一起。

    • 比如用户登录之后页面跳转、数据CRUD之后的页面更新等操作,都需要由后端来定义,关注点未分离。

      这种情况下的Controller才是真正的Controller......

  • 用户交互低效。

    • 与用户的交互被割裂到页面跳转里。
    • 部分数据更新的情况下,在页面渲染的时候,仍然需要把所有的数据传递到页面。
    • 页面刷新操作是同步的。如果获取不到数据,页面刷不出来。

results matching ""

    No results matching ""