spring-struts2-mybatis

Spring整合struts2和mybatis形成了一套web项目的后台框架架构;
在这一套架构中:
struts2负责表现层的工作;
mybatis负责数据访问层的工作;
spring负责bean的创建传递和事务的处理。
下面做一个简单的用户注册的例子来测试三者之间的整合。
本文只是说明这个架构的逻辑,并不是详细的说明各个框架部分的配置。

首先,考虑数据访问层面,也就是mybatis的工作;
创建一个dao包,用于存放操纵数据库的接口。包里面有一个UserMapper的接口,由于当前是用户注册,所以在接口中定义一个向数据库插入用户的方法。
需要注意的是,dao包是直接对数据库进行操作的包。
在这里插入图片描述在这里插入图片描述接口定义使用了@Repository来进行接口bean的注册,这也体现出spring的作用。
接口+xml映射器中的xml,配置的是dao包中接口的xml。
根据mybatis框架中接口+xml的配置方式,想要使用UserMapper操纵数据库还需要为UserMapper配置xml文件,设置namespace,resultmap之后,为insert方法做配置:
在这里插入图片描述这里的parameterType表示UserMapper的全类名,已经为它设置了别名User,所以直接使用User即可;id对于的就是insert方法。
根据insert标签中的SQL语句,就可以对数据库进行操控,参数从传递进来的user对象中取得。
这样,调用UserMapper的insert方法就可以对数据库进行操控。
设置了直接对数据库进行操纵的dao包之后,设计Service层,接收controller的请求,并将数据库访问的结果反馈给controller。
首先,创建一个存放service接口的包。
在这里插入图片描述这个包中,只定义方法,不做具体的实现。
在这里插入图片描述其次,创建一个专门存放用于实现这些接口的类的包。
在这里插入图片描述我们在接口处定义方法,而在类中给出这些方法的具体实现;
在这里插入图片描述在这个实现类中,使用@Service将类注册为Service层的bean,也是目前唯一的UserService类型的bean,这意味这在表现层可以使用Service类型注入这个bean。使用@Autowired将userMapper注入到方法中,使用@Autowired注入后,就可以通过userMapper对象调用其中定义的操纵数据库的方法。这里将接口的insert方法做了具体的实现,插入用户后得到一个返回值。
既然实现类中实现了对于数据库操纵的方法,为什么要做一个操纵数据库的接口和接口的实现类呢?
这就是面向接口编程的思想,定义与实现的分离,这在大型项目中非常重要。
定义一个接口,就像定义一个框架,在这个接口的基础上做具体的实现;
而且这样做方便维护;
例如需要做插入两个用户的操作,需要调用两次insert方法,不在这个方法上修改,重新创建一个接口的实现类。

我们还需要做一个domain包,用于存放user这种对数据库具体对象的定义类:
在这里插入图片描述User类中的属性根据数据库的user表设计,这里user有两个属性,id和name,设置这两个属性的setter和getter方法。这里user需要实现序列化,重写toString方法。
这样,就可以使用user对象作为insert方法的参数。

至此,mybatis的工作已经基本完成,接下来是struts2:
首先,创建controller包,存放控制层操作的action:
在这里插入图片描述在UserAction中对用户传递的数据交给数据库进行处理,对数据库返回的结果处理后反馈给用户;
在这里插入图片描述这是UserAction的核心代码register方法;在UserAction中定义了一个user对象,使用这个对象接收用户传递的数据,并将这些数据使用user对象打包后交给service层处理;
使用@Autowired将UserService依赖注入,这里采用是使用类型注入,目前spring中类型为UserService的bean只有一个,也就是UserService的实现类;
使用实现类的insert方法将用户输入的user对象进行插入数据库的操作;数据库插入用户成功,说明当前id不存在,跳转用户注册成功的页面;用户注册失败,参数i肯定还是0,跳转用户注册失败的页面。
下面是对于UserAction的xml配置和用户注册的jsp页面:
在这里插入图片描述由于对UserAction做了注册,所以class直接使用bean的id即可;
将action的name设置为user,所以访问UserAction的register方法链接应该是上下文+user!register.action;
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值