SSH架构

说说项目架构整个变化过程吧

拿用户注册来举例:

数据库里面有一张User表

需要把注册信息存储到User表中

1.   最开始是两层架构

就是cliect   +  jsp    +   DB

就是在view里面直接操作数据库,就是在视图上建立数据库连接,然后把每个字段存储到数据库中

2. 构造一个Entity类

cliect   +  jsp    +  Entity + DB

对Entity的管理交给Jsp

建立一个User类,view中先对User进行实例化,然后再进行存储

这一步没有什么意义

3.  加入管理层

cliect +  jsp  +  Entity + Service + DB

把对User的管理交给Service层

管理层,也就是业务逻辑层

4. 使用Hibernate对数据库进行操作

这种做法是在项目中引入了Hibernate

Hibernate的作用是把数据插入到数据库中。

但是,

如果要跨数据库呢

如果要把数据存储到Xml文件中或者网络上呢而不需要数据库呢

所以UserManage对User的存储就不能写死成了Hibernate或者JDBC或者xml

所以要引入DAO层

5.  加入DAO层

cliect +  jsp  + UserManage + UserManageImpl+  User+ +UserDAO + UserDAOimpl + DB

把对数据的存储操作抽象成一个接口,这个接口里面定义增删改查的方法,然后有不同的实现类,实现不同的存储方式

可以把业务逻辑类也抽象出来,不过这种做法并不多

6.  引入Struct,也就是引入MVC

Controller就是Struct的filter

Action先执行业务逻辑,然后根据配置的view在,返回结果

7. 引入spring

spring其实是贯穿于整个过程的

在抽象需要实例化的地方用spring的IOC

在各个业务处理的时候可以用spring的AOP

在这里面,UserManage拿userDAO的时候使用的是注入(必须给他一个实现类)

Action用UserManage的时候也是注入

所以

spring和struct2结合的主要地方是Action

Action本来是属于struct的,但是要想利用spring,必须把它交给spring容器才行。

实际上,spring是struct的一个插件

在struct的文档插件一节可以看到spring插件

所以,spring才是主导,struct向spring要需要的Action。(即要的时候向插件来要)

8.      配置

要加入spring

web.xml中要有监听器,在application启动的时候,找到bean所对应的xml的文件,并初始化所有的bean

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        <!-- default: /WEB-INF/applicationContext.xml -->
    </listener>

默认寻找的路径是 WEB-INF/applicationContext.xml

如果改了路径或者改了名称,需要配置

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <!-- <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>  -->
        <param-value>classpath:beans.xml</param-value>
    </context-param>

classpath 表示是在src文件夹下

*的意思是可能配置文件有多个,比如不同的业务配置不同的文件,这里一下子读进来

这样,在启动的时候就启动了spring容器

下一步,把Action配到spring中去

加入struct2-spring-plugin.jar包

然后找到相应的Action,加上@Compont和@Resource,这样就交给了spring管理

struct2-spring-plugin.jar这个jar包里有一个文件struct-plugin.xml:

<struts>
    <bean type="com.opensymphony.xwork2.ObjectFactory" name="spring" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />

    <!--  Make the Spring object factory the automatic default -->
    <constant name="struts.objectFactory" value="spring" />

     .......

</structs>

有一个name=spring的bean是一个springFactory

一般情况下,Struct需要一个Action的时候,会去找自己的StructFactory,但是在执行上面后,会去找spring拿,而springFactory会自动找到配置文件

比如struct中Action的name为User

它会根据这个名称到spring容器中找到name为User的bean

Struct启动时,读取文件de顺序

  • 1.Structs-default.xml
  • 2.Structs-plugh.xml
  • 3.structs.xml
  • 4.struct.properties
  • 5.web.xml

而spring启动是在web.xml中,也就是说应用启动时,spring容器就已经初始化了,当struct需要时,直接去容器中拿。

时间: 2024-08-10 07:22:11

SSH架构的相关文章

软件工程实践--SSH架构

