Maven基础&&Spring框架阶段常用工具类整理
发布日期:2021-05-08 23:13:33 浏览次数:24 分类:博客文章

本文共 16152 字,大约阅读时间需要 53 分钟。

常用工具类

1.密码加密工具类:

package com.itheima.utils;import java.security.MessageDigest;import sun.misc.BASE64Encoder;public class MD5Util {/*** 密码加密* @param password* @return* @throws Exception*/public static String md5(String password){try {//1.创建加密对象MessageDigest md5 = MessageDigest.getInstance("md5");//2.加密密码byte[] by = md5.digest(password.getBytes());//3.创建编码对象BASE64Encoder encoder = new BASE64Encoder();//4.对结果编码return encoder.encode(by);}catch (Exception e){throw new RuntimeException(e);}}}

 

2.事务控制工具类:

package com.itheima.utils;import org.apache.ibatis.session.SqlSession;public class TransactionUtil {/*** 提交释放* @param sqlSession*/public static void commit(SqlSession sqlSession){if(sqlSession!=null) {sqlSession.commit();}}/*** 回滚释放* @param sqlSession*/public static void rollback(SqlSession sqlSession){if(sqlSession!=null) {sqlSession.rollback();}}/*** 单独释放* @param sqlSession*/public static void close(SqlSession sqlSession){if(sqlSession!=null) sqlSession.close();}}

 

3.填充表单数据到javabean的工具类:

package com.itheima.utils;import javax.servlet.http.HttpServletRequest;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.ConvertUtils;import org.apache.commons.beanutils.converters.DateConverter;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.servlet.ServletFileUpload;import java.beans.PropertyDescriptor;import java.io.File;import java.lang.reflect.Method;import java.util.Date;import java.util.List;/*** 填充表单数据到javabean的工具类**/public class BeanUtil {/*** 封装表单中的数据到javabean中* @param request    表单中的数据* @param clazz    封装到哪个javabean* @return    封装好的javabean对象* 使用的是泛型。泛型必须先声明再使用。声明必须在返回值之前* T指的就是泛型,它可以是任意字符,只是作为一个占位符。* 声明时用什么字符,使用时就得用什么*/public static 
T fillBean(HttpServletRequest request,Class
clazz){//1.定义一个T类型的javabeanT bean = null;try{//2.实例化bean对象bean = clazz.newInstance();//3.使用BeanUtils的方法进行封装BeanUtils.populate(bean, request.getParameterMap());//4.返回return bean;}catch(Exception e){throw new RuntimeException(e);}}/*** 封装表单中的数据到javabean中,带有日期格式数据* @param request 表单中的数据* @param clazz 封装到哪个javabean* @return 封装好的javabean对象* 使用的是泛型。泛型必须先声明再使用。声明必须在返回值之前* T指的就是泛型,它可以是任意字符,只是作为一个占位符。* 声明时用什么字符,使用时就得用什么*/public static
T fillBean(HttpServletRequest request,Class
clazz,String datePattern){//1.定义一个T类型的javabeanT bean = null;try{//2.实例化bean对象bean = clazz.newInstance();//3.创建日期转换器对象DateConverter converter = new DateConverter();converter.setPattern(datePattern);//4.设置转换器ConvertUtils.register(converter, Date.class);//5.使用BeanUtils的方法进行封装BeanUtils.populate(bean, request.getParameterMap());//6.返回return bean;}catch(Exception e){throw new RuntimeException(e);}}/*** 文件上传的表单填充* @param items 文件上传的表单项* @param clazz 要封装的实体类字节码* @param
泛型* @return 返回封装好的对象*/public static
T fillBean(List
items,Class
clazz){//1.定义一个T类型的javabeanT bean = null;try{//2.实例化Beanbean = clazz.newInstance();//3.遍历文件项集合for(FileItem item : items){//4.判断是不是文件if(item.isFormField()){//表单字段,不是文件//5.取出表单中的name属性取值String fieldName = item.getFieldName();//6.使用UTF-8字符集取出表单数据String fieldValue = item.getString("UTF-8");//7.创建属性描述器对象PropertyDescriptor pd = new PropertyDescriptor(fieldName,clazz);//8.获取写方法(setXXX方法)Method method = pd.getWriteMethod();//9.把数据填充到bean中method.invoke(bean,fieldValue);}}//10.返回return bean;}catch(Exception e){throw new RuntimeException(e);}}}

 

4.dao接口代理实现类的工厂:

package com.itheima.factory;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;/*** 用于生成dao接口代理实现类的工厂*/public class MapperFactory {private static SqlSessionFactory factory;private static ThreadLocal
tl = new ThreadLocal
();static {InputStream in = null;try {//1.读取mybatis主配置文件in = Resources.getResourceAsStream("SqlMapConfig.xml");//2.创建构建者对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//3.使用构建者创建SqlSessionFactory工厂factory = builder.build(in);}catch (Exception e){//打印异常信息到控制台e.printStackTrace();//抛出错误提示程序终止执行throw new ExceptionInInitializerError("初始化SqlSessionFactory失败");}finally {//释放流对象if(in != null){try{in.close();}catch (Exception e){e.printStackTrace();}}}}/*** 获取SqlSession对象* @return* 保留此方法是为了后面对业务层方法增强,利用AOP添加事务*/public static SqlSession getSqlSession(){return factory.openSession(false);}/*** 获取Dao接口的代理实现类* @param daoClass dao接口字节码* @return*/public static
T getMapper(SqlSession sqlSession,Class
daoClass){//1.判断传入的SqlSession是否为nullif(sqlSession == null){return null;}//2.不为null,创建代理实现类return sqlSession.getMapper(daoClass);}}

 

5.解决请求响应乱码:

package com.itheima.web.controller.filter;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebInitParam;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebFilter(value = "/*",initParams={@WebInitParam(name = "encoding",value = "UTF-8")})public class CharacterEncodingFilter implements Filter {private FilterConfig filterConfig;/*** 初始化方法,获取过滤器的配置对象* @param filterConfig* @throws ServletException*/@Overridepublic void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {//1.定义和协议相关的请求和响应对象HttpServletRequest request ;HttpServletResponse response;try{//2.把参数转换成协议相关的对象request = (HttpServletRequest)req;response = (HttpServletResponse)resp;//3.获取配置的字符集String encoding = filterConfig.getInitParameter("encoding");//4.设置请求参数的字符集request.setCharacterEncoding(encoding);//5.设置响应对象输出响应正文时的字符集response.setContentType("text/html;charset=UTF-8");//6.放行chain.doFilter(request,response);}catch (Exception e){e.printStackTrace();}}@Overridepublic void destroy() {//可以做一些清理操作}}

 

6.批量注入工具类:

package config.registrar;import org.springframework.beans.factory.support.BeanDefinitionRegistry;import org.springframework.context.annotation.ClassPathBeanDefinitionScanner;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;import org.springframework.core.io.support.PropertiesLoaderUtils;import org.springframework.core.type.AnnotationMetadata;import org.springframework.core.type.filter.AspectJTypeFilter;import org.springframework.core.type.filter.TypeFilter;import java.io.IOException;import java.util.Map;import java.util.Properties;public class CustomeImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {private String expression;public CustomeImportBeanDefinitionRegistrar(){try {//初始化时指定加载的properties文件名Properties loadAllProperties = PropertiesLoaderUtils.loadAllProperties("import.properties");//设定加载的属性名expression = loadAllProperties.getProperty("path");} catch (IOException e) {e.printStackTrace();}}@Overridepublic void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {//1.定义扫描包的名称String[] basePackages = null;//2.判断有@Import注解的类上是否有@ComponentScan注解if (importingClassMetadata.hasAnnotation(ComponentScan.class.getName())) {//3.取出@ComponentScan注解的属性Map
annotationAttributes = importingClassMetadata.getAnnotationAttributes(ComponentScan.class.getName());//4.取出属性名称为basePackages属性的值basePackages = (String[]) annotationAttributes.get("basePackages");}//5.判断是否有此属性(如果没有ComponentScan注解则属性值为null,如果有ComponentScan注解,则basePackages默认为空数组)if (basePackages == null || basePackages.length == 0) {String basePackage = null;try {//6.取出包含@Import注解类的包名basePackage = Class.forName(importingClassMetadata.getClassName()).getPackage().getName();} catch (ClassNotFoundException e) {e.printStackTrace();}//7.存入数组中basePackages = new String[] {basePackage};}//8.创建类路径扫描器ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(registry, false);//9.创建类型过滤器(此处使用切入点表达式类型过滤器)TypeFilter typeFilter = new AspectJTypeFilter(expression,this.getClass().getClassLoader());//10.给扫描器加入类型过滤器scanner.addIncludeFilter(typeFilter);//11.扫描指定包scanner.scan(basePackages);}}

 

常用坐标

 spring常用坐标:

org.springframework.boot
spring-boot-starter-parent
2.1.8.RELEASE
org.springframework
spring-context
5.1.9.RELEASE
org.mybatis
mybatis
3.5.3
mysql
mysql-connector-java
5.1.47
org.springframework
spring-jdbc
5.1.9.RELEASE
org.mybatis
mybatis-spring
2.0.3
com.alibaba
druid
1.1.16
org.aspectj
aspectjweaver
1.9.4
com.github.pagehelper
pagehelper
5.1.2
org.springframework
spring-webmvc
5.1.9.RELEASE
com.fasterxml.jackson.core
jackson-databind
2.9.0
com.fasterxml.jackson.core
jackson-core
2.9.0
com.fasterxml.jackson.core
jackson-annotations
2.9.0
javax.servlet
javax.servlet-api
3.1.0
provided
javax.servlet.jsp
jsp-api
2.1
provided
javax.validation
validation-api
2.0.1.Final
org.hibernate
hibernate-validator
6.1.0.Final
org.jboss.logging
jboss-logging
3.3.2.Final
com.fasterxml
classmate
1.3.4
junit
junit
4.12
org.springframework
spring-test
5.1.9.RELEASE
org.slf4j
slf4j-api
1.7.21
org.slf4j
slf4j-log4j12
1.7.21
org.apache.dubbo
dubbo
2.7.4.1
io.netty
netty-all
4.1.39.Final
org.yaml
snakeyaml
1.23
org.apache.curator
curator-framework
4.0.0
org.apache.curator
curator-recipes
4.0.0
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.0
org.springframework.boot
spring-boot-starter-jetty
2.1.8.RELEASE
mysql
mysql-connector-java
5.1.47
org.springframework.boot
spring-boot-starter-test
2.1.8.RELEASE
org.springframework.boot
spring-boot-starter-data-redis
2.1.8.RELEASE
org.springframework.boot
spring-boot-starter-data-elasticsearch
2.1.8.RELEASE
org.springframework.boot
spring-boot-starter-actuator
2.1.8.RELEASE
de.codecentric
spring-boot-admin-starter-server
2.1.5
de.codecentric
spring-boot-admin-starter-client
2.1.5
redis.clients
jedis
2.9.3
org.elasticsearch.client
elasticsearch-rest-high-level-client
7.4.0
org.elasticsearch.client
elasticsearch-rest-client
7.4.0
org.elasticsearch
elasticsearch
7.4.0
com.alibaba
fastjson
1.2.4
org.apache.rocketmq
rocketmq-client
4.5.2
org.projectlombok
lombok
1.18.8
com.baomidou
mybatis-plus-boot-starter
3.4.0
org.springframework.boot
spring-boot-maven-plugin
2.1.8.RELEASE
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
80
/
UTF-8

 

meaven基础常用坐标

UTF-8
1.8
1.8
org.mybatis
mybatis
3.5.3
com.github.pagehelper
pagehelper
5.1.2
mysql
mysql-connector-java
5.1.46
com.alibaba
druid
1.1.21
junit
junit
4.12
test
javax.servlet
javax.servlet-api
3.1.0
provided
javax.servlet.jsp
javax.servlet.jsp-api
2.3.3
provided
commons-beanutils
commons-beanutils
1.9.4
org.apache.commons
commons-lang3
3.9
jstl
jstl
1.2
com.fasterxml.jackson.core
jackson-annotations
2.9.0
com.fasterxml.jackson.core
jackson-core
2.9.0
com.fasterxml.jackson.core
jackson-databind
2.9.0
commons-fileupload
commons-fileupload
1.3.1
org.apache.poi
poi
4.0.1
org.apache.poi
poi-ooxml
4.0.1
org.apache.poi
poi-ooxml-schemas
4.0.1
org.apache.tomcat.maven
tomcat7-maven-plugin
2.1
80
/
utf-8

 

上一篇:spring事务:事务控制方式,使用AOP控制事务,七种事务传播行为,声明事务,模板对象,模板对象原理分析
下一篇:springAop:Aop(Xml)配置,Aop注解配置,spring_Aop综合案例,Aop底层原理分析

发表评论

最新留言

不错!
[***.144.177.141]2025年04月29日 05时00分58秒