thymeleaf可以让html页面显示从数据库查询出来的数据
一. 添加thymeleaf相关的jar包 二. 创建ViewbaseServlet类package ServletStudy;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.WebContext;
import org.thymeleaf.templatemode.TemplateMode;
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 {
// 1.获取ServletContext对象
ServletContext servletContext = this.getServletContext();
// 2.创建Thymeleaf解析器对象
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);
// 3.给解析器对象设置参数
// ①HTML是默认模式,明确设置是为了代码更容易理解
templateResolver.setTemplateMode(TemplateMode.HTML);
// ②设置前缀
String viewPrefix = servletContext.getInitParameter("view-prefix");
templateResolver.setPrefix(viewPrefix);
// ③设置后缀
String viewSuffix = servletContext.getInitParameter("view-suffix");
templateResolver.setSuffix(viewSuffix);
// ④设置缓存过期时间(毫秒)
templateResolver.setCacheTTLMs(60000L);
// ⑤设置是否缓存
templateResolver.setCacheable(true);
// ⑥设置服务器端编码方式
templateResolver.setCharacterEncoding("utf-8");
// 4.创建模板引擎对象
templateEngine = new TemplateEngine();
// 5.给模板引擎对象设置模板解析器
templateEngine.setTemplateResolver(templateResolver);
}
//之后所需要用的方法
protected void processTemplate(String templateName, HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 1.设置响应体内容类型和字符集
resp.setContentType("text/html;charset=UTF-8");
// 2.创建WebContext对象
WebContext webContext = new WebContext(req, resp, getServletContext());
// 3.处理模板数据
templateEngine.process(templateName, webContext, resp.getWriter());
}
}
三. 在web.xml中配置
四. 创建一个类来继承ViewbaseServlet类view-prefix / view-suffix .html
package ServletStudy;
import dao.UserDao;
import dao.impl.UserDaoImpl;
import pojo.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
@WebServlet("/index.html")
public class IndexServlet extends ViewbaseServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
UserDao userDao = new UserDaoImpl();
List userList = userDao.queryUserList(); //获取数据库中所有用户信息
//保存到session作用域
HttpSession session = req.getSession();
session.setAttribute("userList",userList);
//此处的视图名称是index
//thymeleaf会将这个逻辑视图名称对应到物理视图名称上
//逻辑视图名称:index
//物理视图名称:view-prefix + 逻辑视图名称 + view-suffix
//则真实的视图名称是: / index .html (在web.xml里配置的)
super.processTemplate("index",req,resp); //将thymeleaf渲染到/index.html
}
}
五. 在index.html内添加thymeleaf语句
Title
| 姓名 | 密码 | 性别 | 国家 |
|---|---|---|---|
| 数据库为空 | |||
在html里使用thymeleaf语句出现报错红线问题: https://blog.csdn.net/H_233/article/details/88081353
最终可以将数据库中每个user的内容渲染到html页面对应位置。



