SSM框架组建之总体架构规划与项目发布

  • 第一步:项目整体逻辑设计
  • 第二步:DAO层框架构建
  • 第三步:构建Service层
  • 第四步:web 层设计
  • 第五步:SSM 项目的打包与发布(win10 从 Tomcat 服务器到局域网)
  • 1. Tomcat 项目部署
  • 2. 局域网端口开放



       初学 SSM 框架,自己总结了点框架构建的流程以及相关要点。不足之处还请大佬批评指正。

第一步:项目整体逻辑设计

       项目开始的第一步,是要明白自己的项目都要干些什么事,需要实现哪些功能,以及如何实现这些功能。同时,要对项目进行严格的分层管理。分层管理即对同一类功能模块的代码进行整合,能够在一定程度上加速代码的编写效率。
       话不多说,先放上一张我建立的项目总体框架:

project
 │  pom.xml  —— maven配置文件,第一个写,包含项目所需的各种依赖
 │              	具体配置参考E:\Java\java-workspace\project\pom.xml
 │		一般网页出现500就是配置文件出问题
 │      
 ├─src
 │  ├─main
 │  │  ├─java  ——  .java文件存放
 │  │  │  ├─dao  —— DAO接口存放 --用于对接数据库的业务功能接口
 │  │  │  │  *.java  —— DAO接口,命名习惯:实体类名+Dao.java
 │  │  │  │      
 │  │  │  ├─dto —— DTO类存放 --用于设计模式之间传输数据格式等
 │  │  │  │  *.java —— DTO类
 │  │  │  │      
 │  │  │  │      
 │  │  │  ├─entity  —— 实体类对象存放 --执行对业务的封装
 │  │  │  │  *.java  —— DAO接口对应的实体类
 │  │  │  │      
 │  │  │  ├─enums —— 枚举字典存放 --存放一系列规定好的状态,方便后期维护、提高代码的可读性
 │  │  │  │  *.java —— 枚举类 ,定义固定且数据量小的状态
 │  │  │  │      
 │  │  │  ├─exception —— 异常抛出类文件存放
 │  │  │  │  *.java —— 定义可能出现的运行异常
 │  │  │  │      
 │  │  │  ├─service —— spring的service层业务功能文件存放
 │  │  │  │  │  *.java —— service层业务功能接口定义
 │  │  │  │  │  
 │  │  │  │  └─impl —— service层接口实现类文件存放
 │  │  │  │     *.java —— service层接口实现类,命名习惯:接口名+Impl.java
 │  │  │  │      
 │  │  │  └─web —— SpringMVC控制层文件存放,用以控制表现层(web)端动作
 │  │  │     *.java —— SpringMVC控制层文件
 │  │  │                  
 │  │  ├─resources  —— 存放 .xml文件,即MyBatis和spring的路径依赖
 │  │  │  │  jdbc.properties —— 数据库相关配置,在spring-dao.xml文件中作为导入
 │  │  │  │  logback.xml —— 定义控制台日志文件输出格式
 │  │  │  │  mybatis-config.xml —— MyBatis的全局属性配置
 │  │  │  │  
 │  │  │  ├─mapper  —— 基于 MyBatis 的 DAO 接口映射实现,存放mapper依赖
 │  │  │  │       *.xml	命名规范 mapper 对应的 DAO 映射是什么,命名就是对应接口名 + .xml
 │  │  │  │      
 │  │  │  └─spring  —— 存放 spring 相关配置
 │  │  │           spring-dao.xml  —— 配置 spring,整合 MyBatis
 │  │  │           spring-service.xml —— 配置 spring-IOC , 服务层
 │  │  │           spring-web.xml —— 配置 SpringMVC
 │  │  │          
 │  │  ├─sql  —— sql 文件存放
 │  │  │      *.sql
 │  │  │      
 │  │  └─webapp  —— java_web 配置
 │  │      │  index.jsp  —— 默认首页
 │  │      │  *.jsp  —— 分支网页
 │  │      │  
 │  │      ├─resources —— 插件路径存放 js/css/json/image...
 │  │      │  
 │  │      ├─META-INF
 │  │      │      MANIFEST.MF
 │  │      │      
 │  │      └─WEB-INF
 │  │          │  web.xml  —— web项目配置文件,注意,在创建maven项目时,
 │  │          │ 		默认的web.xml无法使用,想要简单调用需
 │  │          │ 		将其修改为 Tomcat 中的样例 web.xml
 │  │          │  
 │  │          ├─jsp —— 分支网页存放,包含业务功能网页不被直接访问
 │  │          │  │  *.jsp  —— 业务分支网页
 │  │          │  │  
 │  │          │  └─common —— 公共包含索引,减少代码的重写量
 │  │          │      *.jsp —— 页面模板等设计存放,以 jsp 引入的方式进行导入
 │  │          │  
 │  │          └─lib —— 存放 web 端的 jar 包导入
 │  │     
 │  └─test  —— 单元和集成测试代码
 │      ├─java  ——对应 main/java 的测试代码存放
 │      └─resources —— 对应 main/resources 的路径映射
 └─target
       *(projectName).war —— 用于发布到本地部署的Tomcat服务器


