servlet+thymeleaf

相關資料

thymeleaf.org

thymeleaf3.0

 

https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

 

易學教程

 

 

創建工程

 

工程結構

 

 

 

偵聽器(模板引擎模板解析器)

 

package  com.thymeleaf1.listener;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener()
public class ListenerTest implements ServletContextListener {

    private static final String TEMPLATE_ENGINE_INST = "com.test.thymeleaf.TemplateEngine";

    public static void storeTemplateEngine(ServletContext context, TemplateEngine engine) {
        context.setAttribute(TEMPLATE_ENGINE_INST, engine);
    }

    public static TemplateEngine getTemplateEngine(ServletContext context) {
        return (TemplateEngine) context.getAttribute(TEMPLATE_ENGINE_INST);
    }


    // Public constructor is required by servlet spec
    public ListenerTest() {
    }

    // -------------------------------------------------------
    // ServletContextListener implementation
    // -------------------------------------------------------
    public void contextInitialized(ServletContextEvent sce) {
      /* This method is called when the servlet context is
         initialized(when the Web application is deployed). 
         You can initialize servlet context related data here.
      */


        ServletContextTemplateResolver templateResolver =
                new ServletContextTemplateResolver(sce.getServletContext());
// HTML is the default mode, but we set it anyway for better understanding of code
        templateResolver.setTemplateMode(TemplateMode.HTML);
// This will convert "home" to "/WEB-INF/templates/home.html"
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
// Template cache TTL=1h. If not set, entries would be cached until expelled
        templateResolver.setCacheTTLMs(Long.valueOf(3600000L));
// Cache is set to true by default. Set to false if you want templates to
// be automatically updated when modified.
        templateResolver.setCacheable(false);

        TemplateEngine engine = new TemplateEngine();
        engine.setTemplateResolver(templateResolver);

        storeTemplateEngine(sce.getServletContext(), engine);
    }

    public void contextDestroyed(ServletContextEvent sce) {
      /* This method is invoked when the Servlet Context 
         (the Web application) is undeployed or 
         Application Server shuts down.
      */
    }


}

 

 創建servlet

package com.thymeleaf1.servlet;


import com.thymeleaf1.listener.ListenerTest;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.WebContext;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "ServletTest", urlPatterns = "/test")
public class ServletTest extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        TemplateEngine engine = ListenerTest.getTemplateEngine(request.getServletContext());
        WebContext context = new WebContext(request, response, request.getServletContext());
        response.setCharacterEncoding("utf-8");
        context.setVariable("thymeleaf", "first  thymeleaf page!!");
        engine.process("index", context, response.getWriter());
    }
}

在模板下創建消息文件

 

創建模板WEB-INF\templates


<html xmlns:th="http://www.thymeleaf.org">
  <head>
    <title>$Title$</title>

  </head>
  <body>
  [[#{i18n.welcome}]]   &nbsp;
  <zsz  th:text="#{i18n.welcome}">test</zsz> <hr>


   [[${thymeleaf}]] &nbsp;
  <input type="text" name="userName"   th:value="${thymeleaf}" />

  </body>
</html>

 運行效果

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章