下面是一个示例的 ViewBaseServlet 类,其中在 init() 方法中创建了 Thymeleaf 模板引擎,并在 processTemplate() 方法中处理模板数据:

import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.WebContext;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;

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

public class ViewBaseServlet extends HttpServlet {
    private TemplateEngine templateEngine;

    @Override
    public void init() throws ServletException {
        ServletContext servletContext = getServletContext();
        ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setCharacterEncoding("UTF-8");

        templateEngine = new TemplateEngine();
        templateEngine.setTemplateResolver(templateResolver);
    }

    protected void processTemplate(HttpServletRequest request, HttpServletResponse response, String templateName)
        throws ServletException, IOException {
        WebContext webContext = new WebContext(request, response, getServletContext(), request.getLocale());
        templateEngine.process(templateName, webContext, response.getWriter());
    }
}

在这个示例中,我们创建了一个名为 ViewBaseServlet 的基础 Servlet 类,它将实现模板引擎的创建和模板数据的处理。在 init() 方法中,我们创建了一个 ServletContextTemplateResolver 对象,设置了模板文件的位置和后缀,并指定了字符编码。然后,我们创建一个 TemplateEngine 对象,并设置模板解析器。

在 processTemplate() 方法中,我们首先创建了一个 WebContext 对象,用于传递请求、响应和 ServletContext 等信息给模板引擎。然后,我们使用 templateEngine.process() 方法来处理模板数据,将模板名称和 WebContext 作为参数传递给模板引擎,同时将渲染后的结果通过 response.getWriter() 写入响应。

在具体的 Servlet 类中,你可以继承 ViewBaseServlet,并在 doGet() 或 doPost() 方法中调用 processTemplate() 方法来处理模板数据。例如:

public class ProductServlet extends ViewBaseServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 处理业务逻辑...

        // 渲染商品列表模板
        processTemplate(request, response, "product-list");
    }

    // 其他方法...
}

在上述示例中,我们在 ProductServlet 中的 doGet() 方法中处理了一些业务逻辑,然后通过调用 processTemplate() 方法来渲染名为 'product-list' 的模板。

请注意,模板文件(例如 'product-list.html')应该位于 WEB-INF/templates/ 目录下,这是由 ViewBaseServlet 中的 ServletContextTemplateResolver 设置的前缀和后缀决定的。你可以根据实际情况进行调整。另外,确保 Thymeleaf 的依赖已经正确添加到项目的依赖中。

Java Servlet 模板引擎集成:使用 Thymeleaf 创建 ViewBaseServlet

原文地址: https://www.cveoy.top/t/topic/jqL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录