附上该树状结构图绘制方法 :打开命令行,利用cd命令找到想要生成树状图的文件夹,在对应的目录下输入命令: tree /f >tree.txt 即可在对应的文件夹下找到生成的 tree.txt

第二步:DAO层框架构建

       DAO(data access object)层叫数据访问层。负责实现 java 项目工程和数据库之间的连接。所有对数据库进行的操作,都是在该层中进行功能实现。在 SSM 框架中,使用 MyBatis 和 Spring 进行管理。该层主要的工作是进行DAO接口的设计与实现, entity(实体)类的编写与 sql 语句的编写。
       DAO层建设优势:

  1. 实现 java 代码和 sql 的分离
  2. DAO拼接等逻辑在Service层完成

第三步:构建Service层

       Service 层叫服务层,主要实现业务逻辑上的接口和对应的实现类。该层的功能设计,要求设计者同时站在“使用者”和“开发者”的角度考虑问题,并进行业务逻辑方法的编写。允许有冗余的存在。可以说,service 层是整个 SSM框架下 java_web 项目的核心层。
       service层使用 Spring 进行托管。→ 即通过 Spring IOC 的方式进行依赖的注入。
       使用 Spring IOC 优势

  1. 对象创建的统一管理:对象的创建是由Spring 统一进行管理,而不是通过 new 的方式进行对象的创建。
  2. 规范的生命周期管理:
  3. 灵活的依赖注入:通过注解、编程、第三方依赖
  4. 一致的获取对象:都是从IOC容器中获取实例对象

       Spring-IOC 注入方式中,最常用的是XML和注解,其中XML主要针对第三方库的调用,注解主要针对自身项目开发中的使用类。
       Service 声明式事务:目的,解脱事务代码,实际开发时不关心事务什么时候开启、关闭、回滚等事务操作。
       事务方法嵌套:声明式事务的独有概念:传播行为 →(默认)propagation_required:当有新的事务加入时,如果有就加入到原有的事务行列中,如果没有,就创建一个新的事务。
       使用注解控制事务方法的优点:

  • 有利于开发团队达成一致的约定,明确标注事务方法的编程风格
  • 保证事务方法的执行时间尽可能短,不要穿插其他网络操作。如果必要,则将请求剥离到方法外部,事务方法中只有数据库相关操作。RPC / HTTP请求 → 对高并发、流程很不友好
  • 不是所有的方法都需要事务,如只有一条修改操作,只读操作不需要事务控制

service 层 组件注解含义:

注解名

用途解释

@Component

通用组件代表所有组件,当不知道该java类具体属于dao, service,conroller等时使用。统称spring组件实例

@Controller

web 页面控制组件,作用于表现层(spring-mvc的注解)

@Service

服务层控制,作用于业务逻辑层

@Autowired

对类成员变量、方法及构造函数进行标注,完成自动装配工作

注意:编译期异常与运行期异常区别:

  • 运行期异常抛出时,系统会自动进行回滚(rowback),系统不会停止运行;
  • 编译期异常抛出时,系统不会进行回滚操作,直接报错并停止运行。

注意事项:在代码编写阶段,当 DAO 层的接口设计完毕,service层的逻辑代码实现完毕后,必须对其进行功能测试,防止出现功能错误。

第四步:web 层设计

       web 层的设计主要考虑 controller(控制功能)的实现。该层的主要功能在于连接系统后端与web。因此,该层主要面向 SpringMVC 控制类的编写。
       需要考虑的要点在于:

