12 2011 档案

摘要:<?xml version="1.0" encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframewor 阅读全文
posted @ 2011-12-30 15:21 tazi 阅读(1181) 评论(0) 推荐(0)
摘要:JdbcTemplate jdbcTemplate==new JdbcTemplate(source);//传入DataSource类型的参数它封装了jdbc中Connection对象的取得,Statement对象的建立,异常的处理,Statement和Connection的关闭等操作。它是线程安全的。如:jdbcTemplate.update("delete from person where id=?", new Object[]{id}, new int[]{Types.INTEGER});其中第三个参数可以省略。或者使用PreparedStatementCreato 阅读全文
posted @ 2011-12-30 15:19 tazi 阅读(608) 评论(0) 推荐(0)
摘要:1.Spring单个连接的数据源为<bean id="simpleDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost: 阅读全文
posted @ 2011-12-30 14:49 tazi 阅读(290) 评论(0) 推荐(0)
摘要:不用在配置文件中配置Bean,使Bean交给容器管理。1.加入context命名空间<context:component-scan base-package="com.service"/>此配置加入了很多相关的注解处理器。也包括<context:annotation-config/>所对应的处理器。2.定义base-package,使Spring自动扫描该包以及所有子包中的所有的标注了某些注解的类。3.在类上根据类的作用分别用@Service(业务层)、@Controller,@Repository(DAO层),@Component(通用)4.get 阅读全文
posted @ 2011-12-30 12:23 tazi 阅读(240) 评论(0) 推荐(0)
摘要:注入依赖对象有手工装配(推荐)和自动装配的方式。手工装配可在xml中,也可用注解方式。1.Setter2.构造器方式1 <bean id="pDao" class="PersonDaoBean"/>2 <bean id="ps" class="PersonServiceBean">3 <constructor-arg index="0" type="PersonDao" ref="pDao"/>4 <constru 阅读全文
posted @ 2011-12-30 10:22 tazi 阅读(238) 评论(0) 推荐(0)
摘要:1.Bean的作用域默认Bean的作用域是singleton,另外还有prototype(每次都创建新的实例)2.Bean什么时候被创建singleton类型的Bean默认是在Spring容器启动时创建,prototype在getBean时创建可以修改这种行为:在<bean>中的lazy-init="default","false","true"或者在<beans >属性default-lazy-init="false"3.Bean初始化时执行某个方法 init-method="& 阅读全文
posted @ 2011-12-30 08:38 tazi 阅读(271) 评论(0) 推荐(0)
摘要:1.windows下在启动服务启动监听:lsnrctl start启动服务:oradim -startup -sid orcl2.以sys身份进入 sqlplus /[@orcl] as sysdba 通过此方式就是以sys登陆3.show users显示为"sys"4.创建用户与授权SQL> create user lisi identified by lisi;用户已创建。SQL> grant create session to lisi;授权成功。SQL> grant unlimited tablespace to lisi;授权成功。SQL> 阅读全文
posted @ 2011-12-29 20:04 tazi 阅读(1354) 评论(0) 推荐(0)
摘要:1.默认都是类构造器实例化<bean id=" XX" class=""/>2.静态工厂方法。工厂类的方法是static的,直接在bean中配置class为工厂类,factory-method为指定static方法。<bean id="ps" class="com.tazi.service.PersonServiceFactory" factory-method="createPersonServiceBean"/>public classPersonServiceFac 阅读全文
posted @ 2011-12-29 19:36 tazi 阅读(232) 评论(0) 推荐(0)
摘要:1 import java.beans.Introspector; 2 import java.beans.PropertyDescriptor; 3 import java.lang.reflect.Method; 4 import java.net.URL; 5 import java.util.ArrayList; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 10 import org.apache.commons.beanutils.ConvertUt... 阅读全文
posted @ 2011-12-29 19:26 tazi 阅读(446) 评论(0) 推荐(0)
摘要:1.配置src/META-INF下persistence.xml注意文件名是固定的。 1 <?xml version="1.0" encoding="UTF-8"?> 2 <persistence xmlns="http://java.sun.com/xml/ns/persistence" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xm 阅读全文
posted @ 2011-12-28 10:40 tazi 阅读(990) 评论(0) 推荐(0)
摘要:使用注解方式 1 package junit.test; 2 3 import static org.junit.Assert.*; 4 5 import org.junit.BeforeClass; 6 import org.junit.Test; 7 import org.springframework.context.ApplicationContext; 8 import org.springframework.context.support.ClassPathXmlApplicationContext; 9 10 import com.tazi.domin.Person;11 i.. 阅读全文
posted @ 2011-12-28 10:34 tazi 阅读(292) 评论(0) 推荐(0)
摘要:加入context命名空间xmlns:context="http://www.springframework.org/schema/context"和xsi:schemaLocation中加上http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd然后使用<context:property-placeholder location="classpath:jdbc.properties&qu 阅读全文
posted @ 2011-12-28 10:30 tazi 阅读(277) 评论(0) 推荐(0)
摘要:这里使用spring2.51.配置数据源2.配置Spring事务管理使用Spring的事务管理功能,则事务的开启、提交、回滚都不用手工进行。使用注解方式(推荐)或者使用xml方式。Spring提供了针对数据源的数据源事务管理器,1 <!-- 数据源事务管理器 -->2 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" >3 <property name="dataSource&q 阅读全文
posted @ 2011-12-28 10:27 tazi 阅读(230) 评论(0) 推荐(0)
摘要:大部分仍然使用javax.persistence中的注解,有些Hibernate扩展的注解,在org.hibernate.annotations包中,如GenericGenerator.使用hibernate.cfg.xml中配置的事务,使用<mapping class="完整类名"/>加载注解的持久化类。Hibernate中可以混合使用注解和xml映射文件。注解后不能使用Configuration类,而是AnnotationConfiguration类初始化Hibernate1 SessionFactory sFactory=new AnnotationCon 阅读全文
posted @ 2011-12-27 17:48 tazi 阅读(539) 评论(0) 推荐(0)
摘要:使用@Transactional注解声明Bean底下所有业务方法需要事务管理。1.默认一个业务方法开启和结束事务,什么时候提交,什么时候回滚呢?Spring容器默认情况下对于运行期异常(unchecked Exception)会进行事务回滚,如果是用户违例(checked Exception),事务不会回滚。运行期违例:throw new RuntimeException("XXX");运行期违例不需要使用try/catch捕捉,编译可以通过用户违例,throw new Exception("XXX");必须使用try/catch捕捉,否则编译不能通过。 阅读全文
posted @ 2011-12-27 14:21 tazi 阅读(741) 评论(0) 推荐(0)
摘要:1.可以使用Spring注解来注入所依赖的对象@ResourceSessionFactory sessionFactory2.可以利用Spring提供的Open Session In View过滤器org.springframework.orm.hibernate3.support.OpenSessionInViewFilter要在web.xml文件中配置 阅读全文
posted @ 2011-12-26 21:05 tazi 阅读(150) 评论(0) 推荐(0)
摘要:1.action后缀<constant name="struts.action.extension" value="do"/>2.浏览器缓存,默认为true,开发阶段最好设置为false<constant name="struts.server.static.browsercache" value="false"/>3.重新加载struts配置文件,开发阶段设置为truestruts.configuration.xml.reload4.设置为开发阶段,可以打印更相信的出错信息struts.d 阅读全文
posted @ 2011-12-26 20:40 tazi 阅读(228) 评论(0) 推荐(0)
摘要:把类之间的继承关系反应到数据库中,三种方法(1).只用一个表,子类的属性对应数据库表中额外的字段。使用<discriminator>和<subclass>以下例子中Delivery(投递)类的两个子类PostDelivery(邮递)和ExpressDelivery(快递),注意必须在父类中也加上discrminator-value否则报“Could not format discriminator value to SQL string...”错。注意<discriminator>在除id以外的其他子元素之前,否则解析xml文件出错。 1 <class 阅读全文
posted @ 2011-12-26 14:27 tazi 阅读(1204) 评论(0) 推荐(0)
摘要:1.所需要的jar包容易丢失的是struts中的spring插件struts2-spring-plugin-2.2.3.1.jarstruts的Action由spring的对象工厂负责创建时使用的包asm-3.1.jar2.web.xml配置 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 3 xmlns:xsi="htt 阅读全文
posted @ 2011-12-25 20:56 tazi 阅读(574) 评论(0) 推荐(0)
摘要:一:传统方式(Spring1.0)使用Spring中的AOP API中定义的接口来定义Adivce(通知,做什么事情),并设置代理对象(配置文件中使用org.springframework.aop.framework.ProxyFactoryBean)然后在程序中使用这个代理对象。还有基于XML配置方式和注解方式。1.方法前通知,实现接口MethodBeforeAdivce 1 package proxy; 2 3 import java.lang.reflect.Method; 4 5 import org.springframework.aop.MethodBeforeAdvice; .. 阅读全文
posted @ 2011-12-24 10:21 tazi 阅读(465) 评论(0) 推荐(0)
摘要:java.lang.reflectInterface InvocationHandler可参考http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/reflect/InvocationHandler.htmlhttp://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/lang/reflect/Proxy.htmlinvocation是“调用”的意思。这个类可以让我们在JVM调用某个类的方法时动态的为些方法做些什么事.InvocationHandler接口把我们的代理对象和被代理对象解 阅读全文
posted @ 2011-12-23 17:01 tazi 阅读(446) 评论(0) 推荐(0)
摘要:代理对象和被代理对象必须实现同一个接口。以下定义了接口ILogin,接口的实现类Login,代理LoginProxy,测试类Test 1 package proxy; 2 3 public interface ILogin { 4 public void login(String username,String password); 5 } 6 7 package proxy; 8 9 public class Login implements ILogin{10 public void login(String username, String password) {1... 阅读全文
posted @ 2011-12-23 14:35 tazi 阅读(223) 评论(0) 推荐(0)
摘要:一.Hibernate事务处理方式Hibernate是对JDBC的封装,本身不具备事务处理能力,它将事务处理交给底层的JDBC(默认)或者JTA处理,修改Hibernate.cfg.xml文件采用JTA作为事务处理:默认配置如下,在<session-factory>中1 <property name="hibernate.transaction.factory_class">2 org.hibernate.transaction.JDBCTransactionFactory3 </property>JTA配置则改为org.hibernat 阅读全文
posted @ 2011-12-21 17:26 tazi 阅读(759) 评论(0) 推荐(0)
摘要:1 import java.io.DataInputStream; 2 import java.io.DataOutputStream; 3 import java.net.ServerSocket; 4 import java.net.Socket; 5 import java.util.Date; 6 7 8 public class Server { 9 ServerSocket serverSocket=null;10 public Server(){11 try{12 //注意,请下一次运行前关闭所有程序,否则端口号被JV... 阅读全文
posted @ 2011-12-20 20:49 tazi 阅读(325) 评论(0) 推荐(0)
摘要:1.上传(1).Action 1 public class Register extends ActionSupport{ 2 private FileuploadTool tool=new FileuploadTool(); 3 public FileuploadTool getTool() { 4 return tool; 5 } 6 public void setTool(FileuploadTool tool) { 7 this.tool = tool; 8 } 9 @Override10 publ... 阅读全文
posted @ 2011-12-20 17:55 tazi 阅读(262) 评论(0) 推荐(0)
摘要:1.从Object到String要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可(1)示例一1 Book book=new Book();2 book.setName("Java");3 book.setPrice(52.3f);4 JSONObject object=JSONObject.fromObject(book);5 System.out.println(object.toString());(2)示例二 1 Book book=new Book(); 2 book.setName(... 阅读全文
posted @ 2011-12-20 14:45 tazi 阅读(20337) 评论(3) 推荐(1)
摘要:1.创建1 create or replace procedure getLog(record_ref out sys_refcursor,inputId in log201112.id%type)2 AS3 begin4 open record_ref for5 select * from log201112 where id=inputId;6 end getLog;7 /2.调用 1 String procedure="{call getLog(?,?)}"; 2 CallableStatement cstmt=conn.prepareCall(procedure); 阅读全文
posted @ 2011-12-20 11:04 tazi 阅读(353) 评论(0) 推荐(0)
摘要:节选自:《Hibernate开发与实战》(刘伟、张利国,电子工业出版社,2009.9)有时候需要动态操作表的数据。如通过数据库记录日志信息时每个月产生一张日志表,结构都一样只是表名不同。表名取log200902等。可以利用SQLQuery对象的addEntity()动态关联持久化类和数据库表。1.oracle表1 create table log201112(2 id number(8) not null,3 content varchar2(1000),4 create_time varchar2(20) not null,5 primary key(id)6... 阅读全文
posted @ 2011-12-20 09:56 tazi 阅读(879) 评论(0) 推荐(0)
摘要:Query接口 1.list()和iterate()方法的区别在于iterate()先通过select语句查找所有id字段的值,然后如果session缓存(一级缓存)中已经存在id对应的对象就直接添加到查询结果中,否则再根据id额外查询这条记录。2.Query和Criteria共同有的方法list(... 阅读全文
posted @ 2011-12-19 17:51 tazi 阅读(3286) 评论(1) 推荐(0)
摘要:虽然可以自己写Sql,但在程序中需要动态生成Sql语句时,where子句中条件是动态产生时,使用Criteria是再好不过的选择。先看例子: Criteria criteria=session.createCriteria(Product.class); Criterion criterion1=Restrictions.between("id", 10, 15); //Criterion接口 criteria.add(criterion1); List<Product> list=criteria.list(); for(Product ... 阅读全文
posted @ 2011-12-17 14:56 tazi 阅读(1046) 评论(0) 推荐(0)
摘要:View Code12//fileName是原始的文件名(包含后缀)3intp=fileName.lastIndexOf(".");4Stringsuffix=fileName.substring(p+1,fileName.length());//后缀5StringpureName=fileName.substring(0,p);//原始文件名(不含后缀)6StringuName=fileName;//惟一文件名7intcount=1;8while(true){9Filef=newFile(dir,uName);//dir为已知的某个目录10if(f.exists())11 阅读全文
posted @ 2011-12-16 13:40 tazi 阅读(286) 评论(0) 推荐(0)
摘要:1.以sys登陆命令行>sqlplus sys/[密码] as sysdba如果出现如下错误:协议适配器错误,则在连接时加上数据库服务名(或SID)sqlplus sys/[密码]@orcl as sysdba2.创建某个存放数据库文件的目录create directory dirdp1 as 'e:\dmp1';3.把读写该目录的权限赋予给某个用户grant read,write on directory dirdp1 TO SMF;4.使用某个特定的用户连接数据库,直接在命令行中输入EXPDP语句EXPDP SMF/SMF@ORCL DIRECTORY=dirdp1 阅读全文
posted @ 2011-12-15 15:31 tazi 阅读(307) 评论(0) 推荐(0)
摘要:1.ServletActionContextHttpSession session=ServletActionContext.getRequest().getSession();session.setAttribute("user", user);ServletContext sc=ServletActionContext.getServletContext();2.ActionContextMap request=(Map)ActionContext.getContext().get("request");//注意没有getRequest()reque 阅读全文
posted @ 2011-12-14 18:55 tazi 阅读(211) 评论(0) 推荐(0)
摘要:1.<body><s:property value="#request.other"/>迭代List或数组<ol> <s:iterator value="#request.booklist" var="book"> <li><s:property value="book"/></li> </s:iterator></ol></body>必须用<s:property>才能输出值栈中的值, 阅读全文
posted @ 2011-12-14 17:35 tazi 阅读(1284) 评论(0) 推荐(0)
摘要:public class Login extends ActionSupport{ private User user=new User();//封装表单信息的JavaBean //必须提供set,get public User getUser() { return user; } public void setUser(User user) { this.user = user; } public void validate() { // TODO Auto-generated method stub super.validate(); if(null==user.getUser... 阅读全文
posted @ 2011-12-14 15:56 tazi 阅读(435) 评论(0) 推荐(0)
摘要:以下使用订单(order)和产品(product)的例子,订单-产品关联保存在表orderitem中1.使用many-to-many单向关联<class name="com.tazi.domin.Orders" table="orders" catalog="hib"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class=" 阅读全文
posted @ 2011-12-13 21:13 tazi 阅读(393) 评论(0) 推荐(0)
摘要:增加约束条件 alter table [表名]add constraint [约束]; 如alter table users add constraintprimary key(username,birthdate);去掉约束条件 alter table [表名]drop PRIMARY KEY | INDEX | FOREIGN KEY;修改列类型 alter table [表名] modify column [列名] [新类型];增加列alter table[表名] add column [列名] [新类型] [列级约束];如alter table users add column i.. 阅读全文
posted @ 2011-12-13 16:52 tazi 阅读(251) 评论(0) 推荐(0)
摘要:1.使用共享主键方式<class name="com.tazi.domin.User" table="USERS"> <id name="id" type="java.lang.Integer"> <column name="ID"/> <generator class="identity"/> </id> <property name="username" type="strin 阅读全文
posted @ 2011-12-13 14:53 tazi 阅读(369) 评论(0) 推荐(0)
摘要:1. 多对一(多的一方是主动方)<many-to-one name="category" class="com.tazi.domin.Category" lazy="false" fetch="join"> <column name="CATEGORY_ID" /></many-to-one> 当设定fetch="join"或outer-join="true"时,在get/load时,Hibernate使用左外连接(le 阅读全文
posted @ 2011-12-12 11:03 tazi 阅读(8486) 评论(0) 推荐(0)
摘要:建立数据库时选择语言为utf-8控制台中使用中文的方式是set names gbk; 阅读全文
posted @ 2011-12-11 20:40 tazi 阅读(225) 评论(0) 推荐(0)
摘要:<composite-id name="id" class="com.domin.UsersId"> <key-property name="username" type="java.lang.String"> <column name="USERNAME" length="20" /> </key-property> <key-property name="birthdate" type=" 阅读全文
posted @ 2011-12-11 20:22 tazi 阅读(1099) 评论(0) 推荐(0)
摘要:下载地址http://commonclipse.sourceforge.net提供toString(),hashcode(),equals(),compareTo()等方法的自动生成(注:该图片来源于http://www.oschina.net/p/commonclipse)在Hibernate中,如果持久化对象在同一个Session中根据相同的标识符属性查询得到,则它们拥有相同的对象引用,代表数据库中同一条记录。但在不同的Session中相同属性值查到的持久化对象却不保证引用相同(==为true),这时需要用equals()判读,故有必要重写持久化类的equals方法和hashCode() 阅读全文
posted @ 2011-12-10 14:42 tazi 阅读(234) 评论(0) 推荐(0)
摘要:带参数的国际化资源:{数字形式}在资源文件中:title=Web系统({0})两种方式使用:(1)在界面中<s:text name="title"> <s:param>企业人事管理</s:param></s:text>(2)在Action中getText("title",new String[]{"企业人事管理"}) ;或者第二个参数用List形式${属性名}仅适用于在Action中使用,可以直接获取Action属性值在资源文件中:successtip=${username},您好!Ac 阅读全文
posted @ 2011-12-10 09:07 tazi 阅读(223) 评论(0) 推荐(0)
摘要:表单验证Validate:首先为Action提供<result name="input">错误信息的显示界面,如login.jsp</result>界面中调试标签<s:debug></s:debug>,可以查看值栈内容使用addFieldError界面中任意位置可以用EL访问,形式如${errors.username[0]}(推荐)可以指定<s:fielderror />处显示全部出错信息。或者用<s:fielderror><s:param>username</s:param>& 阅读全文
posted @ 2011-12-09 15:17 tazi 阅读(287) 评论(0) 推荐(0)