添加支持


我先介绍的是MyEclipse9的自带框架支持搭建过程:(完全的步骤  傻瓜式的学习。。~)

首先我们来搭建一个Web项目:

一、Hibernate(数据层)的搭建:

相关描述

Ⅰ.服务器与数据库之间的交互

Ⅱ. Hibernate封装了一系列的JDBC代码,提供相应的方法我们使用,使我们的开发变得简单快捷,效率大大提高

实现流程

二、Struts2(MVC)的搭建:

相关描述

Ⅰ.本质上相当于一个Servlet

Ⅱ.不需要手动获取传递参数 (只需要定义声明属性名和设置get、set的方法)、也不需要手动跳转(只需要struts.xml配置相关的路径)

Ⅲ.对项目的分包(例如:dao、service、entity等等),实现MVC模式的开发

Ⅳ.MVC: Action属于Model,而JSP是View页面的展示,其中过滤器起到了Controller的作用

实现流程

这里注意一点问题:

  Struts2与Hibernate在一起搭建,antlr包,有冲突。MyEclipse9中有这样问题。朋友的MyEclipse10中没有这个问题。

  我选择把Struts中antlr包去掉。

三、Spring(注入实例)的使用:

相关描述

Ⅰ.每一层的代码之间的耦合改为模块(分离/解耦),代码之间互不影响

Ⅱ.不再关注具体的实现类的实例

Ⅲ.更换不同的技术(模块),不需要改动代码,只需要修改applicationContext.xml的相关配置信息

Ⅳ.主要功能IOC(控制反转)松耦合、AOP (面向切面)内聚性

实现流程

 


 编辑web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<display-name></display-name> <!-- 这是一只拦路虎 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <!-- 读取applicationContext.xml文件 不写默认Spring需要读取 WebContent\WEB-INF\applicationContext.xml -->
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 改变默认读取路径为src目录下的 applicationContext.xml 在改变的路径下还是没找到,便自动到默认路径查找 -->
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <!-- 定义Spring监听器 class: spring 3.0 Web Libraries 下可以找到。 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <!-- Struts2过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

DB Browser中反转实体类:

数据访问层dao接口

package com.dao;

import com.entity.Users;

/**
* 用户接口
* @author asus
*
*/
public interface UsersDao { /** 登陆验证 */
Users loginCheck(Users user);
}

数据访问层dao.impl实现类

  1)继承HibernateDaoSupport类实现增删改查

package com.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.dao.UsersDao;
import com.entity.Users;
/**
* 用户接口实现类
* @author asus
*HibernateTemplate、HibernateDaoSupport两种方法实现增删改查
*一种方法:
Dao实现类继承HibernateDaoSupport类,该类是抽象类,
该类中有一个HibernateTemplate的属性,通过this.getHibernateTemplate()可获得一个HibernateTemplate类的模板对象。
*/
public class UsersDaoImpl extends HibernateDaoSupport implements UsersDao { @Override
public Users loginCheck(Users user) {
//得到此类提供的模板实现增删改查
HibernateTemplate ht = this.getHibernateTemplate(); //得到一个集合
List<Users> list = ht.find("from Users where name=? and password=? ",user.getName(),user.getPassword()); //使用三元运算符,防止list.get(0)时报空指针。
return (Users) (list.size()>0?list.get(0):null);
} }  
 2)定义HibernateTemplate模板对象属性
package com.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.dao.UsersDao;
import com.entity.Users;
/**
* 用户接口实现类
* @author asus
*HibernateTemplate、HibernateDaoSupport两种方法实现增删改查
*第二种方法:
在dao类中定义一个HibernateTemplate类的对象,用该对象调用HibernateTemplate模板封装好的方法,如下:
*/
public class UsersDaoImpl implements UsersDao { //定义一个模板对象
HibernateTemplate hibernateTemplate; @Override
public Users loginCheck(Users user) { //得到一个集合
List<Users> list = hibernateTemplate.find("from Users where name=? and password=? ",user.getName(),user.getPassword()); //使用三元运算符,防止list.get(0)时报空指针。
return (Users) (list.size()>0?list.get(0):null);
} //生成Get'Set方法
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
} public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}

业务逻辑层接口service

package com.service;

import com.entity.Users;