1、前端交互设计(页面如何交互及交互细节)
2、Restful :URL设计规范(互联网公司常用规范)—— Restful的本质是URL表达方式,是一种资源的状态和状态的转移
3、SpringMVC:MVC框架核心,如何配置,实现 restful 接口
4、web端页面设计 —— bootstrap + jquery:页面布局 + 样式 + 交互
5、URL设计: /模块 / 资源 / {标示} / 集合/ ...

Restful规范:

Restful 方法

具体解释

GET

查询操作,可以不断执行

POST

添加/修改操作

PUT

修改操作 (与POST没有太明显的区别)

DELETE

删除操作

@RequestMapping注解(SpringMVC使用):
1、支持标准的URL
2、支持Ant风格URL[ 匹配一个字符(?),匹配任意字符(*),匹配任意url路径(**) ]
3、{xxx}占位符URL
4、参数含义:
value/path : 指定请求的实际地址,指定的地址可以是 URI Template 模式
method : 指定接受请求的类型,GET、POST、PUT、DELETE 等
consumes : 指定处理请求的提交内容类型(Content-Type),如 application/json,text/html;
produces : 指定返回的内容类型 —— 在传递 json 数据时建议使用。ex: produces = {"application/json;charset=UTF-8"}) // 告诉浏览器 content type:指明json,指定charset,防止乱码 其中,当返回值为 json 时,需要在方法函数前使用 @ResponseBody 注解,用来告诉服务器,将该方法返回的数据类型封装为 json 类型。
       web页面存放路径:在webapp/WEB-INF下创建 package 用以存放 jsp / HTML—— 优势:将功能界面进行隐藏,能够不被浏览器通过url地址直接访问到,从而达到保护网页信息的效果。

第五步:SSM 项目的打包与发布(win10 从 Tomcat 服务器到局域网)

1. Tomcat 项目部署

       查找过挺多项目搭建的教程,教程通常都是以项目能在开发环境中完整运行为结束。并没有讲怎么进行项目的打包与发布,这里我总结了下自己的项目发布经验。我是用的是 Tomcat 服务器。

  1. 找到 target 文件夹下生成的 *.war 文件,将其复制到 Tomcat 的 webapps 文件夹下

如果没找到 *.war 文件,可以利用 maven 工具中的 war 进行项目打包,双击

总体架构管控原则 总体框架和基本思路_总体架构管控原则


总体架构管控原则 总体框架和基本思路_spring_02


2. 清空work文件夹,执行 bin 文件夹中的 startup.bat(window操作系统) / startup.sh(Linus操作系统)进行服务器启动。shotdowm.bat / shotdown.sh 关闭服务器。打开 webapps 文件夹,Tomcat 中自动将 war 文件解压完毕。

此时,打开浏览器,输入127.0.0.1:8080/[projectName] 就可打开项目。如果想通过127.0.0.1:8080打开项目,则需将对应文件夹中的文件复制到 ROOT 文件夹中。解压后如下图所示。

总体架构管控原则 总体框架和基本思路_xml_03


此时,项目部署到 Tomcat 完毕。

注意事项:将项目由开发环境转为Tomcat服务器部署环境时,需要考虑 url 的链接控制地址应与开发环境中保持一致,不然会报 500 资源映射不存在,找不到对应的后端服务器地址的错误。

2. 局域网端口开放

       设置局域网端口开放时,有参考教程原文:

  1. 打开作为服务器的电脑的网络共享
    打开 控制面板 → 网络和 Internet → 网络和共享中心 → 更改高级共享设置
    在网络发现中选择“启用网络发现”,保存设置,此时,在局域网下,别人就能通过网络访问你的电脑了。
  2. 配置防火墙
    1)打开 控制面板 → 系统和安全 → Windows Defender 防火墙 → 高级设置

    2)点击 “入站规则”,在“操作”栏,点击“新建规则”

    3)在弹出框中选择 “端口”,点击下一步

    4)选择特定端口,在输入框中输入“8080”(8080端口是默认Tomcat默认端口,如果Tomcat的默认端口被修改,则改为Tomcat对应的端口)

    5)之后一路“下一步”,在最后一步时,在名称中输入“Tomcat 连接端口”。点击完成,此时可以看到,在入站规则中,多出了刚配置好的“Tomcat连接端口”。端口配置完毕,此时打开Tomcat服务器,在同一个局域网下,通过 “服务器ip:8080” 的方式即可对项目进行访问。

    使用小贴士:获取本机在局域网中的 ip 可以通过命令行输入 ipconfig进行 ip 地址查询。