小学期实践我们用到的是SSH架构(struts+spring+hibernate的一个集成框架),因为之前更多的是写纯代码,很少涉及到架构,所以在整个过程中遇到的问题较多,但做技术的,想做好就得有耐心(当然做什么都需要坚持).之前看过相关的书籍,参考了百度上的讲解,SSH架构大概就是(这里是参考百度的讲解,虽然自己也想表达这种意思,但怕自己不能用专业术语说清楚):集成SSH框架的系统从职责上分为四层:表示层.业务维护层.数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰.可复用性好.维护方

SSH 架构

这几天学习了 ssh 架构,中间出了好多错误,现在终于整理好了,就记录下来 ssh机构的框架构成,以及它们的作用 struts2 :这个框架主要用做控制处理的,其核心是 Contraller ,即 ActionServlet.而 ActionServlet 的核心是 struts.xml.用于分配处理web请求需要执行哪个业务逻辑. spring :spring 可以理解为粘合剂的作用.它把这三个框架糅合在一起使用.利用本身的控制反转(IOC) 来达到解耦的目的. Hibernate:及时数据持

基于java的ssh架构的2018最新 酒店信息管理系统【原创】-未经同意请勿转载

网络上流传的大部分95%以上的程序都是跑不通的,应大部分同学要求,现写了一个酒店管理信息系统. 是ssh的架构, 基于java的 . 贴2个截图 第二个 原文地址:https://www.cnblogs.com/qq2032333807/p/8178807.html

SSH架构图及各部分知识点

SSH分别是指:Struts,Spring,Hibernate 下面是SSH三部分简单主要的知识点: Sturts: execute :     execute()方法相当于main()方法,有三种创建模式 : 1 自定义类,类里面不能写main()方法,写个execute方法,返回值为一个字符串,和struts.xml里面的<result name="字符串">对应就行     public String execute() {            return &qu

从Java Web 基础看SSH架构

Java Web开发现在已然成为大型Wed项目的标准,之前一直盲目的使用框架,往往知其然不知其所以然.在经过一段时间的学习与开发,大概掌握了其脉络的基础上,对其做一定总结. 一.Java Web 基础 一个典型的Java Web项目往往包含这些元素:Jsp页面.Servlet.Listener.Filter,以及配置文件web.xml.其中: Jsp和Servlet基本是一回事,主要用来响应客户端的请求.当然Jsp中可以直接嵌入HTML标签,主要还是负责展现. Listener则是负责监听Web

ssh架构 简易博客

不会做美工,,so ,界面很丑. com.blog.domain Article.java 1 package com.blog.domain; 2 3 import java.io.Serializable; 4 import java.sql.Timestamp; 5 6 public class Article implements Serializable { 7 8 /** 9 * 10 */ 11 private static final long serialVersionUID

SSH框架整合配置所需JAR包(SSH整合)

Hibernate Jar: 1.hibernate3.jar,这个是hibernate3.0的核心jar包,没的选,像我们常用的Session,Query,Transaction都位于这个jar文件中,必要. 2.cglib-2.1.3.jar,CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必要. 3.asm.jar ASM字节码库 如果使用"cglib"则必要,必要 4.asm-attrs.jar ASM字节码库 如果使用"cglib&qu

JAVA SSH 框架介绍

SSH 为 struts+spring+hibernate 的一个集成框架,是目前较流行的一种JAVA Web应用程序开源框架. Struts Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的.由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注.Struts把Servlet.JSP.自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套M

ssh笔记整合

1.整合Spring和Hibernate框架JBOA数据库设计1.部门表2.雇员表3.职位表4.报销单表5.报销单明细表6.审核记录表2.SSH架构 1.Struts 2+Spring+Hibernate 2.以Spring作为核心框架,数据持久化使用 Hibernate完成,表现层使用Struts 2 3.Spring提供对象管理.面向切面编程等实用功能 4.通过Spring提供的服务简化编码.降低开发难度.提高开发效率 1.整合思路 1.逆依赖方向而行.由spring提供对象管理和服务 2.