thymeleaf

1.介绍

既能够正常显示页面,又能在页面中包含动态数据部分。

此时我们需要引入服务器端动态视图模板技术。

MVC架构

MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范,是将业务逻辑、数据、显示分离的方法来组织代码

MVC主要作用是降低了视图与业务逻辑间的双向偶合。

MVC不是一种设计模式,MVC是一种架构模式。

M o d e l ModelModel(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是该模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
V i e w ViewView(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
 C o n t r o l l e r ControllerController(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。

视图

hymeleaf会将这个 逻辑视图 对应到 物理视图 上去

物理视图

初步理解为:那个需要包含动态数据的静态网页

名称作用注意
视图前缀路径开头的部分一般是路径
试图后缀路径结尾的部分一般是后缀名

逻辑视图 

初步理解为:那个静态网页的文件名(不加后缀)

例子

视图例子
视图名称index
物理视图名称index
逻辑视图名称 view-prefix + 逻辑视图名称 + view-suffix 

视图前缀逻辑视图视图后缀物理视图
 /pages/user/login    .html/pages/user/login.html 
 /pages/user/login_success  .html/pages/user/login_success.htm

<!-- 在上下文参数中配置视图前缀和视图后缀 -->

<context-param

> <param-name>view-prefix</param-name>

<param-value>/WEB-INF/view/</param-value>

</context-param>

<context-param>

<param-name>view-suffix</param-name>

<param-value>.html</param-value>

</context-param>

HelloWorld

1.创建index.html 2.在index.html编写超链接

<a href="/view/TestThymeleafServlet">初步测试Thymeleaf</a>

3.创建Servlet

<servlet>

<servlet-name>TestThymeleafServlet</servlet-name>

<servlet-class>com.atguigu.thymeleaf.servlet.TestThymeleafServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>TestThymeleafServlet</servlet-name>

<url-pattern>/TestThymeleafServlet</url-pattern>

</servlet-mapping>

4.修改Servlet继承的父类

5.在doGet()方法中跳转到Thymeleaf页面

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.声明当前请求要前往的视图名称 String viewName = "target";

// 2.调用ViewBaseServlet父类中的解析视图模板的方法

super.processTemplate(viewName, request, response);

}

Thymeleaf


什么是Thymeleaf


Thymeleaf 是一个适用于 Web 和独立环境的现代服务器端 Java 模板引擎,能够处理 HTML、XML、JavaScript、CSS 甚至纯文本。 Thymeleaf 的主要目标是提供一种优雅且高度可维护的模板创建方式。 为了实现这一目标,它建立在自然模板的概念之上,以不影响模板用作设计原型的方式将其逻辑注入模板文件中。 这改善了设计沟通并弥合了设计和开发团队之间的差距。 Thymeleaf 从一开始就考虑到了 Web 标准(尤其是 HTML5),允许您根据需要创建完全验证的模板

优势


SpringBoot官方推荐使用的视图模板技术,和SpringBoot完美整合。

不经过服务器运算仍然可以直接查看原始值,对前端工程师更友好。

 标准表达式语法

变量表达式: ${ ... }

选择变量表达式: * { ... }

消息表达式: # { ... }

链接 URL 表达式:@{ ... }

片段表达式: ~ { ... }

表达式基本对象

在计算上下文变量上的 OGNL 表达式时,一些对象可用于表达式以获得更高的灵活性。这些对象将被引用(按照 OGNL 标准) ,从 # 符号开始:

 ctx: 上下文对象。

 vars: 上下文变量。

 locale: 上下文 locale。

 Request: (仅在 Web 上下文中) HttpServletRequest 对象。

 Response: (仅在 Web 上下文中) HttpServletResponse 对象。

 Session: (仅在 Web 上下文中) HttpSession 对象。

 servletContext: (仅在 Web 上下文中) ServletContext 对象。

表达式实用对象

除了这些基本对象之外,Thymeleaf 还将为我们提供一组实用对象,帮助我们在表达式中执行常见任务。

execInfo:有关正在处理的模板的信息。
#messages:用于获取变量表达式内的外部化消息的方法,其方式与使用 #{…} 语法获取消息的方式相同。
uris:转义部分 URL/URI 的方法
conversions:用于执行配置的转换服务(如果有)的方法。
dates:java.util.Date 对象的方法:格式化、组件提取等。
calendars:类似于#dates,但用于 java.util.Calendar 对象。
numbers:格式化数字对象的方法。
strings:String 对象的方法:包含、startsWith、前置/附加等。
objects:一般对象的方法。
bools:布尔求值方法。
arrays:数组的方法。
lists:列表方法。
sets:集合方法。
maps:地图方法。
aggregates:在数组或集合上创建聚合的方法。
ids:处理可能重复的 id 属性的方法(例如,作为迭代的结果)。

变量表达式不仅可以写成 ${ ... } ,还可以写成 * { ... }。

但是有一个重要的区别: 星号语法计算选定对象上的表达式,而不是整个上下文上的表达式。也就是说,只要没有选定的对象,美元和星号语法就完全相同。

什么是被选择的对象?使用 th: object 属性的表达式的结果。让我们在我们的用户配置文件(userprofile.html)页面中使用一个

基本语法:th名称空间

th:text作用

不经过服务器解析,直接用浏览器打开HTML文件,看到的是『标签体原始值』

经过服务器解析,Thymeleaf引擎根据th:text属性指定的『标签体新值』去替换

执行表达式
Servlet代码:

request.setAttribute("reqAttrName", "<span>hello-value</span>");

页面代码:

<p>有转义效果:[[${reqAttrName}]]</p>

<p>无转义效果:[(${reqAttrName})]</p>

执行效果:

<p>有转义效果:<span>hello-value</span></p>

<p>无转义效果:<span>hello-value</span></p>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值