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的声明一般被用来在身份提供者和服…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
windows系统MySQL安装文档
概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...