/**
* 用户业务逻辑层
* @author asus
*
*/
public interface UsersService { /** 登陆验证 */
Users loginCheck(Users user);
}

业务逻辑层接口实现类service.impl

package com.service.impl;

import com.dao.UsersDao;
import com.entity.Users;
import com.service.UsersService;
/**
* 用户业务逻辑层实现类
* @author asus
*
*/
public class UsersServiceImpl implements UsersService { //这里以前是new的,现在不需要了,交给Spring来实例
private UsersDao udd;
@Override
public Users loginCheck(Users user) { return udd.loginCheck(user);
}
//生成Get'Set
public UsersDao getUdd() {
return udd;
}
public void setUdd(UsersDao udd) {
this.udd = udd;
} }

控制器类Action

package com.action;

import com.entity.Users;
import com.opensymphony.xwork2.ActionSupport;
import com.service.UsersService;
/**
* 用户控制器类
* @author asus
*
*/
public class UsersAction extends ActionSupport { //接收页面的值
private Users user;
//一样交给Spring实例
private UsersService uss;
public String execute(){ return SUCCESS;
}
/** 判断用户输入的账号密码 */
public String login(){
if(user!=null){
Users checkResult = uss.loginCheck(user);
if(checkResult!=null){
return SUCCESS;
}
} return LOGIN;
} //生成Get'Set
public Users getUser() {
return user;
} public void setUser(Users user) {
this.user = user;
} public UsersService getUss() {
return uss;
} public void setUss(UsersService uss) {
this.uss = uss;
}
}

登陆页面

  <body>
<form action="loginUser.action" method="post" >
用户名:<input type="text" name="user.name" />
密码: <input type="password" name="user.password" />
<input type="submit" value="登录按钮" >
</form>
</body>

成功页面

  <body>
登录成功!
</body>

 配置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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean> <!-- UsersBean配置 -->
<!-- 第一种方法:Dao实现类继承HibernateDaoSupport类的配置 -->
<bean id="userDaoImpl" class="com.dao.impl.UsersDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 第二种方法:在dao类中定义一个模板对象
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" >
<property name="sessionFactory" ref="sessionFactory" ></property>
</bean>
<bean id="userDaoImpl" class="com.dao.impl.UsersDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean> --> <bean id="userServiceImpl" class="com.service.impl.UsersServiceImpl">
<property name="udd" ref="userDaoImpl" />
</bean> <bean id="userSturts" class="com.action.UsersAction">
<property name="uss" ref="userServiceImpl" />
</bean> </beans>

配置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>
<package name="struts2" namespace="/" extends="struts-default">
<action name="*User" class="userSturts" method="{1}" >
<result name="success">/success.jsp</result>
<result name="login">/login.jsp</result>
</action>
</package>
</struts>

end:基本的登陆现在已经做好,现在我们开始做添加事务。

添加事务


数据访问层dao接口

package com.dao;

import com.entity.District;

/**
* 区域接口
* @author asus
*
*/
public interface DistrictDao { /** 添加区域 */
int addReg (District district);
}

数据访问层dao.impl实现类

  定义HibernateTemplate模板对象属性

package com.dao.impl;

import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate3.HibernateTemplate; import com.dao.DistrictDao;
import com.entity.District;
/**
* 区域接口实现类
* @author asus
*HibernateTemplate、HibernateDaoSupport两种方法实现增删改查
*第二种方法:
在dao类中定义一个HibernateTemplate类的对象,用该对象调用HibernateTemplate模板封装好的方法,如下:
*/
public class DistrictDaoImpl implements DistrictDao { //定义一个模板对象
private HibernateTemplate hibernateTemplate; @Override
public int addReg(District district) {
try {
hibernateTemplate.save(district);
return 1;
} catch (DataAccessException e) {
e.printStackTrace();
}
return 0;
} //生成Get'Set方法
public HibernateTemplate getHibernateTemplate() {
return hibernateTemplate;
}
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}

业务逻辑层接口service

package com.service;

import com.entity.District;

/**
* 地区业务逻辑类接口
* @author asus
*
*/
public interface DistrictService { /**
* 配置事务的话注意方法的命名规范以什么开头。
* @param district
*/
int addReg(District district);
}

业务逻辑层接口实现类service.impl

package com.service.impl;

