Javaweb基础配置模板(mybatis+javaweb)
1.大纲规划图
本配置涉及的技术:mybatis,javaweb,json转换,分页查询等

2.导入相关的配置文件pom.xml
2.1 依赖文件
<dependencies>
<!-- 测试依赖--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- mybatis代码生成器--><!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.3.7</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<!-- mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!-- mysql8.0驱动依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.31</version></dependency><!-- 日志文件依赖--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency><!--servlet依赖--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!-- hutools工具依赖包--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.11</version></dependency><!--Json生成器--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.3.3</version></dependency><!--beanUtils--><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.2</version><scope>compile</scope></dependency><!-- 分页插件依赖--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.2.1</version></dependency><!-- getXxx,setXxx方法注解依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version></dependency></dependencies>
2.2tomcat插件
<build><!--maven插件--><plugins><!--tomcat插件--><plugin><groupId>org.apache.tomcat.maven</groupId><!-- tomcat7的插件, 不同tomcat版本这个也不一样 --><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><!-- 通过maven tomcat7:run运行项目时,访问项目的端口号 --><port>9090</port><!-- 项目访问路径 本例:localhost:9090, 如果配置的aa, 则访问路径为localhost:9090/aa--><path>/travel</path></configuration></plugin></plugins></build>
3.配置文件resources管理

