ssh2框架的搭建(一)

搭建了一个ssh2框架的demo,在WebRoot/WEB-INF/lib下导入ssh2所需要的jar包(可从网上下载),具体工程如下,utils包及find_success.jsp是测试用的,可以忽略。

工程使用的是Oracle数据库,数据库中有两个表,学生表(Student)和班级表(Classes),双向一对多的关系。主要实现学生的增删改查功能。

   分别编写spring,struts2,hibernate的xml配置文件,具体代码如下:

spring的xml配置,applicationContext.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"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-2.5.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
	http://www.springframework.org/schema/tx
	http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	
	<!-- 使spring容器关注注解,支持注解注入 -->
	<context:annotation-config />

   <!--打开spring自动扫描bean服务,@Controller控制层 @Service服务层 @Repository数据访问层 @component其他-->
   <context:component-scan base-package="dukun.dao.impl" />
   <context:component-scan base-package="dukun.service.impl" />
   
   <!-- 开启AOP支持,使spring容器支持Aspect注解  自动代理模式的AOP -->
   <aop:aspectj-autoproxy/>
   
    <!-- 平台基本数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
      <property name="driverClass">
	  <value>oracle.jdbc.OracleDriver</value>
	  </property>
	  <property name="jdbcUrl">
	  <value>jdbc:oracle:thin:@localhost:1521:orcl</value>
	  </property>
	  <property name="user" value="scott" />
	  <property name="password" value="tiger" />
	  <!-- 初始化数据源连接,应介于minPoolSize和maxPoolSize之间 -->
	  <property name="initialPoolSize" value="3" />
	  <!-- 连接池中最小连接数量 -->
	  <property name="minPoolSize" value="2" />
	  <!-- 连接池中最大连接数量 -->
	  <property name="maxPoolSize" value="10" />
	  <!-- 连接最大空闲时间,如果超过600秒还没有被使用则丢弃 -->
	  <property name="maxIdleTime" value="600" />
	  <!-- 每隔600秒检查池中的空闲连接 -->
	  <property name="idleConnectionTestPeriod" value="600" />
	  <!-- 当连接池耗尽时,c3p0一次性获取的连接数量 -->
	  <property name="acquireIncrement" value="2" />
    </bean>
    <!-- 定义Hibernate的sessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="dataSource" ref="dataSource"/>
      <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
      <property name="hibernateProperties">
         <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">false</prop>
            <!-- 是否在sql语句中输出便于调试的注释信息 -->
            <prop key="hibernate.use_sql_comments">false</prop>
            <!-- 自动释放连接 -->
            <prop key="hibernate.connection.release_mode">auto</prop>
         </props>
      </property>
    </bean>
    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory">
        <ref bean="sessionFactory"/>
      </property>
    </bean>
    <!-- 配置事务的传播特性 -->
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
      <tx:attributes>
        <!-- 所有事务均参与管理 -->
        <tx:method name="*" propagation="REQUIRED" rollback-for="Throwable"/>
      </tx:attributes>
    </tx:advice>
    <aop:config>
      <aop:pointcut expression="execution(* dukun.service.impl.*.*(..))" id="allServiceMethod" />
      <aop:advisor advice-ref="txAdvice" pointcut-ref="allServiceMethod"/>
    </aop:config>
</beans>
hibernate的xml配置,hibernate.cfg.xml代码
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.  -->
<hibernate-configuration>
<session-factory>
    <!-- 资源映射,加载映射文件 -->
    <mapping resource="dukun/model/Classes.hbm.xml"/>
    <mapping resource="dukun/model/Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>
