- 博客(58)
- 资源 (1)
- 收藏
- 关注
原创 Hibernate+spring+struts1的整合
现在一般的项目都是整合的struts2,现在也介绍下怎么样整合struts1,和struts2的整合有诸多类似的。 一.首先明确开发需要解决的问题确定使用的框架,使用的框架又需要引入必要jar包和其他辅助类jar包,所以第一步是引入一般情况下需要的jar包: Hibernate:hibernate3.jar lib\optional\ehcache\ehcache-1.5.0.jar slf
2016-03-30 15:39:41 569
原创 Spring+JDBC的简单配置和开发
目前很多的公司采用了spring+jdbc的配置开发项目,下面介绍怎么配置环境到开发时候的注意事项: ①引入必要的jar文件 JDBC驱动(mysql为例): mysql-connector-5.1.7.jar 数据库连接池(dbcp为例): commons-dbcp.jar commons-pool.jar spring核心必须包: spring.j
2016-03-28 17:23:05 8512
原创 AOP中通知技术
AOP中的通知可分为:前置,后置,异常,环绕,最终通知,在spring中,可以使用两种方式来实现这个技术:1.使用xml的配置实现①引入AOP命名空间:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://ww
2016-03-28 15:58:33 717
原创 AOP技术简介与简单实现
AOP:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发
2016-03-28 10:45:12 1041
原创 浅析spring中注解的运行
为了了解注解的运行机制,需要自定义一个注解,如下方式来模拟注解方式实现注入对象: 1.新建一个自定义注解MyResource.java@Retention(RetentionPolicy.RUNTIME) // 定义注解有效期为运行期@Target({ElementType.FIELD,ElementType.METHOD}) // 定义可以注解的位置public @interface MyR
2016-03-25 16:34:01 508
原创 注入依赖对象手工装配
依赖对象的注入分手工装配和自动装配两种方式,在不是很清楚工具的情况下,还是建议手工装配避免很多不必要的错误,而手工装配依赖对象的注入分两种情况: 1.使用bean.xml文件通过构造器或者setter方式装配,这样会是让bean的配置文件过于庞大 2.使用Java中的注解机制 bean.xml的方式在前面已经介绍过,现在使用注解方式需要哪些必要配置,如下: 一. 引入命名空间<?xml ve
2016-03-25 14:48:06 648
原创 浅析使用Setter方法的注入bean的机制
首先按照spring使用属性注入其他的bean配置bean.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x
2016-03-25 11:05:44 515
原创 依赖注入的方式和注入的配置实例
Spring容器是一个IOC容器,通过反转拿到对象然后使用依赖注入到目标组件,下面使用依赖注入,把daobean注入到servicebean的来年各种方式: 首先看一下基本类型对象的注入: 1.使用构造器注入public class PersonServiceBean implements PersonService{ private PersonDao personDao; // 接口
2016-03-24 14:49:01 777
原创 Spring中bean初始化时机初始化方法和销毁方法
Spring只Bean加载机制默认情况下是初始化容器的时候就会直接初始化,但是也取决于是否使用了懒加载,如果使用到懒加载bean只会在实例化的时候才会加载,容器初始化时候则不加载。这样做不能使bean直接在容器初始化的时候暴露问题,而是在运行期才能暴露问题,所以要慎用懒加载,只有使用一些特定的功能的时候使用较好。同时可以配置初始化方法和销毁方法。 Example: bean.xml配置<?xml
2016-03-24 14:39:54 1471
原创 比较Spring中三种实例化Bean的方法
1 使用构造器实例化<!-- 调用默认构造器实现 --><bean id="personService" class="com.heying.service.impl.PersonServiceBean"/>2 使用静态工厂<!-- 通过id找到创建的工厂类,并使用注明的静态方法找到相应的method --><bean id="personService" class="com.heying.s
2016-03-23 16:52:40 523
原创 浅析Spring中ClassPathXmlApplicationContext()的装配过程
public class MyClassPathXmlApplicationContext { private List<XmlBeanDefinition> beanDefinitions = new ArrayList<XmlBeanDefinition>(); private Map<Object, Object> sigletons = new HashMap<Object,
2016-03-18 14:47:44 372
原创 Spring2.5的基本配置
学习Spring之前,先了解Spring到底是什么? spring是一个开源的控制反转(Inversion of Control ,简称IOC)和面向切面的(AOP)的容器框架,他主要的目的是简化企业开发。 (一)怎么理解控制反转? 看下面一个例子:Public class PersonServiceBean{ private PersonDao personDao = ne
2016-03-18 10:54:10 555
原创 Tomcat配置JNDI数据源
数据库连接池这个概念应该都不陌生,在Java中连接池也就是数据库的连接池,它是一种采用连接复用的思想避免多次连接造成资源的浪费机制。最常见的连接池就是DBCP和C30P了,在tomcat中默认使用的DBCP的连接池,在Hibernate中则默认使用的是C3P0。他们的区别对于使用者来说最明显的就是,默认情况下DBCP不提供空闲连接的释放,需要手动开启。tomcat目录下的context.xml里面配
2016-03-17 22:14:41 409
原创 Struts1的基本配置
要学习struts1,先了解struts1的特性和注意的事项: 1.struts1中是使用抽象类而不是接口,因此开发Action类继承一个抽象的基类; 2. struts1的Action是单例模式,并且必须是线程安全的,因为只有Action的一个实例来处理所有的请求,所以在开发的时候要格外小心,Action资源必须是线程安全的或同步的; 3. Struts1 Action的主要是通过ex
2016-03-17 15:02:01 631
原创 Reader读取文件
Reader in = new InputStreamReader(new BufferedInputStream(new FileInputStream("d.dat")),"UTF-8"); int c = in.read(); System.out.println((char)c); int a = in.read(); Syst
2016-03-16 15:20:42 1034
原创 使用RandomAccessFile进行文件的复制
RandomAccessFile src = new RandomAccessFile("JAVA_SE.rar","rw"); // 原文件 RandomAccessFile des = new RandomAccessFile("JAVA_SE_COPY.rar","rw"); // 目标文件 long start = System.currentTimeMi
2016-03-16 15:19:50 1642
原创 使用RandomAccessFile进行文件的读写
RandomAccessFile raf = new RandomAccessFile("test.txt","r"); byte[] buf = new byte[40]; int len = raf.read(buf); System.out.println("读取的字节>>>> "+len); System.out.println(
2016-03-16 15:17:30 476
原创 PrintWriter的使用写一行文本
PrintWriter out = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream("d.dat")),"UTF-8")); out.print("这是第一行"); out.print("这是第2行"); out.close();
2016-03-16 15:16:04 708
原创 持久化操作(写入文件)
FileOutputStream fos = new FileOutputStream("persion.obj"); ObjectOutputStream oos= new ObjectOutputStream(fos); List<String> list = new ArrayList<String>(); list.add("name1");
2016-03-16 15:13:17 292
原创 通过ObjectOutputStream序列化和使用ObjectInputStream反序列化
ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("test.dat"))); oos.writeObject("hello++++12345"); oos.writeObject("is verygood"); o
2016-03-16 15:12:25 663
原创 复制图像打水印
String src = "img.jpg"; // 源文件 String dec = "img_1.jpg";// 目标文件 /* * 1. 读取源文件为图像文件 * 2. 给Image对象绘制签名 * 3. 写出Image对象到文件系统 */ InputStream in = n
2016-03-16 15:10:30 315
原创 FileInputStream和FileOutputStream使用
1.FileInputStream FileInputStream fis = new FileInputStream("JAVA_SE.rar"); int d = fis.read(); System.out.println(d); System.out.println("--------------------------------
2016-03-16 15:08:31 292
原创 文件过滤器
/** * 文件过滤器 * @author Heying * */public class FileFlterDemo { public static void main(String[] args) throws Exception { File file = new File("./"); FileFilter filter = new MyFil
2016-03-16 15:01:50 216
原创 File文件的基本属性
File dir = new File("./"); // 当前目录// if(dir.exists()){// if(dir.isDirectory()){// String[] subs // = dir.list();// for(String name : subs){
2016-03-16 14:51:50 469
原创 字符格式化
String s = "ABCD中国人"; // Byte 数组 byte[] bytes = s.getBytes("UTF-8"); System.out.println(bytes.length); // 目前编码为utf-8 为13字节 byte序列 System.out.println(Arrays.toString(by
2016-03-16 14:49:55 257
原创 FileWriter和FileReader
// FileOutputStream fos = new FileOutputStream("test_2.txt");// OutputStreamWriter osw = new OutputStreamWriter(fos); /* * FileWriter可以向给定的文件中写出字符 * FileWriter不允许修改字
2016-03-16 14:48:02 277
原创 字符流定义字符集
BufferedReader bfr = new BufferedReader( new InputStreamReader( new BufferedInputStream( new FileInputStream("test.txt")
2016-03-16 11:28:56 341
原创 使用输入输出流实现文件复制
FileInputStream fis = new FileInputStream("JAVA_SE.rar"); FileOutputStream fos = new FileOutputStream("JAVA_SE_COPY.rar"); long start = System.c
2016-03-16 11:21:29 2299
原创 高级流实现数据的写入与读取
// 1. 写 DataOutputStream dos = new DataOutputStream( new BufferedOutputStream( new FileOutputStream("test.dat"))); // 整数拆4个byte写入到文件 dos.writeInt(0);
2016-03-16 11:20:02 625
原创 创建文件和目录
File file = new File("demo.txt"); if(!file.exists()){ file.createNewFile(); } File dirs = new File( "a" + File.separator + "b" + File
2016-03-16 10:32:11 326
原创 基于Socket和ServerSocket实现通信
服务器端:package socketClient;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStr
2016-03-15 17:59:10 438
原创 使用throw new Exception 向外层抛异常
public static void main(String[] args) { Human man = new Human(); try { man.setAge(120); } catch (Exception e) { e.printStackTrace(); } }
2016-03-15 17:55:05 8927
原创 异常抛出顺序从小到大
/** * 抛出异常里到外-小到大 * @author Heying * */ System.out.println("****start****"); try { String a = null; System.out.println(a.leng
2016-03-15 17:53:57 1041
原创 自然排序和自定义排序
/* * 自然排序 */ public static void sort1(){ List<String> list = new ArrayList<String>(); list.add("three"); list.add("one"); list.add("
2016-03-14 16:02:06 648
原创 队列进出原则
/** * 队列存取元素遵循先进先出原则 * @author Heying_He * */ public static void main(String[] args) { firstQueue(); System.out.println("**************FUN2*****************");
2016-03-14 15:59:20 4445
原创 遍历HashMap
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("W1", 1); map.put("W2", 2); map.put("W3", 3); /* * 获取所有的key * Set keySet() *
2016-03-14 15:58:21 336
原创 重写比较
/** * 1.Object equals 方法 用于比较对象是否相等。<br/> * 2.比较是否是同一个对象(同一个体)使用 ==<br/> * 3.比较两个不同的对象,在逻辑上是否一样需要使用 equals 方法。<br/> * ##建议重写equals方法实现对象是否相等比较<br/> * @author Heying * */ public static void mai
2016-03-14 15:56:00 200
原创 迭代队列
Queue<String> queue = new LinkedList<String>(); queue.add("A"); queue.add("B"); queue.add("C"); queue.add("D"); queue.add("E"); queue.add("F"); Sys
2016-03-14 15:52:25 489
原创 集合转数组
LinkedList<String> l = new LinkedList<String>(); l.add("one"); l.add("two"); l.add("three"); System.out.println(l); Object []c = l.toArray(); for (int i =
2016-03-14 15:51:14 340
原创 Collection的一些基本方法
/** * 集合<br> * 1.int size():获取集合的元素个数<br> * 2.boolean add(E e):向集合中添加元素<br> * 3.boolean remove(Object o):删除给定的元素<br> * 4.boolean isEmpty():判断集合是否不含有元素<br> * 5.void clear():清除集合中所有元素<br> * 6.bool
2016-03-14 15:49:37 264
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人