javaweb-thymeleaf,加载jar包---视图基础
1.加载完thymeleaf的jar包
将thymeleaf的jar包复制到项目下lib文件夹中
右击lib文件夹,点击Add as librarb...
打开Project Structure,找到Modules,点击加号,点击Library,找到lib,完成添加
2.创建ViewBaseServlet类,并把以下代码放入类中
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());
}
}
3.在web.xml文件中添加配置
<!-- 配置前缀 view-prefix 配置后缀 view-suffix 前后缀可以随意改变-->
<!-- 物理视图=配置前缀+逻辑视图+配置后缀 -->
<context-param>
<param-name>view-prefix</param-name>
<param-value>/</param-value>
</context-param>
<context-param>
<param-name>view-suffix</param-name>
<param-value>.html</param-value>
</context-param>
4.创建html页面
在html中的thymeleaf语法:
th:if="" //if语句
th:unless="" //else语句
th:ecah="" //for语句
th:text="" //文本语句
<tr th:if="${#lists.isEmpty(session.fruitList)}">
<td colspan="4">对不起,库存为空!!</td>
</tr>
<!-- if是判断是否为条件真 unless是判断是否为条件假 each是叠代,从session.list中依次取出一个对象赋给fruit -->
<tr th:unless="${#lists.isEmpty(session.fruitList)}" th:each="fruit : ${session.fruitList}">
<td th:text="${fruit.fname}"></td>
</tr>
5.创建一个servlet类并继承ViewBaseServlet类
在processTemplate方法会执行:物理视图=配置前缀+逻辑视图+配置后缀 的操作
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
FruitDAO fruitDAO = new FruitDAOImpl();
List<Fruit> fruitList = fruitDAO.getFruitList();
//将fruitList保存到session作用域中,
HttpSession session = req.getSession();
session.setAttribute("fruitList",fruitList);
// processTemplate(String templateName, HttpServletRequest req, HttpServletResponse resp)
super.processTemplate("demo07",req,resp);
}
javaweb-thymeleaf,加载jar包---视图基础的更多相关文章
- JAVA动态加载JAR包的实现
如何动态的加载这些驱动!不可能把所有的数据库驱动都集成到JAR包中吧?!于是动态加载驱动的JAR包就产生了!其实这些在做系统基础代码时,经常用到,只是一般我们没有机会去搞而已. 动态加载JAR包,使用 ...
- tomcat/Java指定加载jar包的路径
背景:部署的web站点,应用默认加载工程的/webapps/工程名/WEB-INF/lib下的jar包 但是我需要提供一个和web工程没关系的的jar包管理目录 解决方法: 执行java方法时 ...
- 动态加载jar包(二)
上次说的加载jar包,有几个问题没有解决: 1.如果项目包含了其他的jar包如何解决? 2.如何规范上传的jar包的类和方法? 下面就解决一下上面两个问题 一.首先编写被调用的类,这次使用maven工 ...
- 动态加载jar包(一)
一.编写被调用的类 package com.qunar.helloworld; public class HelloWorld { public String sayHello(){ return ( ...
- spring加载jar包中多个配置文件(转)
转自:http://evan0625.iteye.com/blog/1598366 在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示: Java代码 <co ...
- java动态加载jar包,并运行其中的类和方法
动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行. 下面通过一个实例来直观演示: 第一: ...
- idea中pom如何加载jar包依赖
1.需求分析 在特定需求的情况下,idea需要加载jar包,那么如何在idea中正确的配置jar依赖呢?今天博主就这个问题给大伙讲解下,希望对大伙有所帮助 2.实现方案①在工程src目录下新建l ...
- maven加载jar包配置
maven build时报程序包不存在和找不到符号的错误,但是代码中不报错,如下: [ERROR] Failed to execute goal org.apache.maven.plugins:ma ...
- 动态加载jar包中的类(方式一)
嘛, 直接上代码 public static class TestClassLoader extends ClassLoader { @Override protected Class<?> ...
随机推荐
- 【Golang】程序如何优雅的退出?
1. 背景 项目开发过程中,随着需求的迭代,代码的发布会频繁进行,在发布过程中,如何让程序做到优雅的退出? 为什么需要优雅的退出? 你的 http 服务,监听端口没有关闭,客户的请求发过来了,但处理了 ...
- BUUCTF-荷兰宽带数据泄露
荷兰宽带数据泄露 下载后发现是个BIN文件,之前也是做过类似的题目 RouterPassview打开BIn文件即可,搜索username或者password. 最后flag是username
- C4C中更方便的消息管理
- 项目: ATM+购物车
ATM+购物车 项目文件: 介绍 以下为文件夹层次和内容: readme.md 1. 需求 模拟银行取款 + 购物全过程 1.注册 2.登录 3.提现 4.还款 5.转账 6.查看余额 7.查看购物车 ...
- webapi <Message>已拒绝为此请求授权。</Message>
webapi <Message>已拒绝为此请求授权.</Message> 原有的调用base.OnAuthorization(actionContext); 换成下面这个 // ...
- Eolink 推出面向中小企业及初创企业支持计划,为企业赋能!
2022,疫情持续蔓延,Eolink 作为一家初创公司,深切地感受到疫情下中小企业和初创企业的不易. Eolink 宣布正式推出「 Eolink 微光计划」,面向中小企业和初创企业,提供免费一年的私有 ...
- vue2升级vue3指南(二)—— 语法warning&error篇
本文总结了vue2升级vue3可能会遇到的语法警告和错误,如果想知道怎样升级,可以查看我的上一篇文章:vue2升级vue3指南(一)-- 环境准备和构建篇 Warning 1.deep /deep/和 ...
- 常用的函数式接口_Predicate接口和常用的函数式借楼_Predicate_默认方法and
package com.yang.Test.PredicateStudy; import java.util.function.Predicate; /** * java.util.function. ...
- 字符编码和字符集和编码引出的问题_FileReader读取GBK格式的文件
字符编码 计算机中鵆的信息都是用二进制数表示的,而我们在屏幕上看到的数字.英文.标点符号.汉子等字符都是二进制数转换之后的结果.按照某种规则,将字符存储到计算机中,称为编码.反之,将存储在计算机中的二 ...
- google nexus5x 刷机抓包逆向环境配置(三)
本文仅供学习交流使用,如侵立删! google nexus5x 刷机抓包逆向环境配置(三) 安装抓包证书(Fiddler.Charles) 操作环境 nexus5x kaliLinux win10 准 ...