javaweb使用Thymeleaf 最凝练的CRUD项目

编程入门 行业动态 更新时间:2024-10-16 02:22:10

javaweb使用Thymeleaf 最<a href=https://www.elefans.com/category/jswz/34/1748721.html style=凝练的CRUD项目"/>

javaweb使用Thymeleaf 最凝练的CRUD项目

目录

最凝练的CRUD

1、建模

①物理建模

②逻辑建模

2、总体架构

3、搭建持久化层所需环境

①导入jar包

②创建jdbc.properties

③创建JDBCUtils工具类

④BaseDao

4、搭建表述层所需环境

①导入jar包

②创建ViewBaseServlet

③配置web.xml

④创建view目录

5、功能清单


javaweb使用Thymeleaf 最凝练的CRUD项目-上

1、建模

①物理建模

CREATE DATABASE `view-demo`CHARACTER SET utf8;
USE `view-demo`;
CREATE TABLE t_soldier(soldier_id INT PRIMARY KEY AUTO_INCREMENT,soldier_name CHAR(100),soldier_weapon CHAR(100)
);

②逻辑建模

public class Soldier {private Integer soldierId;private String soldierName;private String soldierWeapon;
}

2、总体架构

3、搭建持久化层所需环境

①导入jar包

commons-dbutils-1.6.jar

druid-1.1.9.jar

hamcrest-core-1.3.jar

junit-4.12.jar

mysql-connector-java-5.1.37-bin.jar

②创建jdbc.properties

维护基本连接信息

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.198.100:3306/view-demo
username=root
password=atguigu
initialSize=10
maxActive=20
maxWait=10000

③创建JDBCUtils工具类


public class JDBCUtil {// 将数据源对象设置为静态属性,保证大对象的单一实例private static DataSource dataSource;static {// 1.创建一个用于存储外部属性文件信息的Properties对象Properties properties = new Properties();// 2.使用当前类的类加载器加载外部属性文件:jdbc.propertiesInputStream inputStream = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");try {// 3.将外部属性文件jdbc.properties中的数据加载到properties对象中properties.load(inputStream);// 4.创建数据源对象dataSource = DruidDataSourceFactory.createDataSource(properties);} catch (Exception e) {e.printStackTrace();}}/*** 从数据源中获取数据库连接* @return 数据库连接对象*/public static Connection getConnection() {Connection connection = null;try {connection = dataSource.getConnection();} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}return connection;}/*** 释放数据库连接* @param connection 要执行释放操作的连接对象*/public static void releaseConnection(Connection connection) {if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);}}}}

测试能否正常连接数据库:

public class DemoTest {@Testpublic void testConnection() {Connection connection = JDBCUtil.getConnection();System.out.println("connection = " + connection);}}

④BaseDao

public class BaseDao<T> {private QueryRunner queryRunner = new QueryRunner();/*** 通用的增删改方法* @param sql* @param param* @return*/public int update(String sql, Object ... param) {Connection connection = JDBCUtil.getConnection();int count = 0;try {count = queryRunner.update(connection, sql, param);} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);} finally {// 关闭数据库连接JDBCUtil.releaseConnection(connection);}return count;}/*** 查询单个对象的通用方法* @param clazz* @param sql* @param param* @return*/public T getBean(Class<T> clazz, String sql, Object ... param) {Connection connection = JDBCUtil.getConnection();T bean = null;try {bean = queryRunner.query(connection, sql, new BeanHandler<>(clazz), param);} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);} finally {// 关闭数据库连接JDBCUtil.releaseConnection(connection);}return bean;}/*** 查询集合对象的通用方法* @param clazz* @param sql* @param param* @return*/public List<T> getBeanList(Class<T> clazz, String sql, Object ... param) {Connection connection = JDBCUtil.getConnection();List<T> beanList = null;try {beanList = queryRunner.query(connection, sql, new BeanListHandler<>(clazz), param);} catch (SQLException e) {e.printStackTrace();throw new RuntimeException(e);} finally {// 关闭数据库连接JDBCUtil.releaseConnection(connection);}return beanList;}
}

4、搭建表述层所需环境

本质上就是Thymeleaf所需要的环境

①导入jar包

attoparser-2.0.5.RELEASE.jar

javassist-3.20.0-GA.jar log4j-1.2.15.jar

ognl-3.1.26.jar

slf4j-api-1.7.25.jar

slf4j-log4j12-1.7.25.jar

thymeleaf-3.0.12.RELEASE.jar

unbescape-1.1.6.RELEASE.jar

②创建ViewBaseServlet

public class ViewBaseServlet extends HttpServlet {private TemplateEngine templateEngine;@Overridepublic 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

<!-- 在上下文参数中配置视图前缀和视图后缀 -->
<context-param><param-name>view-prefix</param-name><param-value>/WEB-INF/view/</param-value>
</context-param>
<context-param><param-name>view-suffix</param-name><param-value>.html</param-value>
</context-param>

④创建view目录

5、功能清单

  • 显示首页:浏览器通过index.html访问首页Servlet,然后再解析对应的模板视图
  • 显示列表:在首页点击超链接,跳转到目标页面把所有士兵的信息列表显示出来
  • 删除信息:在列表上点击删除超链接,执行信息的删除操作
  • 新增信息:
    • 在列表页面点击超链接跳转到新增士兵信息的表单页面
    • 在新增信息的表单页面点击提交按钮执行保存
  • 更新信息:
    • 在列表上点击更新超链接,跳转到更新士兵信息的表单页面:表单回显
    • 在更新信息的表单页面点击提交按钮执行更新

    本章笔记是观看尚硅谷的JAVAWEB的视频和在网上找的资料 以及自己的理解总结出来的笔记希望可以帮助大家,感谢大家的耐心观看 如有错误请即使联系我 我会及时修正 

更多推荐

javaweb使用Thymeleaf 最凝练的CRUD项目

本文发布于:2024-02-06 10:42:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748329.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:凝练   项目   javaweb   Thymeleaf   CRUD

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!