import com.dao.DistrictDao;
import com.entity.District;
import com.service.DistrictService;
/**
* 区域业务逻辑层接口实现类
*
* @author asus
*
*/
public class DistrictServiceImpl implements DistrictService { //声明接口由Spring来实例
private DistrictDao ddd; @Override
public int addReg(District district) { return ddd.addReg(district);
} //声明Get'Set方法
public DistrictDao getDdd() {
return ddd;
}
public void setDdd(DistrictDao ddd) {
this.ddd = ddd;
} }

控制器类Action

package com.action;

import com.entity.District;
import com.opensymphony.xwork2.ActionSupport;
import com.service.DistrictService;
/**
* 控制器类
* 作用:添加区域
* @author asus
*
*/
public class DistrictAction extends ActionSupport { //属性
private District district;
private DistrictService dss; //处理添加请求
public String add(){ int addReg = dss.addReg(district); if(addReg>0){
return SUCCESS;
}
return "index";
} //生成Get'Set方法
public DistrictService getDss() {
return dss;
}
public void setDss(DistrictService dss) {
this.dss = dss;
}
public District getDistrict() {
return district;
}
public void setDistrict(District district) {
this.district = district;
} }

 添加页面

  <body>
<form action="addReg" method="post" >
<input type="text" name="district.name" >
<input type="submit" value="提交" >
</form>
</body>

成功页面

  <body>
登录成功!
</body>

配置applicationContext.xml(这里还是比较重要的,其中夹杂前面Users的Bean)

<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置事务第一步:需要导入的命名空间
命名规范:
xsi:架构实例
beans:根节点
aop:事务
context:注解
tx:事务管理
xsi:schemaLocation
协议(一个命名规范对应一个协议) 注:若不知道自己使用的框架版本,可以把协议后的版本号去掉,此处已经去掉。 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean> <!-- 配置事务第二步:配置事务管理器,将SessionFactory注入 -->
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事务第三步:事务通知
tx:method: 管理事务的方法
name:方法的名字是已什么开头的
no-rollback-for="true":回滚
read-only="true":只读(默认false,是已非事务的方式来操作你的数据,比如查询)
propagation:事务是以哪种方式来操作 REQUIRED:必填
(事务解释:比如一个方法中执行添加两张表的信息,第一个添加,没有事务开启一个事务,第二个添加加入第一个事务中,两个方法都成功则成功,一个失败全部回滚) name="*" :不在以上方法名开头之内的,是以非事务的方式来操作 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置事务第四步:织入(以面相切面的方式编程) -->
<aop:config>
<!-- 切面
expression:表达式\
* com.service.impl.*.*(..):(星 空格 包名 点星(代表所有此包下所有的类) 点星(代表类下所有的方法) 括号点点(代表方法中不管带有几个参数,只要符合命名规范都纳入事务管理))
-->
<aop:pointcut id="serviceMethod" expression="execution(* com.service.impl.*.*(..))" />
<!-- 通知者
由切面和事务通知组成的通知者
-->
<aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice"/>
</aop:config> <!-- UsersBean配置 -->
<!-- 第一种方法:Dao实现类继承HibernateDaoSupport类的配置 -->
<bean id="userDaoImpl" class="com.dao.impl.UsersDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 第二种方法:在dao类中定义一个模板对象 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"
> <property name="sessionFactory" ref="sessionFactory" ></property> </bean>
<bean id="userDaoImpl" class="com.dao.impl.UsersDaoImpl"> <property name="hibernateTemplate"
ref="hibernateTemplate"></property> </bean> --> <bean id="userServiceImpl" class="com.service.impl.UsersServiceImpl">
<property name="udd" ref="userDaoImpl" />
</bean> <bean id="userSturts" class="com.action.UsersAction">
<property name="uss" ref="userServiceImpl" />
</bean> <!-- DistrictBean配置 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <bean id="DistrictDaoImpl" class="com.dao.impl.DistrictDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean> <bean id="DistrictServiceImpl" class="com.service.impl.DistrictServiceImpl">
<property name="ddd" ref="DistrictDaoImpl"></property>
</bean> <bean id="DistrictAction" class="com.action.DistrictAction">
<property name="dss" ref="DistrictServiceImpl"></property>
</bean>
</beans>

优化SessionFacatory,使用Spring创建最原始的JDBC数据源

优化JDBC为C3P0数据源连接池


