03 2014 档案

摘要:java作用域public ,private ,protected 及不写时的区别在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友。1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。3、protected:protected对于子女、朋 阅读全文
posted @ 2014-03-31 12:04 简简-单单 阅读(325) 评论(0) 推荐(0)
摘要:动态方法调用在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多第一种方式:指定method属性这种方式我们前面已经用到过,类似下面的配置就可以实现redirect/WEB-INF/JspPage/chapter2/plaintext.jsp第二种方式:感叹号方式(需要开启),官网不推荐使用这种方式,建议大家不要使用.用这种方式需要先开启一个开关将此常量设置为true,这种方式才能使用,使用见示例Actionpackage chapter3.action;public class Chapter3Action {public 阅读全文
posted @ 2014-03-30 22:44 简简-单单 阅读(218) 评论(0) 推荐(0)
摘要:一、 IoC(Inversion of control): 控制反转1、IoC:概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean二、AOP(Aspect-Oriented Programming): 面向方面编程1、 代理的两种方式:静态代理: 针对每个具体类分别编写代理类; 针对一个接口编写一个代理类;动态代理:针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类2、 AOP的主要原理:动态代理Sprin 阅读全文
posted @ 2014-03-27 23:14 简简-单单 阅读(221) 评论(0) 推荐(0)
摘要:Hibernate和MyBatis的区别Hibernate简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。一、基本功能Hibernate作为数据持久化的中间件,足以让数据库在业务逻辑层开发中去冬眠。它通过可扩展标记语言(XML)实现了类和数据表之间的 阅读全文
posted @ 2014-03-27 23:04 简简-单单 阅读(1114) 评论(0) 推荐(0)
摘要:最近做了一个Hibernate与MyBatis的对比总结,希望大家指出不对之处。第一章Hibernate与MyBatisHibernate是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。Mybatis是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。MyBatis参考资料官网:http://www.mybatis.org/core/zh/index.htmlHibernate参考资料:http://docs.jboss.org/hibernate/core/3.6/reference/zh-CN/html_single 阅读全文
posted @ 2014-03-27 22:52 简简-单单 阅读(277) 评论(0) 推荐(0)
摘要:hibernate和mybatis的之CRUD封装差别以下讲的是基于MVC三层架构。由于设计架构的差别,hibernate在实际编程中可以把基础的CRUD封装,比如BaseDao类。其它类只要去继承BaseDao就能执行所有的基础的CRUD。这样就非常方便。这个带来的好处还有,可以建立BaseService和BaseAction。由于mybatis的映射文件中,虽然SQL语句中的表名可以通过parameterType指定,但是resultType必须定死,不能以参数的形式给予指定。导致的结果就是所有的DAO类的每个CRUD都必须和指定的映射文件绑定在一起,以至于不可能存在BaseDao类。当然 阅读全文
posted @ 2014-03-27 22:20 简简-单单 阅读(254) 评论(0) 推荐(0)
摘要:上图来源于Struts2官方站点,是Struts 2 的整体结构。一个请求在Struts2框架中的处理大概分为以下几个步骤1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action4 如果ActionMapper决定需要调用某 阅读全文
posted @ 2014-03-27 22:13 简简-单单 阅读(134) 评论(0) 推荐(0)
摘要:共四种方式:其中前两种得到的是Map 后两种得到的才是真正的request对象而Map就是把request对象中的属性取出做成了键值对而已。【方法一】public class LoginAction { private Map request; private Map session; private Map application; public String execute() { request = (Map)ActionContext.getContext().get("request"); session = ActionC... 阅读全文
posted @ 2014-03-26 18:22 简简-单单 阅读(223) 评论(0) 推荐(0)
摘要:简单来说,有很多相关的方法都加载进来,你直接调用就行了,而且在安全上和稳定性上做了很好的处理实际上继承ActionSupport之后 就等同于实现了很多接口 Action,Validateable,ValidationAWare,TextProvider,LoacalProvider,Serializable可以提供数据校验 序列化 国际化等功能当然 如果不继承ActionSupport 而是自己实现上述接口 效果也是一样的.继承ActionSupport只是为了一次性实现多个接口方便而已. 阅读全文
posted @ 2014-03-26 17:56 简简-单单 阅读(797) 评论(0) 推荐(0)
摘要:requestrequest 对象是 javax.servlet.httpServletRequest类型的对象。 该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。responseresponse 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作用域,它只在JSP页面内有效。session1.什么是session:从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时 阅读全文
posted @ 2014-03-26 09:26 简简-单单 阅读(182) 评论(0) 推荐(0)
摘要:jQuery选择器的分类1、基本选择器2、层次选择器3、过滤选择器4、表单选择器1、基本选择器#id : 根据给定的id匹配一个元素,返回单个匹配的元素:eg:$(#t)选取id为t的元素.class:根据给定的类名匹配元素,返回集合元素,eg:$(".t")选取所有class为t的元素elements:根据给定的元素名匹配元素,返回集合元素eg:$("p")选取所有的元素*:匹配所有的元素,返回集合元素eg:$("*")选取所有的元素选择器匹配:将每一个选择器匹配到的元素合并后一起返回eg:$("div,span,p.my 阅读全文
posted @ 2014-03-25 18:13 简简-单单 阅读(2052) 评论(0) 推荐(0)
摘要:Hibernate工作原理及为什么要用?原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的读取并解析映射信息3.通过config.buildSessionFactory();//创建SessionFactory4.sessionFactory.openSession();//打开Sesssion5.session.beginTransaction();//创建事务Transation6.persistent operate持久化操作7.session.getTransaction 阅读全文
posted @ 2014-03-24 09:45 简简-单单 阅读(137) 评论(0) 推荐(0)
摘要:Servlet生命周期与工作原理Servlet生命周期分为四个阶段: 1、服务器启动加载servlet并实例化 2,初始化阶段 调用init()方法 3,响应客户请求阶段 调用service()方法 4,终止阶段 调用destroy()方法一、加载servlet并实例化过程做了哪些时:服务器启动时自动装载Servlet,读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。 Servlet被装载后,Servlet容器创建一个Servlet实例并且调用S... 阅读全文
posted @ 2014-03-20 11:07 简简-单单 阅读(119) 评论(0) 推荐(0)
摘要:J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。连接池的基本工作原理1、基本概念及原理由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配?释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。 阅读全文
posted @ 2014-03-20 10:40 简简-单单 阅读(526) 评论(0) 推荐(0)
摘要:package com.ljn.base;/** * @author lijinnan * @date:2013-9-12 上午9:55:32 */public class IncDecThread2 { /** * 测试次数 */ public static final int TEST_COUNT = 20; /* * 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1 * 两个问题: * 1、线程同步--synchronized * 2、线程之间如何共享同一个j变量--... 阅读全文
posted @ 2014-03-20 10:19 简简-单单 阅读(463) 评论(0) 推荐(0)
摘要:1.标签取值方式一 通过取值 当Action的valueStack中有该属性的值时,只需直接使用该属性的名字即可; 当Action的valueStack中没有该属性的值时,比如在session,application范围中的属性值时,需要加#或者#attr.; 例子: 假设某Action中有person成员变量,在application中存在company属性 那么我们可以通过以下方法取值: //无法取到,因为company不在action的valueStack中 2.标签取值方式二在任意的标签内使用%{}来取值当Action的valueStack中有该属性的值时,只需直接使用该属性的名... 阅读全文
posted @ 2014-03-19 14:59 简简-单单 阅读(213) 评论(0) 推荐(0)
摘要:mybaits 简介1、mybaits 简介mybatis,前称ibatis,后改名为mybatis,截止本文成文,最新 版本是3.0.6。它和hibernate 是java世界使用最多的两种orm 框 架。hibernate 理念最为先进,完全实现面向对象的数据库编程,不需要掌握sql 语句,即可实现数据库操作,能够节省开发人员编 写大量sql语句的时间。但是,hibernate 在处理多表关联时,可 能会出现n+1 问题,性能会有较大影响,要解决性能问题,需要较 深的hibernate 知识和项目经验。mybatis 需要自己写sql 语句, 开发效率不如hibernate,很难做到底层多 阅读全文
posted @ 2014-03-19 14:10 简简-单单 阅读(230) 评论(0) 推荐(0)
摘要:Java开发JDBC连接数据库创建一个以JDBC连接数据库的程序,包含6个步骤:JDBC五部曲1.加载驱动2.获得链接3.获取statement对象4.执行SQL语句5.产生resultset对象6.关闭链接1、加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(StringclassName)实现。 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }cat... 阅读全文
posted @ 2014-03-19 13:59 简简-单单 阅读(222) 评论(0) 推荐(0)
摘要:MyBatis的动态SQL详解 MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑。MyBatis中用于实现动态SQL的元素主要有:ifchoose(when,otherwise)trimwheresetforeachif就是简单的条件判断,利用if语句我们可以实现某些简单的条件选择。先来看如下一个例子:Xml代码 这条语句的意思非常简单,如果你提供了title参数,那么就要满足title=#{title},同样如果你提供了Content和Owner的时候,它们也需要满足相应的条件,之后就是返回满足这些条件的所有Blog,这是非常有用的一个功能.. 阅读全文
posted @ 2014-03-19 13:43 简简-单单 阅读(187) 评论(0) 推荐(0)
摘要:Spring整合StrutsSpring整合Struts为什么整合?使用Spring的IOC功能将业务类注入Action由Spring创建并管理ActionSpring容器通过Web容器启动(配置监听器ContextLoaderListener即可完成)步骤:1、如何启动Spring容器?配置监听器ContextLoaderListener即可完成,在web.xml中配置contextConfigLocationclasspath:applicationContext.xmlorg.springframework.web.context.ContextLoaderListener2、将创建Ac 阅读全文
posted @ 2014-03-18 21:59 简简-单单 阅读(163) 评论(0) 推荐(0)
摘要:Spring整合Hibernate的步骤为什么要整合Hibernate?1、使用Spring的IOC功能管理SessionFactory对象LocalSessionFactoryBean2、使用Spring管理Session对象HibernateTemplate3、使用Spring的功能实现声明式的事务管理整合Hibernate的步骤:1、配置SessionFactory(可以自动完成)2、配置HibernateTemplate,用于完成数据操作3、让Common继承HibernateDaoSupport类,该类提供了HibernateTemplate的getter和setter方法。4、将h 阅读全文
posted @ 2014-03-18 21:58 简简-单单 阅读(292) 评论(0) 推荐(0)
摘要:Struts2—整合SpringSpring框架是一个非常优秀的轻量级javaEE容器,大部分javaEE应用,都会考虑使用Spring容器来管理应用中的组件。Struts2是一个MVC框架,是一个web层的解决方案。它提供了非常简单的方式来完成与Spring的整合.1.整合思路 将Struts2中的Action交给Spring容器来负责生成,管理。通过这种方式,可以充分利用Spring容器的IOC特性,为Action注入业务逻辑组件。(Action被看成是控制器组件)2.Struts2的插件机制 Struts2可以与任何JavaEE框架进行整合。Struts2提供插件机制与大部分流行的Ja. 阅读全文
posted @ 2014-03-18 21:54 简简-单单 阅读(342) 评论(0) 推荐(0)
摘要:一、预研任务介绍和预研目标任务介绍:与Hibernate相比,MyBatis是一个半自动化的持久层框架,以轻量级、效率高、原生代而好评如潮。虽然有在分享会上大致讲解,但是还是重新梳理成文字,方便后来人查阅。预研目标:编写并讲解MyBatis与持久层结合的demo,实际应用起这门新技术。二、操作步骤1.jar包准备备注:mybatis.jar是mybatis的核心,mybatis-spring是mybatis团队出品的mybatis整合spring工具包。2.准备工作1)在数据库(MySQL)上的test数据库新建如下表格并添加测试数据:CREATE TABLE sys_employees ( 阅读全文
posted @ 2014-03-18 14:44 简简-单单 阅读(812) 评论(0) 推荐(0)
摘要:以接口的方式编程: 只需要修改两个地方即可,1、mapper.xml(实体类)配置文件,注意mapper的namespace的名字是mapper对象的完整路径名com.xiamen.mapper.PersonMapper(这样session就可以getMapper了)因为mybatis的作用就是:使得接口绑定成为可能。注意,接口中方法名 selectUserByID 必须与 PersonMapper.xml 里面配置的 select 的id 对应(<select id="selectUserByID")2、程序调用:PersonMapper funDao = sess 阅读全文
posted @ 2014-03-17 13:51 简简-单单 阅读(221) 评论(0) 推荐(0)
摘要:Mapper的方式总结: 阅读全文
posted @ 2014-03-17 11:50 简简-单单 阅读(314) 评论(0) 推荐(0)
摘要:MyBatis实例教程--开发环境搭建准备工作: 1、mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。2、创建用户表,并插入一条测试数据Create TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`userName` varchar(50) DEFAULT NULL,`userAge` int(11) DEFAULT NULL,`userAddress` varchar(200) DEFAULT NULL,PRIMARY KEY (`id`. 阅读全文
posted @ 2014-03-17 10:56 简简-单单 阅读(301) 评论(0) 推荐(0)
摘要:什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.orm工具的基本思想无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.2. 由sessionfactory产生 session3. 在session 中完 阅读全文
posted @ 2014-03-17 10:27 简简-单单 阅读(334) 评论(0) 推荐(0)
摘要:背景资料 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis[1]。[2]iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)简介 MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。 MyBatis 使... 阅读全文
posted @ 2014-03-14 09:48 简简-单单 阅读(524) 评论(0) 推荐(0)
摘要:JAVA内存管理首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!!一、内存管理原理:在java中,有java程序、虚拟机、操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交互!这就保证了java程序的平台无关性!下面我们从程序运行前,程序运行中、程序运行内存溢出三个阶段来说一下内存管理原理!1、程序运行前:JVM向操作系统请求一定的内存空间,称为初始内存空间!程序执行过程中所需的内存都是由java虚拟机从这片内存空间中划分的。2、程序运行中:java程序一直向java虚拟机申请内存,当程序所需要的内存空间超出初始内存空间时,java虚拟机会再次向操作系统申请更多 阅读全文
posted @ 2014-03-13 10:13 简简-单单 阅读(239) 评论(0) 推荐(0)
摘要:1、JAVA初学者都应该搞懂的问题对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。 这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为Stri 阅读全文
posted @ 2014-03-13 10:09 简简-单单 阅读(236) 评论(0) 推荐(0)
摘要:Java内存管理特点 Java一个最大的优点就是取消了指针,由垃圾收集器来自动管理内存的回收。程序员不需要通过调用函数来释放内存。 1、Java的内存管理就是对象的分配和释放问题。 在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。 对象的释放是由GC决定和执行的。 在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线的方法简化了程序员的工作。但也加重了JVM的工作。这也是Java程序运行速度较慢的原因之一。 GC释放空间方法: 监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等 阅读全文
posted @ 2014-03-13 10:03 简简-单单 阅读(326) 评论(0) 推荐(0)
摘要:Java中String类细节问题 (考察点Java内存分配问题)1. String str1 = "abc"; System.out.println(str1 == "abc");步骤:1) 栈中开辟一块空间存放引用变量str1,2) String池中开辟一块空间,存放String常量"abc",3) 引用str1指向池中String常量"abc",4) str1所指代的地址即常量"abc"所在地址,输出为true2. String str2 = new String("abc&quo 阅读全文
posted @ 2014-03-13 09:55 简简-单单 阅读(196) 评论(0) 推荐(0)
摘要:String类一、String类的用途 对字符串的存储与操作,即包含多个字符的字符数据,这个String类提供了数值不可改变的字符串。 String类为什么不可改变的字符串,因为String类是fanil类型的,用final标记的类是不能被继承的,不能被修改的。二、注意事项 1、String对象的初始化由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语言”;其实按照面向对象的标准语法,其格式应该为: String s = new String(“abc”); s = ne.. 阅读全文
posted @ 2014-03-13 09:32 简简-单单 阅读(203) 评论(0) 推荐(0)