Struts2,mybatis,spring三大框架整合

配置方式--三大框架整合

使用的工具是j2ee开发工具,使用域maven,web项目,简单项目整合

    以登录为例:


准备工作:
1.jsp页面
<form action="User_login.action" >
        <table>
            <tr>
                <td>账户</td>
                <td><input type="text" name="uname"></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><input type="password" name="upass"></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="submit" value="登录"></td>
            </tr>
        </table>
</form>
2.建立一个User的实例
    public class User {
    private int id;
    private String uname;
    private String upass;
    
    public User() {
    }
    public User(String uname, String upass) {
        this.uname = uname;
        this.upass = upass;
    }
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getUpass() {
        return upass;
    }
    public void setUpass(String upass) {
        this.upass = upass;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", uname=" + uname + ", upass=" + upass + "]";
    }
}

3.创建action类
public class UserAction implements ModelDriven<User> {
    private UserService userService;
    private User user;


    //这里的构造函数,将会验证spring容器是否创建成功

    public UserAction() {
        System.out.println("UserAction创建了......");
    }
    //通过spring容器进行创建
    public void setUserService(UserService userService) {
        this.userService = userService;
    }


    public void setUser(User user) {
        this.user = user;
    }

    public String login(){
        if(userService.Login(user) ){
            return "success";
        }
        return "fail";
    }

    @Override
    public User getModel() {
        user=new User();
        return user;
    }
}
4.userService处理接口
public interface UserService {
    boolean Login(User user);
}
5.userServiceimpl实例化
public class UserSeriveImpl implements UserService {
    private UserMapper userMapper;    

    public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
    }
    @Override
    public boolean Login(User user) {
        
        return userMapper.getUser(user)!=null;
    }
}
6.UserMapper接口
public interface UserMapper {

    User getUser(User user);

}
7.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.yc.spring.mapper.UserMapper">
    <select id="getUser" parameterType="User" resultType="User">
        select * from users where uname=#{uname} and upass=#{upass}
    </select>
</mapper>

8.数据库
drop table users;
create table users(
    id int primary key,
    uname varchar2(10),
    upass varchar2(20)
);
insert into users values(1,'admin','a');
commit;
select * from users;
准备工作就绪
1.struts2-spring融合

a.在pom.xml中加载所需包
        <!--struts包框架 -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.5-BETA3</version>
        </dependency>

        <!-- spring框架核心 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>

        <!-- 日志 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>2.5</version>
            <type>pom</type>
        </dependency>

        <!-- 日志适配器 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.5</version>
        </dependency>

        <!-- spring在web端 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        
        <!-- spring持久化 支持包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-spring-plugin</artifactId>
            <version>2.5-BETA3</version>
        </dependency>
        

b.在spring中加入struts2中的action以及业务处理类
<?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:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
       <bean id="userService" class="com.yc.spring.serviceImpl.UserSeriveImpl"/>
       
       <!-- 配置struts2中action -->
       <bean id="userAction" class="com.yc.spring.action.UserAction" p:userService-ref="userService"/>
       
</beans>
       
c.struts.xml 中配置所需action,配置struts.objectFactory常量
    
    <?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" />    //把struts框架交给spring容器处理
     <package name="default" namespace="/" extends="struts-default">
        <action name="User_login" class="userAction" method="login">
            <result>/login.jsp</result>
            <result name="fail">/index.jsp</result>
        </action>
    </package>

    </struts>

测试



2.Struts2-spring-mybatis三大框架融合

a.mybatis是数据处理部分,所以在pom.xml中加载所需包


        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.1</version>
        </dependency>
        <!-- mybatis-spring整合包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
               <artifactId>mybatis-spring</artifactId>
               <version>1.3.0</version>
        </dependency>

b.在spring.xml中融合dataSource,SqlSessionFactory,映射接口实现dailibean


<?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:util="http://www.springframework.org/schema/util"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd

          http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">


       <bean id="userService" class="com.yc.spring.serviceImpl.UserSeriveImpl" p:userMapper-ref="userMapper"/>
       
       <!-- 配置struts2中action -->
       <bean id="userAction" class="com.yc.spring.action.UserAction" p:userService-ref="userService"/>
       
       <!-- oracle配置数据源 -->
       <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
       p:driverClassName="oracle.jdbc.driver.OracleDriver" p:url="jdbc:oracle:thin:@localhost:1521:orcl"
       p:username="ssm" p:password="a"/>
       
       <!-- sqlSessionFactory对象
       p:dataSource-ref:数据源
       p:typeAliasesPackage:mybatis实体类型指定别名的包
       p:mapperLocations:mybatis的配置文件所在的位置
       p:configLocation:配置路径
        -->
        
       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
       p:dataSource-ref="dataSource"
       p:typeAliasesPackage="com.yc.spring.entity"
       p:mapperLocations="classpath:Mapper/*Mapper.xml"
       />
      <!--  没有配置p:configLocation="classpath:mybatis.xml" 因为没有mybatis.xml -->
         
       <!-- 配置映射接口代理实现类的bean,bean id默认为映射接口的首字母小写  如:UserMapper bean名为userMapper -->
        <!--class="org.mybatis.spring.mapper.ClassPathMapperScanner"  -->
       <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
            p:sqlSessionFactoryBeanName="sqlSessionFactory"
            p:basePackage="com.yc.spring.mapper"/>
       

</beans>

junit测试部分,测试数据源和sql工厂


c.把struts2部分和mybatis部分放在一起终归是不好的,因为struts2是处于表现层和业务处理层,而mybatis处于

业务处理和数据访问层,所以就把spring.xml分为spring-common.xml和spring-mybatis.xml


spring-mybatis.xml


spring-common.xml


在这里我们引入了命名空间context,我们就可以只保留橙黄色部分,如果没有引入命名空间,而我们要保留红色部分

junit测试也要发生相应的变化,在测试数据源时,容器只要改成mybatis的容器,但是

在测试业务处理时,就要写入两个容器作为一个容器



注解方式--struts2,mybatis,spring三大框架整合

橙黄色的部分就是要使用注解方式构建三大框架


在这里先了解几种注解
base-package:扫描指定的bean包
   如果发现
   @Controller:表示控制层的bean
   @Repository:表示是持久层的bean
   @Service:表示业务层的bean
   @Component:表示普通bean
目前来说作用一样都是标识指定类这是一个bean


就像下面这张图片一样,

@Controller(userAction')

就好比如在spring-common.xml中配置了一个bean


   <!-- 配置struts2中action -->
       <bean id="userAction" class="com.yc.spring.action.UserAction" p:userService-ref="userService"/>


@Autowried在UserActionlei中给userService注值


@Serivce("userService")

就好比如在spring-common.xml配置了

   <bean id="userService" class="com.yc.spring.serviceImpl.UserSeriveImpl" p:userMapper-ref="userMapper"/>

@Autowried :就是给userMappper注值

这样三大框架就融合在一起了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wen's

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值