struts2的xml配置,struts.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
	"http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>
    <!-- 全局常量配置 -->
    <!-- 1、设置struts2默认访问后缀 -->
    <constant name="struts.action.extension" value="dukun"/>
    <!-- 2、打印错误的详细信息,开发阶段可以设置为true -->
    <constant name="struts.devMode" value="true"/>
    <!-- 3、设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭 -->
    <constant name="struts.serve.static.browserCache" value="false"/>
    <!-- 4、指定上传文件临时目录,默认使用javax.servlet.context.tempdir -->
    <constant name="struts.multipart.saveDir" value="/tmpuploadfiles"/>
    <!-- 5、指定struts2文件上传中整个请求内容允许的最大字节数 -->
    <constant name="struts.multipart.maxSize" value="2097125"/>
    <constant name="struts.i18n.encoding" value="utf-8"></constant>

    <package name="default"  namespace="/" extends="struts-default">
        <action name="*_student" class="dukun.action.StudentAction" method="{1}">
          <result>/{1}_student.jsp</result>
        </action>
        <action name="deleteStudent" class="dukun.action.StudentAction" method="delete">
          <result name="success" type="redirectAction">listAll_student</result>
        </action>
        <action name="addStudent" class="dukun.action.StudentAction" method="add">
          <result name="success" type="redirectAction">listAll_student</result>
        </action>
        <action name="*_classes" class="dukun.action.ClassesAction" method="{1}">
          <result>/{1}_success.jsp</result>
        </action>
        <action name="listClassesIn" class="dukun.action.ClassesAction" method="listAllClasses">
          <result>/index.jsp</result>
        </action>
        <action name="getStudent" class="dukun.action.StudentAction" method="studentGet">
          <result>/update_student.jsp</result>
        </action>
        <action name="updateStudent" class="dukun.action.StudentAction" method="update">
           <result name="success" type="redirectAction">listAll_student</result>
        </action>
    </package>
</struts>
配置web.xml,代码如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
  <!-- Spring配置 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <!-- 启用spring的OpenSessionInView功能,此配置需放在struts filter之前 -->
  <!-- 让hibernate session周期延长,解决lazy加载session关闭问题 -->
  <filter>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>OpenSessionInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <!-- Spring 自带编码过滤器,解决中文乱码问题  -->
  <filter>
    <filter-name>Spring character encoding filter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
       <param-name>encoding</param-name>
       <param-value>utf-8</param-value>
    </init-param>
   <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
   </init-param>
  </filter>
  <filter-mapping>
    <filter-name>Spring character encoding filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <!-- struts2过滤器配置 -->
  <filter>
	<filter-name>dk_struts2</filter-name>
	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	<filter-mapping>
	<filter-name>dk_struts2</filter-name>
	<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<!-- <filter>
	  <filter-name>CharacterEncodingFilter</filter-name>
	  <filter-class>dukun.utils.CharacterEncodingFilter</filter-class>
	  <init-param>
	     <param-name>encoding</param-name>
	     <param-value>utf-8</param-value>
	  </init-param>
	</filter>
	<filter-mapping>
	  <filter-name>CharacterEncodingFilter</filter-name>
	  <url-pattern>/*</url-pattern>
	</filter-mapping>-->

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
配置完成,就可以实现功能了,这个工程我用了两个表,一个班级表,一个学生表,双向一对多关联。

Classes.java

package dukun.model;

import java.util.Set;

public class Classes {

	private String id;
	private String className;
	private Set<Student> stus;
	
	public Set<Student> getStus() {
		return stus;
	}
	public void setStus(Set<Student> stus) {
		this.stus = stus;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getClassName() {
		return className;
	}
	public void setClassName(String className) {
		this.className = className;
	}	
}
Classes.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="dukun.model">
  <class name="Classes" table="CLASSES">
    <id name="id" column="ID">
      <generator class="uuid">
         <param name="sequence">CLASSES_SEQ</param>
      </generator>
    </id>
    <property name="className">
      <column name="CLASS_NAME"></column>
    </property>
    <set name="stus" cascade="all" inverse="true">
      <key column="FK_CLASSES_ID"></key>
      <one-to-many class="Student"/>
    </set>
  </class>
</hibernate-mapping>
Student.java

package dukun.model;

public class Student {

	private String id;
	private String stuName;
	private Classes classes;
	
	public Classes getClasses() {
		return classes;
	}
	public void setClasses(Classes classes) {
		this.classes = classes;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getStuName() {
		return stuName;
	}
	public void setStuName(String stuName) {
		this.stuName = stuName;
	}
}
Student.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="dukun.model">
  <class name="Student" table="STUDENT">
    <id name="id" column="ID">
      <generator class="uuid" />
    </id>
    <property name="stuName">
      <column name="STU_NAME"></column>
    </property>
    <many-to-one name="classes" class="Classes" cascade="all">
      <column name="FK_CLASSES_ID"></column>
    </many-to-one>
  </class>
</hibernate-mapping>
在此基础上,可以继续编写dao层、service层、action层的代码,完善功能,请查看我的下一篇博客:ssh2框架的搭建(二)



  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值