1. 常用零散工具类

1.1【DateUtil.java】日期处理的工具类

/*** 时间日期处理工具* String -> Date* Date -> String* 以及生成含有日期的字符串 可以当作保存id用等等。* 等格式化处理 * **/
public class DateUtil {private static final String FORMAT_0 = "yyyy-MM-dd HH:mm:ss";private static final String FORMAT_1 = "yyyy-MM-dd";private static final String FORMAT_2 = "HH:mm:ss";private static final String FORMAT_3 = "yyyyMMddHHmmss";//获得含有时间的id 字符串public static String getIdByTime(){Date now = new Date();SimpleDateFormat simple = new SimpleDateFormat(FORMAT_3);return simple.format(now);}//如果参数长度不为为0,则取第一个参数进行格式化,否则取当前日期时间,精确到秒 如:2010-4-15 9:36:38public static String toFull(Date... date) {SimpleDateFormat simple = new SimpleDateFormat(FORMAT_0);if (date!=null && date.length > 0) {return simple.format(date[0]);}return simple.format(new Date());}/*** 如果参数长度不为为0,则取第一个参数进行格式化,<br>* 否则取当前日期 如:2010-4-15* * @param Date*            ... 可变参数* @return java.lang.String* **/public static String toDate(Date... date) {SimpleDateFormat simple = new SimpleDateFormat(FORMAT_1);if (date.length > 0) {return simple.format(date[0]);}return simple.format(new Date());}/*** 如果参数长度不为为0,则取第一个参数进行格式化,<br>* 否则取当前日期时间,精确到秒<br>* 如:9:36:38* * @param Date*            ... 可变参数* @return java.lang.String* **/public static String toTime(Date... date) {SimpleDateFormat simple = new SimpleDateFormat(FORMAT_2);if (date.length > 0) {return simple.format(date[0]);}return simple.format(new Date());}/*** 根据字符串格式去转换相应格式的日期和时间* * @param java*            .lang.String 必要参数* @return java.util.Date* @exception java.text.ParseException*                如果参数格式不正确会抛出此异常* **/public static Date reverse2Date(String date) {SimpleDateFormat simple = null;switch (date.trim().length()) {case 19:// 日期+时间simple = new SimpleDateFormat(FORMAT_0);break;case 10:// 仅日期simple = new SimpleDateFormat(FORMAT_1);break;case 8:// 仅时间simple = new SimpleDateFormat(FORMAT_2);break;default:break;}try {return simple.parse(date.trim());} catch (ParseException e) {e.printStackTrace();}return null;}/*** 将带有时、分、秒格式的日期转化为00:00:00<br>* 方便日期推算,格式化后的是yyyy-MM-dd 00:00:00* * @param java*            .util.Date... date的长度可以为0,即不用给参数* @return java.util.Date* **/public static Date startOfADay(Date... date) {SimpleDateFormat simple = new SimpleDateFormat(FORMAT_1);Date date_ = date.length == 0 ? new Date() : date[0];// 如果date为null则取当前时间String d = simple.format(date_);try {return simple.parse(d);} catch (ParseException e) {e.printStackTrace();}return null;}/*** 推算一个月内向前或向后偏移多少天,当然推算年也可以使用* * @param date*            要被偏移的日期,<br>*            amout 偏移量<br>*            b 是否先将date格式化为yyyy-MM-dd 00:00:00 即: 是否严格按整天计算* @return java.util.Date* **/public static Date addDayOfMonth(Date date, Integer amount, Boolean b) {date = date == null ? new Date() : date;// 如果date为null则取当前日期if (b) {date = startOfADay(date);}Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.DAY_OF_MONTH, amount);return cal.getTime();}/*** 推算一个小时内向前或向后偏移多少分钟,除了秒、毫秒不可以以外,其他都可以* * @param date*            要被偏移的日期,<br>*            amout 偏移量<br>*            b 是否先将date格式化为yyyy-MM-dd HH:mm:00 即: 是否严格按整分钟计算* @return java.util.Date* **/public static Date addMinuteOfHour(Date date, Integer amount, Boolean b) {date = date == null ? new Date() : date;// 如果date为null则取当前日期if (b) {SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:00");try {date = simple.parse(simple.format(date));} catch (ParseException e) {e.printStackTrace();}}Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.MINUTE, amount);return cal.getTime();}public static void main(String[] args) {System.out.println(DateUtil.addMinuteOfHour(new Date(), 60, false));}
}

