别再写jsp了,Thymeleaf它不香吗?

在学 Thymeleaf 之前我们先看一下使用 jsp 开发遇到的主要问题:

jsp 的痛点

1.页面包含大量 java 代码,代码太混乱

2.jsp 技术已经是很多年前的老技术了,现在的主流框架都不推荐使用,基本被淘汰了。

模板引擎技术

虽然 jsp 基本被淘汰了,但是它的技术替代品如雨后春笋,层不出穷。

模板引擎技术就是其中的代表。

我们都知道传统的页⾯开发通常采⽤ HTML+ JS 技术,⽽现在⼤部分⽹站都采⽤标签化 + 模块化的设计。

模板引擎技术就是根据这种⽅式,使⽤户界⾯与业务数据分离⽽产⽣的。

它可以⽣成特定格式的⽂档,⽤于⽹站的模板引擎就会⽣成⼀个标准的 HTML ⽂档在原有的 HTML 页⾯中来填充数据,最终达到渲染页⾯的⽬的。

模板引擎技术说白了就是把数据和页⾯整合在⼀起的技术。

Thymeleaf 简介

Thymeleaf 是一种可以替代 jsp 的模板引擎技术。它有如下优点:

1.与 SpringBoot 完美整合:SpringBoot 提供了 Thymeleaf 的默认配置,我们可以像以前操作 jsp 一样来操作 Thymeleaf。

2.开箱即用:支持 JSTL 格式语法。

3.多方言支持:Thymeleaf 提供 spring 标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速地实现表单绑定、国际化等功能。

这里我们创建 springboot 项目。

1.引入依赖

2.Thymeleaf 配置

application.yml

在 springboot 的配置文件中,我们配置了 thymeleaf 的默认前缀和后缀。

还配置了静态资源的访问路径。

3.html 文件引入 Thymeleaf 的命名空间

html 文件必须引入 thymeleaf 的命名空间才能使用相关语法。

1.th:text

作用:如果变量有值,则替换标签里面的默认值,否则展示标签的默认值。

例如:

测试:

2.th:href

作用:用来指向文件的 url。

例如:

3.th:action

作用:用来配置 form 表单的请求路径

例如:

4.th:if

作用:条件判断,如果判断为真就显示数据或者执行相关操作。

例如:

5.th:src

作用:用来指向文件的 url。

例如:

6.th:onclick

作用:绑定事件。

例如:

场景:用户登录成功之后,展示用户信息和用户列表。

controller

login.html

index.html

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,,咱们下期见。

收藏 等于白嫖,点赞才是真情。

原文作者:知否技术原文链接:https://juejin.cn/post/7098488222312824868

Jsp相关技术常见面试题

此部分包括: JSP, EL, JSTL, My Tag, I18N, FileUpDown

1.jsp有哪些内置对象?作用分别是什么?

答:JSP共有以下9个内置的对象:

request: 用户端请求,此请求会包含来自GET/POST请求的参数

response: 网页传回用户端的回应

pageContext: 网页的属性是在这里管理

session: 与请求有关的会话期

application: 与当前应用对应的ServletContext对象, 应用中只有一个

out: 用来传送回应的输出 {}<%=%>

config: 与jsp配置对象的对象, 一般无用

page: jsp对应的Servlet对象

exception: 针对错误网页,未捕捉的异常对象

2. jsp有哪些动作?作用分别是什么?

答:JSP共有以下6种基本动作

jsp:include:在页面被请求的时候引入一个文件。

jsp:forward:把请求转到一个新的页面。

jsp:useBean:寻找或者实例化一个JavaBean。

jsp:setProperty:设置JavaBean的属性。

jsp:getProperty:输出某个JavaBean的属性。

jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

3. JSP的常用指令

答:主要有下面3种指令

  1. page指令: 指定页面的的一些属性, 常用属性:

contentType=”text/html; charset=utf-8″ //向浏览器端输出数据的编码

pageEncoding=”utf-8″ //jsp文件被编译成java文件时所用的编码

session=”true” //是否自动创建session

  1. include指令: 包含别一个jsp页面
  2. taglib指令: 引入一个标签库

4. JSP中动态INCLUDE与静态INCLUDE的区别?

答:

  1. 动态包含: 用<jsp:include>, 包含的动作是在jsp对应的Serlet处理请求时去执行的,每次请求都会执行.
  2. 静态包含: 用include指令, 包含的动作是在jsp被编译成java文件时执行的, 只有第一次请求时执行.

5. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

答:

JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。

Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。

6. EL的功能, 为什么要用EL?

  1. 从四个域对象中取出属性数据显示
  2. 取出请求参数数据显示

在页面中用jsp脚本和jsp表达式来获取数据显示比较麻烦

  1. 需要条件判断
  2. 可能需要强转

7. JSTL的功能, 为什么要用JSTL?

JSTL全名为JavaServer Pages Standard Tag Library, 主要用于基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等

在jsp页面做条件判断或循环操作并输出时, 比较费力

8. 为什么要用自定义标签?, MyTag如何实现?

  1. 不想在Jsp中编写java代码
  2. JSTL标签库不能满足实际项目的需求

1.编写标签处理器类(SimpleTagSupport的实现类)

    • 重写doTag()

2.编写标签库文件(WEB-INF/xxx.tld)

    • 整个文件的定义: <short-name> <uri>
    • 标签的定义: <tag>

3.在jsp页面使用标签:

    • 导入标签库(xxx.tld/)
    • 使用标签

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。