首页 > 程序开发 > web前端 > HTML/CSS >

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

2016-11-04

传统的ssh框架分七层分别是entity,action,service,serviceImpl,dao,daoImpl还有个公共util,这里注意一点,我的config文件夹和src文件夹建成一样的,建时看清图标。

一.框架结构

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添加这句话,就可以自动生成数据表

update

但是这里主键就会自增,所以主键一定不要是要插入数据的字段,否则你输入要存的值就会改变。

相关文章
最新文章
热点推荐