ssh整理

工欲善其事,必先利其器

Struts2依赖包(struts-2.1.8.1)

1 struts2-core-2.1.8.1.jar struts2框架的核心类库

2 xwork-core-2.1.6.jar xwork类库,struts2在其上构建

3 ognl-2.7.3.jar 对象图导航语言(Object Graph Navigation Languge),struts2框架通过其读写对象的属性

4 freemarker-2.3.15.jar struts2的UI标签的模板使用FreeMarker编写

5 commons-logging-1.0.4.jar ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK1.4+的日志记录

6 commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件

Struts2 默认的配置文件为struts.xml,该文件需要存放在WEB-INF/classes下、
文件模板:

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

模板还可在struts包中的例子中查看

struts-2.1.8.1-all\struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF\classes\struts.xml

Struts2 框架是通过Filter启动的,在web.xml中配置:

    <filter-name>struts2</filter-name>

    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

org.apache.struts2.dispatcher.ng. FilterDispatcher –>

</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>

在StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。

Struts2读取到struts.xml的内容后,以javabean形式存放在内存中,以后struts2对用户的每次请求处理将使用内存中的数据,而不是每次都读取struts2.xml文件。

Hibernate 依赖包 3.5.3

hibernate3.jar

antlr-2.7.6.jar

cglib-2.2.jar

commons-collections-3.1.jar

commons-logging-1.0.4.jar

jta-1.1.jar

dom4j-1.6.1.jar

javassist-3.9.0.GA.jar

slf4j-api-1.5.8.jar

slf4j-nop-1.6.1.jar

backport-util-concurrent-3.1.jar

ehcache-1.5.0.jar

hibernate.cfg.xml

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<property name="connection.username">root</property>

<property name="connection.url">
    jdbc:mysql://localhost:3306/fuxi    </property>
<property name="dialect">
    org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">mysql</property>
<property name="connection.password">zhao</property>
<property name="connection.driver_class">
    com.mysql.jdbc.Driver
</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<!-- 配置二级缓存 -->
 <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<mapping resource="com/hibernate/pojo/Dpojo.hbn.xml" />


Dpojo.hbm.xml


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">



–>

   <generator class="increment"></generator> 





HibernateUtil.java

package com.util;

import java.io.Serializable;

import org.hibernate.HibernateException;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

public final class HibernateUtil {

private static SessionFactory sessionFactory;

private HibernateUtil(){

}
static{
    Configuration cfg=new Configuration();
    cfg.configure();
    sessionFactory=cfg.buildSessionFactory();
}

//SessionFactory

public static SessionFactory getSessionFactory(){

  return sessionFactory;

}

//Session

public static Session getSession(){

  return sessionFactory.openSession();

}

//添加

public static void add(Object entity){

    Session s=null;
    Transaction ts=null;
    try{
    s=HibernateUtil.getSession();
    ts=s.beginTransaction();
    s.save(entity);//没提交事务的前提下,save方法执行插入语句,再回滚删除
    ts.commit();
    }catch(HibernateException e){
        if(ts!=null){
            ts.rollback();
            throw e;
        }
    }finally{
        if(s!=null){
            s.close();
        }
    }

}
//修改
public static void update(Object entity){

    Session s=null;
    Transaction ts=null;
    try{
    s=HibernateUtil.getSession();
    ts=s.beginTransaction();
    s.update(entity);//没提交事务的前提下,save方法执行插入语句,再回滚删除
    ts.commit();
    }catch(HibernateException e){
        if(ts!=null){
            ts.rollback();
            throw e;
        }
    }finally{
        if(s!=null){
            s.close();
        }
    }

}

//删除

public static void delete(Object entity){

    Session s=null;
    Transaction ts=null;
    try{
    s=HibernateUtil.getSession();
    ts=s.beginTransaction();
    s.delete(entity);//没提交事务的前提下,save方法执行插入语句,再回滚删除
    ts.commit();
    }catch(HibernateException e){
        if(ts!=null){
            ts.rollback();
            throw e;
        }
    }finally{
        if(s!=null){
            s.close();
        }
    }

}

//查

public static Object get(Class clazz, Serializable id){

  Session s=null;
  try{
      s=HibernateUtil.getSession();
      Object obj=s.get(clazz, id);
      return obj;
  }finally{
      if(s!=null){
          s.close();
      }
  }

}

}

Hibernate对应关系

一对多,

一个部门多个员工,多个员工在一个部门

class Dept{
private int id;
private Set emp = new HashSet ();
}

class Emp{
private int id;
private int deptid;
private Dept dept;
}

Dept.hbm.xml

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">



   <!-- <generator class="assigned"></generator> 指定表的主键的管理方式
  -->
  <generator class="sequence">
  <param name="sequence">seq_release</param>
  </generator>


 <key>
   <column name="deptid"></column>
 </key>
 <!-- 一对多 -->
 <one-to-many class="Emp"/>



Emp.hbm.xml


"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">



 <generator class="sequence">
  <param name="sequence">seq_book</param>
</generator>


 <column name="deptid"></column>



多对多,拆成两个一对多。

