
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 staticT 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 ThreadLocaltl = 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注解的属性MapannotationAttributes = 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
发表评论
最新留言
不错!
[***.144.177.141]2025年04月29日 05时00分58秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
openssl服务器证书操作
2019-03-07
expect 模拟交互 ftp 上传文件到指定目录下
2019-03-07
linux系统下双屏显示
2019-03-07
PDF.js —— vue项目中使用pdf.js显示pdf文件(流)
2019-03-07
我用wxPython搭建GUI量化系统之最小架构的运行
2019-03-07
我用wxPython搭建GUI量化系统之多只股票走势对比界面
2019-03-07
selenium+python之切换窗口
2019-03-07
重载和重写的区别:
2019-03-07
搭建Vue项目步骤
2019-03-07
账号转账演示事务
2019-03-07
idea创建工程时错误提醒的是architectCatalog=internal
2019-03-07
SpringBoot找不到@EnableRety注解
2019-03-07
简易计算器案例
2019-03-07
在Vue中使用样式——使用内联样式
2019-03-07
Explore Optimization
2019-03-07
Kali Linux 内网渗透教程 - ARP欺骗攻击 | 超详细
2019-03-07
2020Java程序设计基础(华东交通大学)章节测试免费满分答案
2019-03-07
解决数据库报ORA-02289:序列不存在错误
2019-03-07