(注:代码确与上面有重复,我走的是步骤路线虽然代码重复太多,只为更容易理解)

配置applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置事务第一步:需要导入的命名空间
命名规范:
xsi:架构实例
beans:根节点
aop:事务
context:注解
tx:事务管理
xsi:schemaLocation
协议(一个命名规范对应一个协议) 注:若不知道自己使用的框架版本,可以把协议后的版本号去掉,此处已经去掉。 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 倒数第二步:这个sessionFactory使用的还是最原始的,可以优化,真正实际开发不会去用,测试可用。
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean>--> <!-- 最后一步:优化sessionFactory:
hibernate.cfg.xml中数据库连接方式可以由Spring来创建与管理
操作步骤:使用Spring创建数据源:
右键Spring——>New DataSource and SessionFactory(有图解)
(Spring提供的是最原始的JDBC数据源连接池的写法,当然可以再成优化C3P0,DBCP数据源连接池)
-->
<!-- dataSource创建的:
JDBC数据源写法(将C3P0数据源连接池写法注释掉就可用此数据源,它的HTML注释太多就先注释此..)
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:orcl">
</property>
<property name="username" value="root"></property>
<property name="password" value="admin"></property>
</bean> -->
<!-- C3P0数据源连接池写法 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
<property name="user" value="root" />
<property name="password" value="admin" />
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="1" />
<!--连接池中保留的最小连接数。 -->
<property name="minPoolSize" value="1" />
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="300" />
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="60" />
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="5" />
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod" value="60" />
</bean>
<!-- session的创建方式 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hiberenate.format_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/entity/District.hbm.xml</value>
<value>com/entity/House.hbm.xml</value>
<value>com/entity/Street.hbm.xml</value>
<value>com/entity/Type2.hbm.xml</value>
<value>com/entity/Users.hbm.xml</value>
</list>
</property>
</bean> <!-- 配置事务第二步:配置事务管理器,将SessionFactory注入 -->
<bean id="txManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事务第三步:事务通知
tx:method: 管理事务的方法
name:方法的名字是已什么开头的
no-rollback-for="true":回滚
read-only="true":只读(默认false,是已非事务的方式来操作你的数据,比如查询)
propagation:事务是以哪种方式来操作 REQUIRED:必填
(事务解释:比如一个方法中执行添加两张表的信息,第一个添加,没有事务开启一个事务,第二个添加加入第一个事务中,两个方法都成功则成功,一个失败全部回滚) name="*" :不在以上方法名开头之内的,是以非事务的方式来操作 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" propagation="SUPPORTS" read-only="true" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置事务第四步:织入(以面相切面的方式编程) -->
<aop:config>
<!-- 切面
expression:表达式\
* com.service.impl.*.*(..):(星 空格 包名 点星(代表所有此包下所有的类) 点星(代表类下所有的方法) 括号点点(代表方法中不管带有几个参数,只要符合命名规范都纳入事务管理))
-->
<aop:pointcut id="serviceMethod" expression="execution(* com.service.impl.*.*(..))" />
<!-- 通知者
由切面和事务通知组成的通知者
-->
<aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice"/>
</aop:config> <!-- UsersBean配置 -->
<!-- 第一种方法:Dao实现类继承HibernateDaoSupport类的配置 -->
<bean id="userDaoImpl" class="com.dao.impl.UsersDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 第二种方法:在dao类中定义一个模板对象 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"
> <property name="sessionFactory" ref="sessionFactory" ></property> </bean>
<bean id="userDaoImpl" class="com.dao.impl.UsersDaoImpl"> <property name="hibernateTemplate"
ref="hibernateTemplate"></property> </bean> --> <bean id="userServiceImpl" class="com.service.impl.UsersServiceImpl">
<property name="udd" ref="userDaoImpl" />
</bean> <bean id="userSturts" class="com.action.UsersAction">
<property name="uss" ref="userServiceImpl" />
</bean> <!-- DistrictBean配置 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean> <bean id="DistrictDaoImpl" class="com.dao.impl.DistrictDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate"></property>
</bean> <bean id="DistrictServiceImpl" class="com.service.impl.DistrictServiceImpl">
<property name="ddd" ref="DistrictDaoImpl"></property>
</bean> <bean id="DistrictAction" class="com.action.DistrictAction">
<property name="dss" ref="DistrictServiceImpl"></property>
</bean>
</beans>

