• 二、thymeleaf与javaweb的集成


    此教程使用的Thymeleaf版本为 3.1.2.RELEASE,JDK最低要求为1.8

    2.1、下载

        下载地址:https://pan.baidu.com/s/1HJf2AnPu1nwaxmOxzxUDJA?pwd=au9c 

    2.2、导包

    1、解压以下压缩包,

    2、复制dist目录下的thymeleaf-3.1.2.RELEASE.jar到项目中的lib目录下

    3、复制lib目录下所有的jar文件到项目中的lib目录下

    2.3、配置thymeleaf

    1、创建包:在项目包下创建com.thymeleaf包,此包用于定义配置thymeleaf的类

    2、在包下创建ThymeleafConfig类,此类用于创建thymeleaf模板引擎,解析器

    1. import javax.servlet.ServletContext;
    2. import javax.servlet.annotation.WebListener;
    3. import org.thymeleaf.TemplateEngine;
    4. import org.thymeleaf.templatemode.TemplateMode;
    5. import org.thymeleaf.templateresolver.ITemplateResolver;
    6. import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
    7. /**
    8. * 定义thymeleaf模板类,在全局对象中注册thymeleaf模板引擎
    9. * @author 创蓝IT教育
    10. *
    11. */
    12. public class TemplateConfig {
    13. private static final String TEMPLATE_ENGINE_ATTR = "com.e-learn.thymeleaf3.TemplateEngineInstance";
    14. //全局注册thymeleaf模板引擎
    15. public static void storeTemplateEngine(ServletContext context) {
    16. TemplateEngine engine = templateEngine(context);
    17. context.setAttribute(TEMPLATE_ENGINE_ATTR, engine);
    18. }
    19. /**
    20. * 创建模板引擎
    21. */
    22. public static TemplateEngine getTemplateEngine(ServletContext context) {
    23. return (TemplateEngine) context.getAttribute(TEMPLATE_ENGINE_ATTR);
    24. }
    25. /**
    26. * 创建thymeleaf模板引擎
    27. * @param servletContext
    28. * @return
    29. */
    30. private static TemplateEngine templateEngine(ServletContext servletContext) {
    31. TemplateEngine engine = new TemplateEngine();
    32. engine.setTemplateResolver(templateResolver(servletContext));
    33. return engine;
    34. }
    35. /**
    36. * 创建thymeleaf解析对象
    37. * @param servletContext
    38. * @return
    39. */
    40. private static ITemplateResolver templateResolver(ServletContext servletContext) {
    41. //设置解析参数,常用参数有:模板页面路径前缀,路径的后缀,解析编码,模板文件类型
    42. ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(servletContext);
    43. resolver.setPrefix("/WEB-INF/");//模板页面路径前缀
    44. resolver.setSuffix(".html"); //模板页面路径后缀
    45. resolver.setCharacterEncoding("UTF-8"); //解析的编码
    46. resolver.setTemplateMode(TemplateMode.HTML); //模板文件的类型
    47. return resolver;
    48. }
    49. }

    3、在项目包下创建listener包,在其中创建全局监听器AppLinstener,实现ServletContextListener,在contextInitialized方法中调用TemplateConfig的templateEngine方法注册thymeleaf模板引擎

    1. import javax.servlet.ServletContextEvent;
    2. import javax.servlet.ServletContextListener;
    3. import javax.servlet.annotation.WebListener;
    4. import com.thymeleaf.demo.utitl.TemplateConfig;
    5. @WebListener
    6. public class AppListener implements ServletContextListener {
    7. @Override
    8. public void contextInitialized(ServletContextEvent sce) {
    9. TemplateConfig.storeTemplateEngine(sce.getServletContext());
    10. }
    11. }

    2.4,使用模板

    1、在WEB-INF下创建index.html页面,在body中添加以下内容

    <a th:href="@{'/aa.jsp'}">链接</a>

    2、在项目包下创建servlet包,在包中创建TestServlet类,设置访问路径为"/test"

    3、在TestServlet类的doPost方法中使用引擎渲染页面

    1. import java.io.IOException;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.annotation.WebServlet;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import org.thymeleaf.TemplateEngine;
    8. import org.thymeleaf.context.WebContext;
    9. import com.thymeleaf.demo.utitl.TemplateConfig;
    10. @WebServlet("/test")
    11. public class TestServlet extends HttpServlet {
    12. private static final long serialVersionUID = 1L;
    13. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    14. //获取模板引擎
    15. TemplateEngine engine = TemplateConfig.getTemplateEngine(getServletContext());
    16. //当前请求环境
    17. WebContext context = new WebContext(request, response, getServletContext());
    18. response.setCharacterEncoding("utf-8");
    19. //使用模板渲染页面并输出到浏览器
    20. engine.process("index", context, response.getWriter());
    21. }
    22. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    23. // TODO Auto-generated method stub
    24. doGet(request, response);
    25. }
    26. }

    2.5、测试

    1、启动服务

    2、在浏览器中输入test访问路径,运行效果如下

     文章来源于哔站《二、thymeleaf与javaweb的集成

    更多学习视频和专栏文章请到哔站个人空间: 布道师学院的个人空间-布道师学院个人主页-哔哩哔哩视频

    更多资源和项目下载请到:”开源吧(找实战项目和毕设项目的好网站)“ ​ :开源吧

     

  • 相关阅读:
    R语言:岭回归分析选择变量
    MyCat分片水平拆分
    java源码系列:HashMap底层存储原理详解——5、技术本质-原理过程-算法-取模会带来一个什么问题?什么是哈希冲突?为什么要用链表?
    Uniform Asymptotics by Alexei
    SpringCloud: feign配置超时时间
    Linux部署项目
    CSS3 简介
    Apache Kyuubi & Celeborn,助力 Spark 拥抱云原生
    “蔚来杯“2022牛客暑期多校训练营4 N.Particle Arts 规律 方差
    力扣刷题记录(Java)(一)
  • 原文地址:https://blog.csdn.net/ouyangqing/article/details/133574967