SSH框架网上商城项目实战:Service与Action的抽取与基本CRUD操作
53 浏览量
更新于2024-09-01
收藏 153KB PDF 举报
"SSH框架网上商城项目的第二阶段,主要涉及基本的CRUD操作以及Service和Action组件的提取。"
在SSH(Struts2、Spring、Hibernate)框架下开发网上商城项目,这一部分主要讲解如何实现基础的数据操作以及如何组织业务逻辑层(Service)和控制层(Action)。首先,上一节已经完成了Struts2、Hibernate4.3和Spring4.2的整合工作,现在我们将继续完成更多功能。
1. Service层的抽取
Service层是业务逻辑的核心,负责处理业务规则和数据访问。在这个阶段,我们需要为Category服务(CategoryService)提供完整的CRUD(创建、读取、更新、删除)功能。以下是CategoryService接口和其实现类的代码:
```java
// CategoryService接口
public interface CategoryService extends BaseService<Category> {
public void save(Category category); // 插入
public void update(Category category); // 更新
public void delete(int id); // 删除
public Category get(int id); // 获取一个Category
public List<Category> query(); // 获取全部Category
}
// CategoryService实现类
public class CategoryServiceImp extends BaseServiceImpl<Category> implements CategoryService {
private SessionFactory sessionFactory; // Spring会注入
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
protected Session getSession() {
// 从当前线程获取session,如果没有则创建一个新的session
return sessionFactory.getCurrentSession();
}
// 对应接口中的方法实现
// ...
}
```
这里的BaseService是一个基类,通常包含了通用的CRUD方法,例如事务管理,使得我们可以专注于具体业务逻辑的实现。
2. CRUD操作
对于Category对象,我们需要实现以下操作:
- `save` 方法用于向数据库插入新的Category对象。
- `update` 方法用于更新已存在的Category对象。
- `delete` 方法根据ID删除对应的Category。
- `get` 方法通过ID获取单个Category对象。
- `query` 方法返回所有Category对象的列表。
3. Action的抽取
Action层是控制层,它接收来自用户请求的数据,调用Service层的方法并返回相应的视图。在Struts2框架中,Action类定义了业务逻辑的执行路径。创建一个CategoryAction类,它将处理与Category相关的HTTP请求:
```java
// CategoryAction类
public class CategoryAction extends ActionSupport {
private CategoryService categoryService;
private Category category;
// 属性setter和getter
public String add() {
categoryService.save(category);
return "success"; // 返回成功后跳转的页面
}
public String update() {
categoryService.update(category);
return "success";
}
public String delete() {
categoryService.delete(category.getId());
return "success";
}
public String details() {
category = categoryService.get(category.getId());
return "details"; // 显示详情页
}
public String list() {
List<Category> categories = categoryService.query();
// 将结果设置到Action的属性中,以便在视图中展示
return "list"; // 显示列表页
}
}
```
每个方法对应一个用户请求,调用相应的Service方法并处理结果。例如,`add()` 方法用于添加新的Category,`update()` 更新已有的Category,`delete()` 删除Category,`details()` 显示Category详情,`list()` 显示所有Category的列表。
通过这样的设计,我们可以将数据访问和业务逻辑分离,使代码更易于维护和扩展。Service层专注于业务逻辑,而Action层则负责协调用户请求与业务逻辑之间的交互。这样的架构遵循了MVC(Model-View-Controller)设计模式,提高了代码的可重用性和可测试性。
258 浏览量
370 浏览量
108 浏览量
143 浏览量
231 浏览量
点击了解资源详情
2020-10-22 上传
183 浏览量
155 浏览量

weixin_38727825
- 粉丝: 3
最新资源
- Java Web开发必备:JQuery.js类文件与版本
- TortoiseSVN与VisualSVN在Windows下的应用解析
- C++实现的远程视频监控系统源代码教程
- Coursera IBM数据科学Capstone项目核心实践与分析
- Vue和uni-app项目中优雅修改第三方包指南
- 个人精英商务助理:全方位商务管理工具
- LegendShop开源B2C商城系统部署指南
- Photoshop调色动作包:一键增强色彩效果
- 深入解析三级联动JS+XML技术实现细节
- 快速批量Ping扫描工具:在线及存活主机检测
- 一键删除GameFAQs好友列表上的好友脚本介绍
- 探索i3窗口管理器非官方Fork及其新增功能
- Codeforces ACM竞赛题目集压缩包内容解析
- Java购物车实现及JSTL技术应用
- emp240 PCB自绘板实物验证及文件分享
- 网页自动刷新工具:论坛与游戏的利器