1.2【Base64Util.java】

String s = "这是一个待加密的字符串";
BASE64Encoder base64e = new BASE64Encoder();//base64加密的类对象
String s2 = base64e.encode(s.getBytes());//s2就是用base64加密后的字符串
BASE64Decoder base64d = new BASE64Decoder();//base64解密的类对象
byte b[] = base64d.decodeBuffer(s2);//★字符串经base64解密成byte数组
String s3 = new String(b);

1.3【MD5Util.java】MD5加密工具类

public class MD5Util {public static String encode(String message){try {MessageDigest md=MessageDigest.getInstance("md5");byte b[] = md.digest(message.getBytes());return new BASE64Encoder().encode(b);//sun.misc.BASE64Encoder;} catch (NoSuchAlgorithmException e) {throw new RuntimeException(e);}}
}

1.4【IDGeneratorUtil.java】ID生成器/ID生成机制

///说明:一般在service层,在调用dao层的方法进行插入数据之前对id赋值,如:book.setId(IDGeneratorUtil.genPrimaryKey());
public class IDGeneratorUtil {public static String genPrimaryKey(){return UUID.randomUUID().toString();}//生成与当前时间有关系的ID号(用于订单号的生成),20150302+毫秒值//System.nanoTime():得到当前时间的纳秒值[JDK5.0以后]public static String genOrdersNum(){Date now = new Date();DateFormat df = new SimpleDateFormat("yyyyMMdd");String str = df.format(now)+System.currentTimeMillis();//得到当前时间的毫秒值return str;}
}

1.5【Dom4jUtils.java】

public class Dom4jUtils {private static String dbFilePath;static{//类加载器->得到资源->得到路径ClassLoader c1=Dom4jUtils.class.getClassLoader();URL url=c1.getResource("users.xml");//模拟dbFilePath=url.getPath();//得到真实地址}//得到documentpublic static Document getDocument() throws DocumentException{SAXReader reader = new SAXReader();return reader.read(dbFilePath);//注意该路径不是Myeclipse下面的文件路径,而是部署到tomcat后的路径}public static void writer2xml(Document document) throws Exception{XMLWriter writer = new XMLWriter(new FileOutputStream(dbFilePath),OutputFormat.createPrettyPrint());writer.write(document);writer.close();}
}

1.6【FormBeanUtil.java】表单页面数据封装类(用泛型),配合自定义的javabean使用,用于数据回显

public class FormBeanUtil {public static <T>T fillFormBean(Class<T> clazz,HttpServletRequest request){try {T bean = clazz.newInstance();//创建需要类型的bean//★BeanUtils.populate()用来将一些 key-value 的值(例如 hashmap)映射到bean中的属性BeanUtils.populate(bean, request.getParameterMap());return bean;//返回映射了数据的bean} catch(Exception e) {throw new RuntimeException(e);}}
}

数据库相关

2.1【JdbcUtil.java】数据库连接、释放的工具类

/**【db.properties】内容driverClassName=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/custmanageuser=rootpassword=****
*/
public class JdbcUtil {private static String driverClassName;private static String  url;private static String  user;private static String password;static{try {//加载配置文件InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");Properties prop = new Properties();prop.load(in);//读取配置文件的值driverClassName = prop.getProperty("driverClassName");url = prop.getProperty("url");user = prop.getProperty("user");password = prop.getProperty("password");Class.forName(driverClassName);} catch (Exception e) {e.printStackTrace();}}//开启数据库连接public static Connection getConnection() throws Exception{return DriverManager.getConnection(url,user,password);}//释放数据库连接public static void release(ResultSet rs,PreparedStatement ps,Connection conn){if(rs!=null){try{rs.close();}catch(SQLException e){e.printStackTrace();}rs=null;}if(ps!=null){try{ps.close();}catch(SQLException e){e.printStackTrace();}ps=null;}if(conn!=null){try{conn.close();}catch(SQLException e){e.printStackTrace();}conn=null;}}
}

2.2 【DBCPUtil.java】数据连接池的工具类

