学生信息管理系统 SSH 框架使用及范型使用

一.框架结构
1.程序是jdk1.6的,oracle11g数据库,myeclipse10.
2.传统的ssh框架分七层分别是entity,action,service,serviceImpl,dao,daoImpl还有个公共util,这里注意一点,我的config文件夹和src文件夹建成一样的,建时看清图标。之后需要配置实体映射,也就是hibernate.xml 映射文件,而我这里使用的是hibernate注解,和base范型,所以不用配置hibernate映射文件,但在hibernate.xml文件需要引入实体的映射,application.xml文件要声明事务,声明是基于注解,还有struts.xml文件配置会一一介绍。
当前台传过数据或要执行方法时会先运行struts文件找到对应的Action,然后在Action里找起方法,从Action调Service层,然后ServiceImpl层调Dao层,接着在DaoImpl里实现sql,

我这里是dao层继承BaseDao,然后BaseDaoImpl最后实现的。

 
3.application.xml文件
因为我的application与hibernate没写到一起所以

首先会自动扫描bean,指定hibernate配置文件的位置,然后配置数据源等,最后配置声明事务,是基于spring注解的方式。之后会在程序中讲解注解的简单使用


 
4.struts文件
自动转码可以不设置,只要保证你程序编码格式,jsp页面编码格式和tomcat编码格式一致即可。就不会发生前台往后台传值变成乱码。这里struts文件就不过多介绍了,但要说一句struts扫描是有顺序的比如下面的constant,package,action,是要按顺序排下来的。
 


4.jar包的引入
这里统一放在webRoot\web-INF\lib下,放lib下不需要手动引入jar包,程序会自动导入,如果你感觉乱可以在lib下向下图建文件夹,但文件夹下的jar需要手动因包。
 


5.web.xml文件
网上有很多也都是一样的,就不介绍了。


二.需求和功能
1.我这里是学生,课程,成绩三者的关系,分别是学生一对多课程,课程一对多成绩,成绩多对一学生和成绩多对一课程。因为我用注解所以这里就不用为头痛的hibernate.xml映射文件而发愁了。
2.功能上设计最基本的了,增删改查,分页,模糊查询等。


三.编码
一.实体类  我这个是学生实体类,在这我使用了注解@entity和@table,这是说证明这个类是实体,table是对应的表,name="s_student"中的s_student 就是我数据库中的表名,
主键的注解是@Id,想把那个字段生成主键就在其getter方法上加上@Id,
 


二.实体里写用注解写关系


这是成绩实体需要写注解@ManyToOne,下面对应的是哪个实体哪一列,@JoinColumn是对应哪一列,name=的就是字段名。再强调一遍这里我是用的是spring注解方式,如果不用注解或不太确定怎么用就不要用写这些注释。安静去写对应实体的hibernate映射文件。

 




三.Action


Action里写方法和传值,然后调Service,这里我写的注解,如图1,如果不写注解就要配置application.xml文件。如图2.

 

图1


 
图2




以下都是重要的
页面上from表单会绑定Action和Action中的public方法如下图


 


Action调用Service方法和传值,这里调的就是studenService里的getById方法并传了个stuid的值如下图

 


Service 是接口,只要声明这个方法,然后让ServiceImpl去实现这个接口

 


ServiceImpl 实现Service 记着我用的是注解 这里依然要不注解写上,然后声明dao层,@Resource下就是声明Dao,让dao层去处理




BaseAction 抽象类 我这里用的是模型驱动 先声明Service 然后实现模型驱动


 




BaseDao 接口这里写了所有范型的方法通用的方法,也可在这里写自己的方法,然后让BaseDaoImpl实现,再让ServiceImpl继承BaseDaoImpl .这样通用的方法在dao层就什么都不用写了。




BaseDaoImpl 实现了BaseDao的范型 和通用的方法,还有自己要实现的方法都可以写在这,记得一样要写注解 这里@Transactional是事务,@Resource是资源 把sessionFactory 也要交给spring管理 

 
下边写了 这被保护的当前可用的session


DaoImpl:
之前不是ServiceImpl层叫给dao层了么,然后dao层我直接交给了basedao,通过basedaoimpl 实现后,现在我DaoImpl只要继承BaseDaoImpl 和对应实体 然后实现dao 就行了,所以这里不用写方法,方法都在BaseDaoImpl实现了。但这要写个注解@Repository 存储库的意思。 应该是这交给spring管理直接在这层调用存储,也就是增删改查。
 



综上所述就是SSH 一个请求的流程。
结合流程看代码一下就明白了,我这里表是自动生成的。
只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 
<property name="hibernate.hbm2ddl.auto">update</property> 
但是这里主键就会自增,所以主键一定不要是要插入数据的字段,否则你输入要存的值就会改变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值