SSM框架项目开发过程整理

开发轨迹

业务分析
DAO层实现
接口设计 + SQL编写
使用Junit测试功能
Service层实现
Web层实现
高并发优化
业务分析
针对业务需求做功能分割分层,抽象出实体和业务逻辑设计数据库

DAO层实现

涉及包:

dao
Data Access Object 数据访问对象
将非对象数据以对象的形式操纵
entity
数据库表映射的实体

流程:
使用配置文件整合Spring和MyBatis
设计和建立数据库及表,根据ORM规则创建Entity类
根据业务逻辑(CRUD)创建DAO接口
根据DAO接口创建对应的mapper.xml,手动书写SQL语句
注意:多参数传递要使用@Param注解
创建Junit4测试用例,并整合Spring
测试MyBatis的DAO层自动实现的功能

优点:
与其他层实现分离(DAO层拼接等逻辑在Service层实现)
DAO层工作演变成:接口设计 + SQL编写
代码与SQL分离,方便Review

Service层实现

涉及包:

service
具体业务实现接口定义
service.impl
实现service接口的实现类
dto
Data Transfer Object 数据传输对象
用于在不同层直接的数据传输(如Service层与Web层)
隔离不同层,降低层间耦合
exception
自定义的业务exception
enums
数据字典,存放业务相关的常量数据

流程:
设计Service接口,dto数据传输对象,自定义Exception和enum
设计Service接口实现类
配置Spring service层的xml配置及注解
创建Junit4测试用例并进行测试

Web层实现

前端交互设计:
根据需求设计前端交互流程
人员
产品
解读用户需求,设计满足用户需求的文档
前端
负责页面展示
后端
负责存储展示

Restful接口

一种优雅的URI表述方式
资源的状态和状态转移
示例
GET /seckill/list
OK
POST /seckill/execute/{seckillId}
WRONG
POST /seckill/{seckillId}/execution
OK(使用名词执行,POST表动作)
GET /seckill/delete/{id}
WRONG
DELETE /seckill/{id}/delete
OK

Restful规范

GET
查询操作
POST
添加或修改操作
非幂等
PUT
修改操作
幂等,可以使用相同参数重复执行,并能获得相同结果的函数,不用担心重复执行会对系统造成改变
对同一URL的多个请求应该返回同样的结果
DELETE
删除操作
URL设计
/模块/资源/{标示}/集合1/…
例子
/user/{uid}/friends 好友列表
/user/{uid}/followers 关注者列表

秒杀API的URL设计
GET /seckill/list 秒杀列表
GET /seckill/{id}/detail 详情页
GET /seckill/time/now 系统时间
POST /seckill/{id}/exposer 暴露秒杀
POST /seckill/{id}/{md5}/execution 执行秒杀

SpringMVC基础

围绕Handler开发
URL映射 注解@RequestMapping

  • 支持标准URL
  • Ant风格URL(?匹配一个字符,匹配任意字符,*匹配任意路径)
  • 带{xxx}占位符的URL

请求参数绑定

@PathVariable(“xxx”)
对应URL中的占位符{xxx}
@RequestParam(“xxx”)
对应的请求参数

请求方法限制

@RequestMapping(method=RequestMethod.xxx)
GET,POST,PUT,DELETE

请求转发和重定向

转发
return “redirect:/url”;
请求转发:request.getRequestDispatcher("/test.jsp").forword(request,response);
转发的特点

  • 地址栏不发生变化,显示的是上一个页面的地址 请求次数
  • 只有1次请求
  • 根目录:http://localhost:8080/项目地址/,包含了项目的访问地址
  • 请求域中数据不会丢失

重定向
return “forward:/seckill/list”;
重定向:response.sendRedirect("/test.jsp");
重定向的特点

  • 地址栏:显示新的地址
  • 请求次数:2次
  • 根目录:http://localhost:8080/ 没有项目的名字
  • 请求域中的数据会丢失,因为是2次请求

?????疑问?????
问:什么时候使用转发,什么时候使用重定向?
如果要保留请求域中的数据,使用转发,否则使用重定向。
以后访问数据库,增删改使用重定向,查询使用转发。

问:转发或重定向后续的代码是否还会运行?
无论转发或重定向后续的代码都会执行

数据模型赋值

ModelAndView或Model
调用addAttribute方法
返回json数据
@RequestMapping(produces=”application/json;charset=UTF-8”)
@ResponseBody
直接返回POJO就能转换成json
cookie访问
参数注解 @CookieValue(value=”xxx”,require=”false”)
涉及包:

dto
封装泛型JSON result

Web层实现

实现Controller

流程:
创建Controller及各接口映射的方法
使用注解描述各接口的映射,限制及参数获取
调用Service(由SpringDI注入)完成业务逻辑,封装到Model中返回给相应视图
完成视图设计
部署到服务器上调试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值