别再写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种指令
- page指令: 指定页面的的一些属性, 常用属性:
contentType=”text/html; charset=utf-8″ //向浏览器端输出数据的编码
pageEncoding=”utf-8″ //jsp文件被编译成java文件时所用的编码
session=”true” //是否自动创建session
- include指令: 包含别一个jsp页面
- taglib指令: 引入一个标签库
4. JSP中动态INCLUDE与静态INCLUDE的区别?
答:
- 动态包含: 用<jsp:include>, 包含的动作是在jsp对应的Serlet处理请求时去执行的,每次请求都会执行.
- 静态包含: 用include指令, 包含的动作是在jsp被编译成java文件时执行的, 只有第一次请求时执行.
5. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
答:
JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。
Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。
6. EL的功能, 为什么要用EL?
- 从四个域对象中取出属性数据显示
- 取出请求参数数据显示
在页面中用jsp脚本和jsp表达式来获取数据显示比较麻烦
- 需要条件判断
- 可能需要强转
7. JSTL的功能, 为什么要用JSTL?
JSTL全名为JavaServer Pages Standard Tag Library, 主要用于基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等
在jsp页面做条件判断或循环操作并输出时, 比较费力
8. 为什么要用自定义标签?, MyTag如何实现?
- 不想在Jsp中编写java代码
- JSTL标签库不能满足实际项目的需求
1.编写标签处理器类(SimpleTagSupport的实现类)
- 重写doTag()
2.编写标签库文件(WEB-INF/xxx.tld)
- 整个文件的定义: <short-name> <uri>
- 标签的定义: <tag>
3.在jsp页面使用标签:
- 导入标签库(xxx.tld/)
- 使用标签
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。