先写个工具类ViewBaseServlet
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.WebContext;
import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.WebApplicationTemplateResolver;
import org.thymeleaf.web.servlet.JakartaServletWebApplication;
import java.io.IOException;
public class ViewBaseServlet extends HttpServlet {
TemplateEngine templateEngine;
JakartaServletWebApplication jakartaServletWebApplication;
@Override
public void init() throws ServletException {
super.init();
WebApplicationTemplateResolver resolver=new WebApplicationTemplateResolver(JakartaServletWebApplication.buildApplication(getServletContext()));
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setCacheTTLMs(60000L);
resolver.setCacheable(true);
resolver.setCharacterEncoding("UTF-8");
templateEngine=new TemplateEngine();
templateEngine.setTemplateResolver(resolver);
}
public void processTemplate(String templateName, HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html;charset=UTF-8");
jakartaServletWebApplication = JakartaServletWebApplication.buildApplication(getServletContext());
WebContext ctx = new WebContext(jakartaServletWebApplication.buildExchange(req, resp), req.getLocale(), jakartaServletWebApplication.getAttributeMap());
templateEngine.process(templateName, ctx, resp.getWriter());
}
}
然后写一个servlet来作为调用这个工具类
@WebServlet(value = {"/reg"},loadOnStartup = 0)
public class RegisterServlet extends ViewBaseServlet {
UserService userService=new UserServiceImpl();//调用服务,无视掉
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
int uid=Integer.parseInt(req.getParameter("uid"));
String username=req.getParameter("username");
String pwd=req.getParameter("password");
int age=Integer.parseInt(req.getParameter("age"));
PrintWriter pw=resp.getWriter();
try {
userService.register(uid,username,pwd,age);//调用注册验证,无视
req.setAttribute("msg","注册成功");//提示信息
req.setAttribute("link","login.html");//跳转到登录界面
super.processTemplate("register.html",req,resp);//调用父方法,刷新页面
}catch (Exception e){
pw.println("注册失败");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
html代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>注册界面</title>
</head>
<body>
<form action="/demo1_war_exploded/reg" method="post">
uid:<input type="text" name="uid"/><br/>
账户:<input type="text" name="username"/><br/>
密码:<input type="password" name="password"/><br/>
年龄:<input type="text" name="age"/><br/>
<input type="submit" value="注册"/>
<p>
<a th:href="${link}" th:text="${msg}"></a>
</p>
</form>
</body>
</html>
注册成功结果