session 和 cookie的工作流程:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MYQfjFDj-1631456742637)(/Users/cola/Downloads/无标题的笔记本 (1)]-15.jpg)
session的持久化?
- 将session存储到服务器数据库或者文件中的行为
上传文件
- 构造form表单 添加enctype=“multipart/form-data”
- 服务端创建Part对象对应一个上传文件
- Servlet加注解@MutipartConfig
- req.getPart("");
服务器数据库操作
- 和数据库进行连接
- 拼装SQL
- 执行SQL
- 如果是查找操作,就需要遍历结果集
- 释放资源
Thymeleaf模板渲染
- 先引入依赖Thymeleaf
- 实现一个模板文件
- 循环标签:th:each=“变量 :${服务器变量}”
- th:text="${变量名.字段名}"
- th:href="${ ’ ’ + }"
- 通过Thymeleaf在Java代码中(服务器端渲染模板)
- 使用Thymeleaf前要对它进行初始化
- 创建一个engine(引擎)对象:TemplateEngine engine = new TemplateEngine();
- 创建一个resolver(解析器)对象: ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(getServletContext()) ;
- 给resolver设置一些属性,找到html模板
- resolver.setCharactereEncoding(“utf-8”);
- resolver.setPrefix("/WEB-INF/template/ ");
- resolver.setSuffix(".html");
- 把resolver 和 engine关联起来:engine.setTemplateResolver(resolver);
- 将渲染过程放进init()方法中只加载一次,这时要将private TemplateEngine engine = null; 变成成员变量
- 构造页面
- WebContext webcontext = new WebContext(req,resp,getServletContext()); 将要替换的数据收集起来,统一传给模板引擎
- webcontext.setVariable(“html变量”,对应服务器端变量);
- 进行渲染:engine.process(“对应页面名称”, webcontext);
- 为了让每个功能都能用到模拟引擎,另外创建一个ThymeleafConfig 并加上@WebListener注解,让它实现ServletContextListener,然后实现其中的方法,我们只关注contextInitialized这个方法
- 将初始化的模板代码放入
- ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(sce.getServletContext()) ;
- 把初始化好的engine对象交给ServletContext来保管:SerlvetContext context = sce.getServletContext();设置context.setAttribute(“engine”,engine); 在需要调用的页面,TemplateEngine engine = (TemplateEngine)getContextServlet().getAttribute("engine ");