  • 自定义数据库连接池
public class DBCPUtil{private static DataSource ds;static{try {InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("dbconfig.properties");Properties props = new Properties();props.load(in);ds = BasicDataSourceFactory.createDataSource(props);//★一句话代替JDBCUtil中的四句话} catch (Exception e) {e.printStackTrace();}}public static DataSource getDataSource(){return ds;}
}

2.3【EntityFactory.java】创建对象工厂模型

public class EntityFactory {public static <T> T getInstance(Class<T> t) {try {return (T)t.newInstance();} catch (Exception e) {e.printStackTrace();}return null;}
}

2.4【DaoFactory.java】模拟Spring容器的单例模式

//假设dao.properties内有内容:userDao =cn.hw.dao.impl.UserDaoMySQLImpl
//创建Dao具体事例的工厂
public class DaoFactory {//恶汉式单例类private static DaoFactory instance = new DaoFactory();private DaoFactory(){//构造方法私有,不允许别人生成该工厂}public static DaoFactory getInstance(){//自己new一个实例return instance;}private static String userDaoImplClassName;static {try {InputStream in = DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties");Properties props= new Properties();props.load(in);userDaoImplClassName = props.getProperty("userDao");} catch (IOException e) {e.printStackTrace();}}public UserDao getUserDao(){try {return (UserDao)Class.forName(userDaoImplClassName).newInstance();} catch (Exception e) {throw new RuntimeException();}}
}

2.5【EntityDao.java】★★利用泛型重构dao层

/**注意:DaoImpl层要继承该类,如:public class DepartmentDaoImpl extends BaseDaoImpl<Department> implements DepartmentDao<Department>{}
*/
//★★理解:在public后面写<T> 是用来声明T为泛型标识符
public class EntityDao extends HibernateUtils{//在创建EntityDao时就应该传值/*** 查找所有的数据* @param classt* @return*///没写工厂之前的写法public <T> List<T> findAll(Class<T> t){Session session = sessionFactory.openSession();List<T> list = session.createQuery("from "+t.getName()).list();//★★注意from后面的空格session.close();return list;}public <T> T findById(Class<T> t,Serializable id){Session session = sessionFactory.openSession();T tobject = (T) session.get(t, id);session.close();return tobject;}public <T> void saveEntry(T t){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();session.save(t);transaction.commit();session.close();}public <T> void updateEntry(T t){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();session.update(t);transaction.commit();session.close();}public <T> void deleteEntry(Class<T> t,Serializable id){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();T tObject = this.findById(t, id);session.delete(tObject);transaction.commit();session.close();}public <T> T findUser(Class<T> t,String username,String password){Session session = sessionFactory.openSession();Query query = session.createQuery("from User where username=:username and password=:password");query.setString("username", username);query.setString("password",password);T tt = (T)query.uniqueResult();session.close();return tt;}
}
///泛型Dao层进行测试
public class EntityDaoTest extends HibernateUtils{@Testpublic void testfindAll(){EntityDao entityDao = new EntityDao();List<User> userList = entityDao.findAll(User.class);System.out.println(userList.size());}@Testpublic void testfindById(){EntityDao entityDao = EntityFactory.getInstance(EntityDao.class);User user = entityDao.findById(User.class,1L);System.out.println(user.getUsername());}@Testpublic void testsaveEntry(){EntityDao entityDao = EntityFactory.getInstance(EntityDao.class);User user = new User();user.setEmail("123@163.com");user.setPassword("1234");user.setPhone("186***");user.setSex("1");user.setUsername("hyc");entityDao.saveEntry(user);}
}

3. 框架使用

【BaseAction.java】Struts2框架用泛型基类Action:属性驱动、指定常量

///封装一些公用的内容,注意继承ActionSupport。
/// ★★模型驱动: Action类实现ModelDriven<javaBean>,并实现其内未实现的方法getModel()
public class BaseAction<T> extends ActionSupport implements ModelDriven<T>{private String message;//处理ajax产生的异常信息public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}private Class classt;public BaseAction(){ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();this.classt = (Class) type.getActualTypeArguments()[0];try {this.t = (T) this.classt.newInstance();} catch (Exception e) {e.printStackTrace();}}private T t;public T getModel(){return this.t;}//跳转到列表页面public static final String LISTACTION = "listAction";//跳转到添加页面public static final String ADDUI = "addUI"; //添加到修改页面public static final String UPDATEUI = "updateUI";//action跳转到actionpublic static final String ACTION2ACTION = "action2action";public String listAction = LISTACTION;public String addUI = ADDUI;public String updateUI = UPDATEUI;public String action2action = ACTION2ACTION;
}

3.1【HibernateUtil.java】利用Hibernate建立sessionFactory的

public class HibernateUtil{public static SessionFactory sessionFactory;static{Configuration config = new Configuration();//源码指定默认配置文件:hibernate.cfg.xmlconfig.configure();sessionFactory = config.buildSessionFactory();}
}

3.2 【BaseDaoImpl.java】注入HibernateTemplate,实现CURD+RId

//★★★由于这里的BaseDao中的参数T还不能具体确定,所以在BaseDaoImpl上面只能继续T
public class BaseDaoImpl<T> implements BaseDao<T> {//★这里的BaseDaoImpl<T>看成是被参数化的类型/**★★★* 这里的BaseDaoImpl<T>无法给它new对象,但是这个类中却可以用this,这个this代表的是BaseDaoImpl<T>的子类* 所以用ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperClass();* 可以得到将来有了子类的BaseDaoImpl<T>的类对象。但是这段代码怎么加在这个类中了?如果在本类中将其加在一个单独的方法中* (如aa()),则谁继承BaseDaoImpl,谁就要调用这个类中的aa()方法。这样不合理。* 要求:子类创建对象时就要自动调用aa()方法,而不要单独程序再调用aa()方法来执行这一步* 解决方案1:static语句块,但是static语句块中不能用this,因为static语句块是先于对象加载的。所以该方案不行* 解决方案2:B类继承A类:则B类创建对象的时候会调用A类默认的无参构造函数*/private Class classt;public BaseDaoImpl(){//★ParameterizedType就是泛型ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();//★getActualTypeArguments()[0]就是得到<T>【看源码】,把这个T转成Classthis.classt = (Class)type.getActualTypeArguments()[0];}@Resource(name="")//★注解可以代替get和set方法(下面的get和set方法可以不写)public HibernateTemplate hibernateTemplate;//★★必须用public,因为子类要用public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}//得到所有实体对象的集合public Collection<T> getAllEntry() {return this.getHibernateTemplate().find("from "+this.classt.getName());}//依据Id得到实体对象public T getEntryById(Serializable id) {//★★这里要传T的class形式,但是T没有class形式:【ParameterizedType】return (T)this.hibernateTemplate.get(classt, id);}//更新实体对象public void updateEntry(T t) {this.hibernateTemplate.update(t);}//保存实体对象public void saveEntry(T t) {this.hibernateTemplate.save(t);}//删除实体对象public void deleteEntry(Serializable id) {T t = this.getEntryById(id);this.getHibernateTemplate().delete(t);}
}

3.3 【SpringInit.java】spring容器初始化的工具类

public class SpringInit {public static ApplicationContext context;static{context = new ClassPathXmlApplicationContext("applicationContext.xml");}
}

java中常用的工具类相关推荐