附Spring创建JDBC数据源图:

SSH(Struts2+Spring+Hibernate)框架搭建流程的更多相关文章

  1. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

  2. 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建

    1. 前言 基于Maven的开发方式开发项目已经成为主流.Maven能很好的对项目的层次及依赖关系进行管理.方便的解决大型项目中复杂的依赖关系.S2SH(Struts2+Spring+Hibernat ...

  3. Struts2,Spring,Hibernate框架的优缺点

    Struts2,Spring,Hibernate框架的优缺点 Struts2框架(MVC框架)的优点如下:         1)  实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现:   ...

  4. 深入浅出Struts2+Spring+Hibernate框架

    一.深入浅出Struts2 什么是Struts2? struts2是一种基于MVC的轻量级的WEB应用框架.有了这个框架我们就可以在这个框架的基础上做起,这样就大大的提高了我们的开发效率和质量,为公司 ...

  5. Struts2+Spring+Hibernate框架整合总结详细教程

    一.SSH三大框架知识总结 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与S ...

  6. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSH框架(Struts2+Spring+Hibernate)搭建整合详细步骤

    在实际项目的开发中,为了充分利用各个框架的优点,通常都会把 Spring 与其他框架整合在一起使用. 整合就是将不同的框架放在一个项目中,共同使用它们的技术,发挥它们的优点,并形成互补.一般而言,在进 ...

  7. 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板

    最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用! 首先是web.xml配置文件,这里面就配置一些简单的监听器.过滤器,包括spring核心配置文件appli ...

  8. java三大框架SSH(Struts2 Spring Hibernate)

    http://www.cnblogs.com/qiuzhongyang/p/3874149.html

  9. Struts2 + Spring + hibernate 框架搭成实例

    1.准备Jar包: struts2.hibernate.spring所需jar包   struts-core-2.x.x.jar  ----struts核心包 xwork-core-2.x.x.jar ...

随机推荐

  1. JavaScript中Math对象的方法介绍

    1.比较最值方法 比较最值有两种方法,max() 和 min() 方法. 1.1 max() 方法,比较一组数值中的最大值,返回最大值. var maxnum = Math.max(12,6,43,5 ...

  2. 探究@property申明对象属性时copy与strong的区别

    一.问题来源 一直没有搞清楚NSString.NSArray.NSDictionary--属性描述关键字copy和strong的区别,看别人的项目中属性定义有的用copy,有的用strong.自己在开 ...

  3. 利用CSS中的:after、: before制作的边三角提示框

    小颖昨天分享了一篇参考bootstrap中的popover.js的css画消息弹框今天给大家再分享一篇使用:before和:after伪元素画消息弹框的CSS. 画出来是介个酱紫的: 有没有觉得画的萌 ...

  4. Angular企业级开发(4)-ngResource和REST介绍

    一.RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来 ...

  5. javascript:逆波兰式表示法计算表达式结果

    逆波兰式表示法,是由栈做基础的表达式,举个例子: 5 1 2 + 4 * + 3 -  等价于   5 + ((1 + 2) * 4) - 3 原理:依次将5 1 2 压入栈中, 这时遇到了运算符 + ...

  6. css样式之border

    border用法详解: 1.border-width 属性设置边框的宽度 可能的值:像素 2.border-style 属性设置边框的样式 可能的值:solid(直线),dashed(虚线),dott ...

  7. MySQL: Fabric 搭建 HA

    搭建好Fabric之后,就可以在它的基础上创建HA Group. Shard Group.HA+Shard Group等.这里来说明一下如何快速的搭建HA环境. Fabric 192.168.2.23 ...

  8. linux系统oracle-ora12505问题解决方案一

    说明:(1)Linux版本 Linux version 2.6.32.12-0.7-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-bran ...

  9. Linux基础介绍【第二篇】

    远程连接Linux的原理 SHH远程连接介绍 当前,在几乎所有的互联网企业环境中,最常用的Linux提供远程连接服务的工具就是SSH软件,SSH分为SSH客户端和SSH服务端两部分.其中,SSH服务端 ...

  10. jQuery 的选择器常用的元素查找方法

    jQuery 的选择器常用的元素查找方法 基本选择器: $("#myELement")    选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myE ...