整合Struts,Spring,mybatis三个框架的helloworld
2017-08-18 21:44
543 查看
struts 整合 spring 整合 mybatis:
1-spring在web工程中使用(原理):
1-使用spring的本质是获取每一个bean对象和让spring帮我们自动注入每个属性;
2-所以需要获取ApplicationContext,ApplicationContext是单例的;
3-web中可以在服务器一启动就马上工作的有:监听器(ServletContextlistener) ,application;
4-实现原理:在web 工程中,定义个ServletContextlistener监听器,将ApplicationContext容器对象的创建语句放到监听器中,创建好后,将该容器对象存放到application域中,需要容器对象时,调用application 的 getAttribute方法;
2-整合:
整合分为两步:
1-struts跟spring整合:其中利用spring管理action;
2-spring跟mybatis整合: 其中利用spring管理sessionfactory;
3-实现步骤:
(1)整合spring:
1-导入spring的架包jar(1-必须jar和 2-logging-jar 3-spring-web-4.0.0.RELEASE.jar, spring-webmvc-4.0.0.RELEASE.jar)
2-配置文件:spring的核心配置文件:applicationContext.xml
3-在web工程中的web.xml中:
<!-- 配置spring配置文件参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置spring容器监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(2)整合struts:
1-导入struts的jar(1-struts核心jar 2-struts2-spring-plugin-2.3.20.jar)
2-配置文件:struts.xml配置文件;
3-注册核心控制器,在web.xml中
4-整合spring(将spring和Struts结合):
1-在spring中管理action对象(注意:action作用域:prototype非单例模式,由于action是非单例的,而spring创建的对象默认是单例的,所以需要修改scpoe的属性为prototype)
<bean id="usersAction" class="com.ssm.action.UsersAction" scope="prototype"></bean>
2-在struts的配置文件中:
1- <constant name="struts.objectFactory" value="spring"></constant>
2-action的class属性不再指定全类名了,而是spring中的bean的id
<action name="xxx" class="usersAction" method="">
(3)3-整合mybatis(数据源):
1-导入mybatis的jar(1-mybatis-jar 2-数据源-jar 3-数据库-jar 4-myabtis-spring-jar)
注:由于导入的架包较多,有些架包可能会重复所以需要删减重复的jar(保留高版本的架包);
2-mybatis的配置文件:
1-mybatis配置文件中:只保留别名,缓存设置等配置(甚至可以完全删除)
2-数据源:DB.properties
3-log4j
3-整合:
1-spring的配置文件中:
1-配置数据源:
<!-- 整合数据库连接池c3p0 -->
<!-- 引入键值对文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置数据源对象 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.pwd}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="maxPoolSize" value="${jdbc.maxsize}"/>
<property name="initialPoolSize" value="${jdbc.initsize}"/>
</bean>
2-配置sessionfactory:
<!-- 整合sessionfactory -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"
c79a
/>
<property name="configLocation" value="classpath:conf.xml"/>
<property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"/>
</bean>
3-配置mapper接口:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ssm.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
</bean>
4-声明式事务:
具体实现的实例:
实现对数据库中一张user表的添加操作:
使用分层,将设计分为三层:控制层control,业务逻辑层service,持久层dao.
各层目录结构如下:
![](https://img-blog.csdn.net/20170818221103207?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbTBfMzc5MDU0Mjk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(1)Bean类有User:
package com.bean;
public class User {
private int uid;
private float money;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public float getMoney() {
return money;
}
public void setMoney(float money) {
this.money = money;
}
@Override
public String toString() {
return "User [uid=" + uid + ", money=" + money + "]";
}
}
(2)Dao层的mapper接口UserMapper
package com.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.bean.Goods;
import com.bean.User;
@Repository
public interface UserMapper {
public int AddUser(User u);
public int AddGoods(Goods g);
public List<User> selectUser();
public int deleteUser(int uid);
public int updateUser(User u);
}
(3)控制层
1.userAction,执行添加的逻辑;
package com.handler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.bean.Goods;
import com.bean.User;
import com.opensymphony.xwork2.ActionSupport;
import com.service.UserService;
@Controller
public class UserAction extends ActionSupport{
private User u;
@Autowired
private UserService us;
public User getU() {
return u;
}
public void setU(User u) {
this.u = u;
}
public void setUs(UserService us) {
this.us = us;
}
public String AddUser(){
this.us.addUser(u);
/*this.us.addGoods(g);
System.out.println(g+"******");*/
return SUCCESS;
}
}
2.’selectAction执行查询的逻辑:
(4)service层有:UserServlce
package com.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bean.Goods;
import com.bean.User;
import com.dao.UserMapper;
@Service
public class UserService {
@Autowired
private UserMapper um;
public void setUm(UserMapper um) {
this.um = um;
}
public void addUser(User u){
this.um.AddUser(u);
}
public void addGoods(Goods g){
this.um.AddGoods(g);
}
public List<User> selectUser(){
List<User> l=this.um.selectUser();
return l;
}
public int deleteUser(int uid){
int num=this.um.deleteUser(uid);
return num;
}
public int updateUser(User u){
int num=this.um.updateUser(u);
return num;
}
}
(5)mapper.xml的映射文件UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.UserMapper">
<insert id="AddUser" parameterType="user">
insert into user values(#{uid},#{money})
</insert>
<select id="selectUser" resultType="user">
select * from user
</select>
<delete id="deleteUser" parameterType="int">
delete from user where uid=#{value}
</delete>
<update id="updateUser" parameterType="user">
update user set money=#{money} where uid=#{uid}
</update>
</mapper>(6)spring的主配置文件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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- 扫描注入 -->
<context:component-scan base-package="com"></context:component-scan>
<!-- <bean id="userAction" class="com.handler.UserAction" scope="prototype">
<property name="us" ref="userService"></property>
</bean> -->
<!-- <bean id="userService" class="com.service.UserService">
<property name="um" ref=""></property>
</bean> -->
<!-- 配置数据源 -->
<!-- 引入键值对文件 -->
<context:property-placeholder location="classpath:DB.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="user" value="${user}" ></property>
<property name="password" value="${password}"></property>
</bean>
<!-- 整合sessionfactory -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:conf.xml"></property>
<property name="mapperLocations" value="classpath:com/mapper/*.xml"></property>
</bean>
<!--配置mapper接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事务属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!-- 声明式事务 -->
<aop:config>
<aop:pointcut expression="execution(* com.service.*.*(..))" id="pc"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
</aop:config>
</beans>
(7)mybatis的核心配置文件conf.xml
运行结果:
![](https://img-blog.csdn.net/20170818223042372?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbTBfMzc5MDU0Mjk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
添加成功后的查询结果:
1-spring在web工程中使用(原理):
1-使用spring的本质是获取每一个bean对象和让spring帮我们自动注入每个属性;
2-所以需要获取ApplicationContext,ApplicationContext是单例的;
3-web中可以在服务器一启动就马上工作的有:监听器(ServletContextlistener) ,application;
4-实现原理:在web 工程中,定义个ServletContextlistener监听器,将ApplicationContext容器对象的创建语句放到监听器中,创建好后,将该容器对象存放到application域中,需要容器对象时,调用application 的 getAttribute方法;
2-整合:
整合分为两步:
1-struts跟spring整合:其中利用spring管理action;
2-spring跟mybatis整合: 其中利用spring管理sessionfactory;
3-实现步骤:
(1)整合spring:
1-导入spring的架包jar(1-必须jar和 2-logging-jar 3-spring-web-4.0.0.RELEASE.jar, spring-webmvc-4.0.0.RELEASE.jar)
2-配置文件:spring的核心配置文件:applicationContext.xml
3-在web工程中的web.xml中:
<!-- 配置spring配置文件参数 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置spring容器监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(2)整合struts:
1-导入struts的jar(1-struts核心jar 2-struts2-spring-plugin-2.3.20.jar)
2-配置文件:struts.xml配置文件;
3-注册核心控制器,在web.xml中
4-整合spring(将spring和Struts结合):
1-在spring中管理action对象(注意:action作用域:prototype非单例模式,由于action是非单例的,而spring创建的对象默认是单例的,所以需要修改scpoe的属性为prototype)
<bean id="usersAction" class="com.ssm.action.UsersAction" scope="prototype"></bean>
2-在struts的配置文件中:
1- <constant name="struts.objectFactory" value="spring"></constant>
2-action的class属性不再指定全类名了,而是spring中的bean的id
<action name="xxx" class="usersAction" method="">
(3)3-整合mybatis(数据源):
1-导入mybatis的jar(1-mybatis-jar 2-数据源-jar 3-数据库-jar 4-myabtis-spring-jar)
注:由于导入的架包较多,有些架包可能会重复所以需要删减重复的jar(保留高版本的架包);
2-mybatis的配置文件:
1-mybatis配置文件中:只保留别名,缓存设置等配置(甚至可以完全删除)
2-数据源:DB.properties
3-log4j
3-整合:
1-spring的配置文件中:
1-配置数据源:
<!-- 整合数据库连接池c3p0 -->
<!-- 引入键值对文件 -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 配置数据源对象 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.pwd}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="maxPoolSize" value="${jdbc.maxsize}"/>
<property name="initialPoolSize" value="${jdbc.initsize}"/>
</bean>
2-配置sessionfactory:
<!-- 整合sessionfactory -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"
c79a
/>
<property name="configLocation" value="classpath:conf.xml"/>
<property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"/>
</bean>
3-配置mapper接口:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ssm.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
</bean>
4-声明式事务:
具体实现的实例:
实现对数据库中一张user表的添加操作:
使用分层,将设计分为三层:控制层control,业务逻辑层service,持久层dao.
各层目录结构如下:
(1)Bean类有User:
package com.bean;
public class User {
private int uid;
private float money;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public float getMoney() {
return money;
}
public void setMoney(float money) {
this.money = money;
}
@Override
public String toString() {
return "User [uid=" + uid + ", money=" + money + "]";
}
}
(2)Dao层的mapper接口UserMapper
package com.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.bean.Goods;
import com.bean.User;
@Repository
public interface UserMapper {
public int AddUser(User u);
public int AddGoods(Goods g);
public List<User> selectUser();
public int deleteUser(int uid);
public int updateUser(User u);
}
(3)控制层
1.userAction,执行添加的逻辑;
package com.handler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import com.bean.Goods;
import com.bean.User;
import com.opensymphony.xwork2.ActionSupport;
import com.service.UserService;
@Controller
public class UserAction extends ActionSupport{
private User u;
@Autowired
private UserService us;
public User getU() {
return u;
}
public void setU(User u) {
this.u = u;
}
public void setUs(UserService us) {
this.us = us;
}
public String AddUser(){
this.us.addUser(u);
/*this.us.addGoods(g);
System.out.println(g+"******");*/
return SUCCESS;
}
}
2.’selectAction执行查询的逻辑:
package com.handler; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import com.bean.User; import com.opensymphony.xwork2.ActionSupport; import com.service.UserService; @Controller public class SelectAction extends ActionSupport{ @Autowired UserService us; List<User> l; public UserService getUs() { return us; } public void setUs(UserService us) { this.us = us; } public List<User> getL() { return l; } public void setL(List<User> l) { this.l = l; } public String select(){ l=this.us.selectUser(); return SUCCESS; } }
(4)service层有:UserServlce
package com.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.bean.Goods;
import com.bean.User;
import com.dao.UserMapper;
@Service
public class UserService {
@Autowired
private UserMapper um;
public void setUm(UserMapper um) {
this.um = um;
}
public void addUser(User u){
this.um.AddUser(u);
}
public void addGoods(Goods g){
this.um.AddGoods(g);
}
public List<User> selectUser(){
List<User> l=this.um.selectUser();
return l;
}
public int deleteUser(int uid){
int num=this.um.deleteUser(uid);
return num;
}
public int updateUser(User u){
int num=this.um.updateUser(u);
return num;
}
}
(5)mapper.xml的映射文件UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dao.UserMapper">
<insert id="AddUser" parameterType="user">
insert into user values(#{uid},#{money})
</insert>
<select id="selectUser" resultType="user">
select * from user
</select>
<delete id="deleteUser" parameterType="int">
delete from user where uid=#{value}
</delete>
<update id="updateUser" parameterType="user">
update user set money=#{money} where uid=#{uid}
</update>
</mapper>(6)spring的主配置文件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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">
<!-- 扫描注入 -->
<context:component-scan base-package="com"></context:component-scan>
<!-- <bean id="userAction" class="com.handler.UserAction" scope="prototype">
<property name="us" ref="userService"></property>
</bean> -->
<!-- <bean id="userService" class="com.service.UserService">
<property name="um" ref=""></property>
</bean> -->
<!-- 配置数据源 -->
<!-- 引入键值对文件 -->
<context:property-placeholder location="classpath:DB.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${driverClass}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="user" value="${user}" ></property>
<property name="password" value="${password}"></property>
</bean>
<!-- 整合sessionfactory -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:conf.xml"></property>
<property name="mapperLocations" value="classpath:com/mapper/*.xml"></property>
</bean>
<!--配置mapper接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"></property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事务属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<!-- 声明式事务 -->
<aop:config>
<aop:pointcut expression="execution(* com.service.*.*(..))" id="pc"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
</aop:config>
</beans>
(7)mybatis的核心配置文件conf.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <package name="com.bean"></package> </typeAliases> </configuration>(8)struts的核心配置文件struts.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <constant name="struts.objectFactory" value="spring"></constant> <package name="default" namespace="/" extends="struts-default"> <action name="userAction" class="userAction" method="AddUser"> <result type="redirectAction"> <param name="actionName">selectAction</param> <param name="namespace">/</param> </result> </action> <action name="selectAction" class="selectAction" method="select"> <result>/show.jsp</result> </action> <action name="deleteAction" class="deleteAction" method="delete"> <result type="redirectAction"> <param name="actionName">selectAction</param> <param name="namespace">/</param> </result> </action> <action name="updateAction" class="updateAction" method="update"> <result type="redirectAction"> <param name="actionName">selectAction</param> <param name="namespace">/</param> </result> </action> </package> </struts> 展示界面show.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'show.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <table border="1px"> <tr> <td>uid</td> <td>money</td> <td>opt</td> </tr> <s:iterator value="l" var="u"> <tr> <td><s:property value="#u.uid"/></td> <td><s:property value="#u.money"/></td> <td><a href="deleteAction?uid=<s:property value="#u.uid"/>"style="width: 40px"> delete</a><a href="update.jsp?uid=<s:property value="#u.uid"/>&money=<s:property value="#u.money"/>">update</a></td> </tr> </s:iterator> </table> </body> </html>
运行结果:
添加成功后的查询结果:
相关文章推荐
- spring+struts+mybatis三大框架整合配置
- myeclipse+struts+spring+mybatis+mave的框架整合---spring+mybatis
- SSM整合---SpringMVC、Spring、MyBatis三个框架的整合步骤
- struts,spring,mybatis框架整合
- struts2+spring+mybatis框架整合详细介绍
- struts,spring和mybatis框架整合
- spring、mybatis和springmvc三个框架的整合
- struts+spring+mybatis框架整合
- 三大框架整合struts+spring+mybatis
- Struts+spring+mybatis框架整合
- struts+spring+hibernate三个框架的整合
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Spring+SpringMVC+Mybatis框架整合流程
- Struts+mybatis+spring整合tomcat启动报错
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Eclipse Maven建web项目 与SSM三大框架整合教程(Spring+SpringMVC+MyBatis)
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)