  1. java中常用的工具类(二)FtpUtil, 汉字转拼音,zip工具类,CollectionUtil,MathUtil,

    下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java package com.itjh.javaUtil;import java.io.File; import ...

  2. java获取属性工具类,Java中常用的工具类总结

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 有了这些轮子,会使代码更加简洁,优美, 但是需要经常看看大佬的源码, 这样才会有进步! 不能光会用 ...

  3. Android项目中常用的工具类集(史上最全整理)

    如果你是一名有经验的Android开发者,那么你一定积累了不少的工具类,这些工具类是帮助我们快速开发的基础.如果你是新手,那么有了这些辅助类,可以让你的项目做起来更加的简单. 下面介绍一个在GitHu ...

  4. 《Java并发编程的艺术》——Java中的并发工具类、线程池、Execute框架(笔记)

    文章目录 八.Java中的并发工具类 8.1 等待多线程完成的CountDownLatch 8.2 同步屏障CyclicBarrier 8.2.1 CyclicBarrier简介 8.2.2 Cycl ...

  5. 《Java并发编程的艺术》读后笔记-Java中的并发工具类(第八章)

    文章目录 <Java并发编程的艺术>读后笔记-Java中的并发工具类(第八章) 1.等待多线程完成的CountDownLatch 2.同步屏障CyclicBarrier 2.1 Cycli ...

