ssh详细原理流程及配置

来源:互联网 发布:小米盒子免费视频软件 编辑:程序博客网 时间:2024/05/20 04:48
          踏实一些,不要着急,你想要的,岁月都会给你

最基本的分层方式,结合了SSH架构。modle层就是对应的数据库表的实体类(如User类)。Dao层,一般可以再分为***Dao接口和***DaoImpl实现类,如userDao接口和userDaoImpl实现类,接口负责定义数据库curd的操作方法,实现类负责具体的实现,即实现Dao接口定义的方法。Service层,引用对应的Dao层数据库操作,在这里可以编写自己需要的代码(比如简单的判断),也可以再细分为Service接口和ServiceImpl实现类。Action层:引用对应的Service层实现业务逻辑,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理、前端输入合法性检验(前端可修改网页绕过前端合法性检验,需在后台加一层)。

Action像是服务员,顾客点什么菜,菜上给几号桌,都是ta的职责;Service是厨师,action送来的菜单上的菜全是ta做的;Dao是厨房的小工,和原材料(通过Hibernate操作数据库)打交道的事情全是ta管。

 对象的调用流程:前端JSP或JS等—Action—Service—DAO—数据库。

modle层就是对应的数据库表的实体类。Dao层是使用了hibernate连接数据库、操作数据库(增删改查)。Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断)。Action层:引用对应的Service层,在这里结合Struts的配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理。以上的Hibernate,Struts,都需要注入到spring的配置文件中,Spring把这些联系起来,成为一个整体。

一般Java都是三层架构 数据访问层(dao) 业务逻辑层(biz 或者services) 界面层(ui)
action 是业务层的一部分,是一个管理器 (总开关)(作用是取掉转)(取出前台界面的数据,调用biz方法,转发到下一个action或者页面)
模型成(model)一般是实体对象(把现实的的事物变成java中的对象)作用是一暂时存储数据方便持久化(存入数据库或者写入文件)而是 作为一个包裹封装一些数据来在不同的层以及各种java对象中使用
dao是数据访问层 就是用来访问数据库实现数据的持久化(把内存中的数据永久保存到硬盘中)

Dao主要做数据库的交互工作
Modle 是模型 存放你的实体类
Service 做相应的业务逻辑处理
Action是一个控制器

login.jsp—>struts.xml(产生action)—>action对象处理

   客户端发送请求------>strust拦截请求------>相应action处理请求------>service层业务逻辑处理------>hibernate负责数据交换------>返回结果数据------>service层处理结果数据------>action接收请求处理结果------>strust负责回送请求结果到客户端...

jsp页面发出请求,struts接收页面请求,struts的action调用业务逻辑,
业务逻辑调用业务组件(其中使用到spring的依赖注入IoC,或者AOP等);
业务组件根据hibernate的对象/关系数据库的映射关系查询数据库。struts根据结果返回页面

ssh详细开发流程:
1.引入相应的ssh的jar包
2.配置web.xml文件:1)配置spring,使服务器自动加载;
3.整合struts,就是将其action类交给spring进行管理(包括action,service,dao),自己定义新的 spring-bean.xml文件,进行struts与spring的对应;
4.在struts2.xml中配置相应的action,(分开定义struts文件,最后整合到一个),即实现spring管理action
5.整合hibernate3:主要是对hibernate的Session(是hibernate操作数据库的一个句柄对象)进行管理,包含 session的创建,提交,关闭的整个生命周期;配置appliContext.xml(配置sessionFactory,让spring来创建 session;配置事务管理器 ;对事务管理进行事务设置)

(配置规范:
1.spring框架
Spring实现对struts的action类的管理,对于每个不同模块创建一个spring的配置文件,其命名为:spring-模块名.xml。如:对user创建一个spring-user.xml配置文件,然后在applicationContext.xml里面import这个进去。
2.struts2框架
为了防止struts的配置文件过于庞大,采用每个模块创建一个struts的配置文件,其命名为:struts-模块名.xml。如:对user创建一个struts-user.xml的配置文件,然后在struts.xml里面include这个配置文件
3.hibernate框架
对于每个对象,创建一个hibernate的配置文件,其命名为:对象名-hbm.xml,如:user,创建的配置文件为:User-hbm.xml。然后在applicationContext.xml里面进行管理
4. 配置文件书写规范:
1. struts.xml采用一个action类对应一个action,一个模块,一个package,尽量避免使用带*号的配置,保证可读性;
2. spring用来管理struts的action,一个模块要对应一个spring的配置文件。如:对于user模块,要有一个对应的spring配置文件,spring-user.xml
3. hibernate对于对象的配置文件,变量名称要一致
5. 配置文件路径:
1. struts-模块名.xml放在resource/struts下面;
2.sping-模块名.xml放在resource/spring下面
3.对象名.hbm.xml放在resource/hibernate下面
4. 其他放到resource目录;
6. 类命名规则:
1. 采用驼峰标识;
2. 各个层之间通信尽量精简数据流量,提高系统运行效率;
3. 接口定义遵循正常人思维;
4. 各层命名规则:
1. action:XxxAction;
2. service:XxxService;
3. service.impl:XxxServiceImpl;(services是接口,定义服务;service.impl是实现类,为具体的实现方法)
4. dao:XxxDao;
5. dao.impl:XxxDaoImpl;
6. model:XxxModel;
7. util:Xxx(Util)可选;
7. 类体方法常量等等定义规范:
1. getter和setter方法由IDE自动生成,放在所有逻辑方法之后;
2. 方法命名规则:xxxYyyZzz()首字母小写驼峰标识;
3. 变量定义规则:xxxYyyZzz,统一用private声明;
4. util中的类统一用static声明必要时用final;
5. 常量类:定义常量采用大写字母,并用static、final声明;
6. 枚举:大写字母; )

biz是Business的缩写,实际上就是控制层(业务逻辑层)。
解释:控制层的主要作用就是协调model层和view层直接的调用和转换。能够有效的避免请求直接进行数据库内容调用,而忽略了逻辑处理的部分。实际上biz就起到了一个server服务的角色,很好的沟通了上层和下层直接的转换,避免在model层进行业务处理(代码太混乱,不利于维护)。

ui下的action类处理业务,src下有dao、entities(类的成员)、mapping、sevice,WebRoot下的js控制布局,
service调用的dao方法;

浏览器查看源代码,先找到布局文件.js,再找到数据源action(network里面均有);action类调用service类处理业务,service类调用dao操作数据库获取数据,再一层层返回;applicationContext_db.xm配置spring、hibernate与数据库的映射,jdbc.properties存放链接数据库的信息下拉框的数据源optionDataSource在js/ds下定义的(通过操作数据库取出的数据action--dao--sqlserver)面向接口编程,表示层调用控制层,控制层调用业务层,业务层调用数据访问层。

applicationContext_*.xml
把DAO注入到SERVICE,把service注入到actiton:
xml中:

<`bean id="mydao" class="*****"></bean>``<bean id="service" class="******">  <property name="yourdaoname" ref="mydao" /></bean><bean id="action" class="********"> <property name="yourservicename" ref="service" /></bean>

action在Struts.xml中定义,在aplicationContext.xml中配置(如上)

jsp/html–>js–>action–>service–>dao–>操作数据库(涉及到ssh的配置,applicationContext_*.xml)

0 0