3.1mybatis-config.xml核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--引入数据库连接的配置文件,jdbc.properties--><properties resource="jdbc.properties"/><!-- 配置日志打印--><settings><setting name="logImpl" value="LOG4J"/><!-- 如果只是单纯的下划线,可以在mybatis的核心配置文件中使用setting标签设置开启驼峰命名规则--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><!--起别名,作用就是在mapper下的配置文件中使用增删改查返回数据类型和参数类型一般需要写实体类的全包名,使用别名可以省略包名--><!--这个需要修改,修改自己的对应的实体类--><typeAliases><package name="com.tz.entity"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><!--这个需要修改,修改自己的mapper--><mappers><!--扫描resource下的mapper映射文件包名-->
<!-- <package name="mappers/*"/>-->
<!-- <mapper resource="mappers/UserMapper.xml"/>--><package name="com.tz.mapper"></package></mappers></configuration>
3.2log4j.properties
# log4j.rootLogger日志输出类别和级别:只输出不低于该级别的日志信息DEBUG < INFO < WARN < ERROR < FATAL
# WARN:日志级别 CONSOLE:输出位置自己定义的一个名字 logfile:输出位置自己定义的一个名字
log4j.rootLogger=DEBUG,console
# 配置CONSOLE输出到控制台
log4j.appender.console = org.apache.log4j.ConsoleAppender
# 输出到控制台的方式
log4j.appender.console.Target = System.out
# ?????OFF?FATAL?ERROR?WARN?INFO?DEBUG?ALL
log4j.appender.console.Threshold = DEBUG
# 配置CONSOLE设置为自定义布局模式
log4j.appender.console.layout = org.apache.log4j.PatternLayout
# 日志输出格式
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n# 其它包的调试级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
3.3jdbc.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/travel
username=root
password=00000000
4.Mybatis代码生成器
代码生成器根据数据库自动生成entity,mapper以及resource下的sql映射文件
参考博客:mybatis代码生成器模板
5. 工具包util包下
5.1 密码加密工具Md5Util
import java.security.MessageDigest;/*** 写一个MD5算法,运行结果与MySQL的md5()函数相同* 将明文密码转成MD5密码* 123456->e10adc3949ba59abbe56e057f20f883e*/
public final class Md5Util {private Md5Util(){}/*** 将明文密码转成MD5密码 */public static String encodeByMd5(String password) throws Exception{//Java中MessageDigest类封装了MD5和SHA算法,今天我们只要MD5算法MessageDigest md5 = MessageDigest.getInstance("MD5");//调用MD5算法,即返回16个byte类型的值byte[] byteArray = md5.digest(password.getBytes());//注意:MessageDigest只能将String转成byte[],接下来的事情,由我们程序员来完成return byteArrayToHexString(byteArray);}/*** 将byte[]转在16进制字符串 */private static String byteArrayToHexString(byte[] byteArray) {StringBuffer sb = new StringBuffer();//遍历for(byte b : byteArray){//16次//取出每一个byte类型,进行转换String hex = byteToHexString(b);//将转换后的值放入StringBuffer中sb.append(hex);}return sb.toString();}/*** 将byte转在16进制字符串 */private static String byteToHexString(byte b) {//-31转成e1,10转成0a,。。。//将byte类型赋给int类型int n = b;//如果n是负数if(n < 0){//转正数//-31的16进制数,等价于求225的16进制数 n = 256 + n;}//商(14),数组的下标int d1 = n / 16;//余(1),数组的下标int d2 = n % 16;//通过下标取值return hex[d1] + hex[d2];}private static String[] hex = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};/*** 测试*/public static void main(String[] args) throws Exception{String password = "123456";String passwordMD5 = Md5Util.encodeByMd5(password);System.out.println(password);System.out.println(passwordMD5);}
}
5.2 连接Mybatis工具包SqlSessionFactoryUtils
类名:SqlSessionFactoryUtils
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;public class SqlSessionFactoryUtils {private static SqlSessionFactory sqlSessionFactory;static {//静态代码块会随着类的加载而自动执行,且只执行一次try {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory;}
}
5.3 分页工具PageBean
import java.util.List;/*** 分页对象*/
public class PageBean<T> {private long totalCount;//总记录数private int totalPage;//总页数private int currentPage;//当前页码private int pageSize;//每页显示的条数private List<T> list;//每页显示的数据集合public long getTotalCount() {return totalCount;}public void setTotalCount(long totalCount) {this.totalCount = totalCount;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public int getCurrentPage() {return currentPage;}public void setCurrentPage(int currentPage) {this.currentPage = currentPage;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public List<T> getList() {return list;}public void setList(List<T> list) {this.list = list;}
}
5.4 封装返回的结果ResultInfo
import java.io.Serializable;/*** 用于封装后端返回前端数据对象*/
public class ResultInfo implements Serializable {private boolean flag;//后端返回结果正常为true,发生异常返回falseprivate Object data;//后端返回结果数据对象private String errorMsg;//发生异常的错误消息//无参构造方法public ResultInfo() {}public ResultInfo(boolean flag) {this.flag = flag;}/*** 有参构造方法** @param flag* @param errorMsg*/public ResultInfo(boolean flag, String errorMsg) {this.flag = flag;this.errorMsg = errorMsg;}/*** 有参构造方法** @param flag* @param data* @param errorMsg*/public ResultInfo(boolean flag, Object data, String errorMsg) {this.flag = flag;this.data = data;this.errorMsg = errorMsg;}public boolean isFlag() {return flag;}public void setFlag(boolean flag) {this.flag = flag;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public String getErrorMsg() {return errorMsg;}public void setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}
}
5.5 产生UUID随机字符串工具类UuidUtil
import java.util.UUID;/*** 产生UUID随机字符串工具类*/
public final class UuidUtil {private UuidUtil(){}public static String getUuid(){return UUID.randomUUID().toString().replace("-","");}/*** 测试*/public static void main(String[] args) {System.out.println(UuidUtil.getUuid());System.out.println(UuidUtil.getUuid());System.out.println(UuidUtil.getUuid());System.out.println(UuidUtil.getUuid());}
}
5.6 专门存放常量的类
/*** 专门存放常量的类*/
public class Constants {public static final String CHECKCODE_SERVER = "CHECKCODE_SERVER";
}
6. 项目连接地址预告(黑马旅游网项目)
登陆模块
注册模块
验证码模块
首页模块
相关文章:
Javaweb基础配置模板(mybatis+javaweb)
1.大纲规划图 本配置涉及的技术:mybatis,javaweb,json转换,分页查询等 2.导入相关的配置文件pom.xml 2.1 依赖文件 <dependencies> <!-- 测试依赖--><dependency><groupId>junit</groupId><artifactId>junit</artifact…...
物联网 JS 前端框架开发 - 执行 js 程序
前言 此篇文章主要讲解如何在物联网操作系统OneOS上运行高级语言JS脚本程序。想想还是有点意思的,毕竟在IOT设备上,我们的固有想法是,他们性能很羸弱,可能就跑跑一些简单的C应用程序,没想到已经可以运行高级语言JS脚本…...
区块链概论
目录 1.概述 2.密码学原理 2.1.hash函数 2.2.签名 3.数据结构 3.1.区块结构 3.2.hash pointer 3.3.merkle tree 3.3.1.概述 3.3.2.证明数据存在 3.3.3.证明数据不存在 4.比特币的共识协议 4.1.概述 4.2.验证有效性 4.2.1.验证交易有效性 4.2.2.验证节点有效性 …...
MAC地址表安全
4.1.2MAC地址表安全 MAC地址表项类型包括:动态MAC地址表项:由接口通过报文中的源MAC地址学习获得,表项可老化。在系统复位、接口板热插拔或接口板复位后,动态表项会丢失。静态MAC地址表项:由用户手工配置并下发到各接口板,表项不老化。在系统复位、接口板热插拔或接口板复…...
处理CSV(python)
处理CSV(python)简介1. CSV和Python简介2. 文章内容简介一、用csv模块读取和写入CSV文件1. CSV模块2. 示例二、用pandas库读取和写入CSV文件1. pandas2. 示例三、处理CSV文件中的特殊情况1. 特殊情况及处理方法2. 示例简介 1. CSV和Python简介 CSV是一…...
【云原生】Kubernetes(k8s)之容器的探测
Kubernetes(k8s)之容器的探测一、探测类型及使用场景1.1、startupProbe(启动探测)1.2、readinessProbe(就绪探测)1.3、livenessProbe(存活探测)二、检查机制三、探测结果四、容器探测…...
看完这个你就牛了,自动化测试框架设计
一、引言 随着IT技术的快速发展,软件开发变得越来越快速和复杂化。在这种背景下,传统的手工测试方式已经无法满足测试需求,而自动化测试随之而生。 自动化测试可以提高测试效率和测试质量,减少重复性的测试工作,从而…...
Spring Cloud Alibaba全家桶(八)——Sentinel规则持久化
前言 本文小新为大家带来 Sentinel规则持久化 相关知识,具体内容包括,Sentinel规则推送三种模式介绍,包括:原始模式,拉模式,推模式,并对基于Nacos配置中心控制台实现推送进行详尽介绍~ 不积跬步…...
Mysql不锁表备份之Xtrabackup的备份与恢复
一、Xtrabackup介绍 MySQL冷备、热备、mysqldump都无法实现对数据库进行增量备份。如果数据量较大我们每天进行完整备份不仅耗时且影响性能。而Percona-Xtrabackup就是为了实现增量备份用于MySQL数据库物理热备的备份工具,xtrabakackup有2个工具,分别是x…...
flex布局:输入框布局demo
目标效果 首先,生成输入框: 代码: 结果: 设置基本样式 包括:去除边距、设置父盒子的宽度(如果不设置宽度,会使用整个浏览器的宽度)、添加父盒子边框等 代码: *{margin: 0;pad…...
PHP请求的好处,PHP如何请求淘宝开放接口
PHP的好处有很多,最主要的特性就是PHP的安全性和兼容性明显。 1、良好的安全性 PHP是开源软件,所有PHP的源代码每个人都可以看得到,同时它与Apache编绎在一起的方式也可以让它具有灵活的安全设定, PHP具有了公认的安全性能。开源…...
精选出来的几道Java语法基础面试题
1.成员变量与局部变量的区别有那些? 从语法形式上,看成员变量是属于类的,而局部变量是在方法中定义的变量或是方法的参数;成员变量可以被public,private,static等修饰符所修饰,而局部变量不能被访问控制修饰符及static所修饰;成员变量和局部…...
uniapp或者小程序图片选择中的sizeType属性到底是什么
sizeType属性到底是什么 https://developers.weixin.qq.com/community/develop/doc/0006c261a300089771f9a233a56c00 https://ask.dcloud.net.cn/question/146679 第一个链接来自微信小程序社区,有开发者提了个问题:sizeType: ["original", &q…...
判断一个字符串是否是回文
目录 判断一个字符串是否是回文 程序设计 程序分析 判断一个字符串是否是回文 【问题描述】编写一个程序,判断一个字符串是否为"回文"(顺读和倒读都一样的字符串称为"回文")。 【输入形式】长度小于100的任意字符串 【输出形式】如果输入字符串是回…...
国产软件爆发!中国版Navicat,SQL Studio成数据库管理工具热门
如果关注2023年的A股市场,会发现各行各业都掀起了“国产化替代”运动的热潮。不仅仅是芯片,新能源、医疗器械甚至软件等领域,也都加快了国产化进程。 长期以来,中国的软件业比较依赖国际巨头。比如操作系统以微软为主,…...
算法学习day51
算法学习day511.力扣309.最佳买卖股票时机含冷冻期1.1 题目描述1.2分析1.3 代码2.力扣714.买卖股票的最佳时机含手续费2.1 题目描述2.2 分析2.3 代码3.参考资料1.力扣309.最佳买卖股票时机含冷冻期 1.1 题目描述 题目描述 给定一个整数数组,其中第i个元素代表了第…...
10 JS01——初识JS
目标: 1、初识JavaScript 2、JavaScript注释 3、JavaScript输入输出语句 一、初识JavaScript 1、JavaScript是什么 JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言(Script是脚本的意思) 脚本语言:不需要编译,运行过程…...
【软考备考-综合知识】安全性、可靠性与系统性能评测基础知识
计算机的安全性 安全等级 计算机系统中的三类安全性是指技术安全性、管理安全性和政策法律安全性。 信息安全五要素 机密性:全包信息不暴露给未授权的实体或进程。 完整性:只有得到允许的人才能够修改数据,并能够判别出数据是否已被篡改。…...
匆忙之间难免疏忽,写代码更加如此
一个方法包含了多个知识点的合计,合计起来用。实战开发特点1; 基础知识点不牢固,您必定就会感觉寸步难行啊 public class AddJiChuShu{int a 1;int b 2;int c 0;int d 0;string str "";string str2 "张三";//mothe…...
低代码(七)低代码平台后端技术选型2.0
JWT 登录token Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...
ZYNQ学习记录FPGA(二)Verilog语言
一、Verilog简介 1.1 HDL(Hardware Description language) 在解释HDL之前,先来了解一下数字系统设计的流程:逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端,在这个过程中就需要用到HDL,正文…...
创客匠人:如何通过创始人IP打造实现知识变现与IP变现的长效增长?
在流量红利逐渐消退的当下,创始人IP的价值愈发凸显。它不仅能够帮助中小企业及个人创业者突破竞争壁垒,还能成为企业品牌影响力的核心资产。然而,市场上IP孵化机构鱼龙混杂,如何选择一家真正具备长期价值的合作伙伴?创…...