  6. java ftp ftpclient_详解JAVA中使用FTPClient工具类上传下载

    详解JAVA中使用FTPClient工具类上传下载 在Java程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件.本文简单介绍如何利用jakarta commons中的FTPClie ...

  7. java并发编程中常用的工具类 Executor

    /***************************************************  * TODO: description .  * @author: gao_chun  * ...

  8. java项目常用的工具类

    前言 在开发过程中,我们会遇到很多繁琐或者棘手的问题,但是,这些问题往往会存在一些便捷的工具类,来简化我们的开发,下面是我工作中经常使用到的工具类 常用工具类 日期工具类 import java.te ...

  9. java 项目中常用的工具类总结

    1.文件 1.根据图片的链接,下载图片 package com.lingxu.module.BigDataJoinMessage.util;import java.io.FileOutputStrea ...

最新文章

  1. iOS10 权限崩溃问题
  2. LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法
  3. ATTENTION QKV理解
  4. 进来进程有人问表空间的迁移问题
  5. poj 3680 Intervals(离散化+费用流)
  6. 代码艺术~优雅的编程字体及对字体的感觉
  7. spring mvc学习(33):原生apiSpring MVC过滤器-HiddenHttpMethodFilter
  8. Poj 1006 / OpenJudge 2977 1006 Biorhythms/生理周期
  9. 获取时间戳及转化为yyyyMMdd格式的时间
  10. 韩寒式的幽默-屌丝回忆录
  11. 创建APPLEID 和申请成为开发者
  12. IETESTER ie10.local 下载
  13. ios 扫码枪外设 键盘模式_iPadOS 显威力,苹果 iPad Pro 终于用上带触控板的外接键盘...
  14. 相忘江湖不如相濡以沫(II)
  15. 美化微信小程序的界面--微信小程序开发中使用vant的完整步骤
  16. 阿里云ecs配置ssh
  17. 完整 Python中切片说明 arr [start: end: step] (arr [-1]、arr[:-1]、arr [::-1] 等的区别)
  18. 如何遍历java对象属性
  19. C#进行MapX二次开发之MapX基础知识
  20. 【国六总结】蓝桥杯复习资料(含外设代码)

热门文章

  1. 员工离职2个月,前领导要求他回去改代码,员工:收费5千一次
  2. Python各类库的简介(转)
  3. MFC修改界面图标时,已导入.ico文件,但是程序运行后,界面不显示更新后的新图标
  4. Linux I2C设备regmap机制简析
  5. PS朋友们有福了 PhotoShop CS2 最新汉化补丁出炉
  6. 如何提高app下载量(appstore下载量)
  7. 世纪佳缘发布婚恋观报告 “90”后和高学历人群更焦虑
  8. Excel匹配两列相同内容到同一行
  9. Javaweb 成语接龙(实验)
  10. 超级码力在线编程大赛初赛第1场-1-树木规划题解