Cour.hbm.xml
inverse=“true”>

 <key column="cid"></key>
 <many-to-many class="Student" column="sid"></many-to-many>

Stu.hbm.xml

<set name="course" table="student_course_link" cascade="all">
 <key column="sid"></key>
 <many-to-many class="Course" column="cid"></many-to-many>
</set>

一对一 也可以 一对多表示。

Spring2.5依赖包

dist\spring.jar

lib\jakarta-commons\commons-logging.jar

lib\aspectj\aspectjweaver.jar 和 aspectjrt.jar 切面编程AOP

lib\cglib\cglib-nodep-2.1.3.jar

lib\j2ee\common-annotations.jar 注解

web.xml需加载

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:application*.xml</param-value>
</context-param>
<!-- 通过监听器加载applicationContext.xml -->
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

获取bean

public static void main(String[] args) {

    ApplicationContext context=new ClassPathXmlApplicationContext(
            new String[]{"applicationContext.xml"});
    DBService service=(DBService)context.getBean("dbService");
    service.query();

}

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
default-lazy-init="true">


<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations" value="classpath:config.properties" />
</bean>

<!-- 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

    <property name="driverClass" value="${jdbc.driverClassName}"></property>
    <property name="jdbcUrl" value="${jdbc.url}"></property>
    <property name="user" value="${jdbc.username}"></property>
    <property name="password" value="${jdbc.password}"></property>

    <!-- 从数据库获取新连接失败后重复尝试的次数 -->
    <property name="acquireIncrement" value="2" />
    <!-- 是否自动提交 -->
    <property name="autoCommitOnClose" value="false"></property>
    <!-- 指定连接池的超时时长 -->
    <property name="checkoutTimeout" value="1000"></property>
    <!-- 隔多少秒检查所有连接池中的空闲连接 -->
    <property name="idleConnectionTestPeriod" value="3000"></property>
    <!-- 初始化几个链接池 -->
    <property name="initialPoolSize" value="5"></property>
    <!-- 连接池连接的最大空闲时间 -->
    <property name="maxIdleTime" value="5000"></property>
    <!-- 连接数据库池的最大连接数 -->
    <property name="maxPoolSize" value="100"></property>
    <!-- 连接数据库池的最小连接数 -->
    <property name="minPoolSize" value="2"></property>
</bean>
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <property name="hibernateProperties">
        <props>
            <!-- hibernate连接方言 -->
            <prop key="hibernate.dialect">${hibernate.dialect}</prop>
            <!-- 启动时是否创建数据库表 
                            <prop key="hibernate.hbm2ddl.auto">update</prop>-->
            <!-- 调试时显示sql语句 -->
            <prop key="hibernate.show_sql">false</prop>
            <!-- 将sql脚本格式化后再输出 -->
            <prop key="hibernate.format_sql">false</prop>
            <!-- 生成调试注释 -->
            <prop key="hibernate.use_sql_comments">false</prop>
            <prop key="hibernate.jdbc.fetch_size">100</prop>
            <prop key="hibernate.jdbc.batch_size">30</prop>

            <!-- 启用查询缓存 -->
            <prop key="hibernate.cache.use_query_cache">true</prop>
            <!-- 启用二级缓存 -->
            <prop key="hibernate.cache.use_second_level_cache">true</prop>
            <!-- 启用缓存管理 -->
            <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
        </props>
    </property>
    <property name="mappingResources">
        <list>
        <!-- 人事模块 -->
            <!-- 人员表 -->
            <value>cn/net/Employeelist.hbm.xml</value>

        </list>    
    </property>
</bean>

<!--  声明事务管理-->
<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 定义事务拦截规则 -->
<bean id="baseTransactionProxy" abstract="true"
    class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager" ref="transactionManager" />
    <property name="transactionAttributes">
        <props>
        <!-- 
            <prop key="save*">
                PROPAGATION_REQUIRED,-Exception,+DataAccessException
            </prop>
            <prop key="delete*">
                PROPAGATION_REQUIRED,-Exception,+DataAccessException
            </prop>
            <prop key="update*">
                PROPAGATION_REQUIRED,-Exception,+DataAccessException
            </prop>
            <prop key="execute*">
                PROPAGATION_REQUIRED,-Exception,+DataAccessException
            </prop>
            <prop key="batch*">
                PROPAGATION_REQUIRED,-Exception,+DataAccessException
            </prop>
            <prop key="insert*">
                PROPAGATION_REQUIRED,-Exception,+DataAccessException
            </prop>
            <prop key="modify*">
                PROPAGATION_REQUIRED,-Exception,+DataAccessException
            </prop>
            <prop key="*">
                PROPAGATION_REQUIRED,readOnly,-DataAccessException
            </prop>
        -->
        <!-- 
            由于前期方法名定义不规范,当前开放所有命名有数据操作权限,
            但是发生Exception及其子类异常时程序将会强制回滚事物操作。
         -->
        <prop key="*">
                PROPAGATION_REQUIRED,-Exception,-DataAccessException
            </prop>
        </props>
    </property>
</bean>

你可能感兴趣的:(java,框架,整合,ssh整理)