当前位置:网站首页>[SSH]如何敲一条线
[SSH]如何敲一条线
2022-08-09 23:06:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
网上商城用的是struts+spring+hibernate的框架,在这个框架中是如何来完成一个功能呢?我们以查询订单为例,具体流程如下:
一.新建包
在src文件夹下新建关于订单的包,主要有action,service,dao和vo,这也体现了分层的思想,与之对应的便是表示层,业务逻辑层,数据持久层和模块层。主要的层次结构为
二.新建类
在各个包中建立相应的类
包 | 类 | 描述 |
|---|---|---|
action | OrderAction.java | 用于接收页面传来的数据以及给页面返回信息 |
service | OrderService.java | 对action传来的功能进行处理 |
dao | OrderDao.java | 对数据进行操作 |
vo | Order.java | 实体类,相当于Order表 |
三.在类中写相应的方法
1.Order类
public class Order {
private Integer oid;
private Date ordertime;
……
public Integer getOid() {
return oid;
}
public void setOid(Integer oid) {
this.oid = oid;
}
}
public Date getOrdertime() {
return ordertime;
}
public void setOrdertime(Date ordertime) {
this.ordertime = ordertime;
}
……
}在vo包下还需要创建关于订单的hibernate配置文件,用来建立和数据库的对应关系
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.shop.order.vo.Order" table="orders">
<id name="oid">
<generator class="native"/>
</id>
<property name="total"/>
<property name="ordertime"/>
</class>
</hibernate-mapping>2.OrderAction类
在表示层,首先要添加对实体和Service的引用
public class OrderAction extends ActionSupport implements ModelDriven<Order> {
// 模型驱动使用的对象
private Order order = new Order();
public Order getModel() {
return order;
}
// 注入OrderService
private OrderService orderService;
public void setOrderService(OrderService orderService) {
this.orderService = orderService;
}
// 根据订单id查询订单:
public String findByOid() {
order = orderService.findByOid(order.getOid());
return "findByOid";
}
}3.OrderService类
public class OrderService {
// 注入OrderDao
private OrderDao orderDao;
public void setOrderDao(OrderDao orderDao) {
this.orderDao = orderDao;
}
// 根据订单id查询订单
public Order findByOid(Integer oid) {
return orderDao.findByOid(oid);
}
}4.OrderDao类
完成订单的查询功能
public class OrderDao extends HibernateDaoSupport {
// DAO层根据订单id查询订单
public Order findByOid(Integer oid) {
return this.getHibernateTemplate().get(Order.class, oid);
}
}四.写配置文件
1.编写spring配置文件
1.配置Hibernate的映射文件
<!-- 配置Hibernate的映射文件 -->
<property name="mappingResources">
<list>
<value>cn/itcast/shop/order/vo/Order.hbm.xml</value>
</list>
</property>2.完成各个层的配置
<!--action的配置-->
<bean id="orderAction" class="cn.itcast.shop.order.action.OrderAction" scope="prototype">
<property name="orderService" ref="orderService"/>
</bean>
<!--service的配置-->
<bean id="orderService" class="cn.itcast.shop.order.service.OrderService"> <property name="orderDao" ref="orderDao"/>
</bean>
<!--dao的配置-->
<bean id="orderDao" class="cn.itcast.shop.order.dao.OrderDao">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>2.编写struts配置文件
<!-- 订单的Action -->
<action name="order_*" class="orderAction" method="{1}">
<!-- 对应action层中的方法名,以及需要跳转的页面 -->
<result name="findByUid">/WEB-INF/jsp/orderList.jsp</result>
</action>这样就基本完成了后台的功能,和前台界面交互就可以了。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/105714.html原文链接:https://javaforall.cn
边栏推荐
- 南大通用数据库-Gbase-8a-学习-04-部署分布式集群
- 直播平台怎么搭建,原生js实现编辑器撤消/恢复功能
- Dry goods!Towards robust test-time adaptation
- Eureka protects itself
- Sqlserver restricts the ip under which accounts can access the database
- The latest "Grain Academy Development Tutorial" in 2022: 10 - Front-end payment module
- 用哈希简单封装unordered_map和unordered_set
- 直播间搭建,按钮左滑出现删除等操作按钮
- 【云原生】Kubernetes编排工具精讲
- RebatMq消息中间件(一) 各个中间件介绍
猜你喜欢

多商户商城系统功能拆解24讲-平台端分销会员

vmware Exsi 网卡配置

Travel with Shengteng: See all the AI attractions in Jinling City in one day

Distributed database problem (3): data consistency

【猜凶手,猜名次,杨辉三角】经典小学奥数的代码逻辑是什么?

ES6 从入门到精通 # 13:数组的扩展方法二
![[C language] In-depth understanding of pointers and arrays (issue 4)](/img/22/ad31b47bb8cc1722121959efddefd5.png)
[C language] In-depth understanding of pointers and arrays (issue 4)

数字孪生电力系统,可视化应用实现科学调度的电子设备

共创 Ray 中文社区,Ray Forward Meetup 2022 直播邀你参加!

位图的基本原理以及应用
随机推荐
JS基础笔记-关于对象
【云原生】Kubernetes编排工具精讲
ES6 Beginner to Mastery #15: Generator Usage
ES6 Beginner to Mastery #13: Extension Methods for Arrays 2
ECCV 2022 | Microsoft Open Source TinyViT: Pre-training Capabilities for Small Models
How to match garbled characters regularly?
防火墙之系统防护
[Cloud native] Kubernetes orchestration tools
ES6 从入门到精通 # 13:数组的扩展方法二
【集训DAY3】石油储备计划【树形DP】
Alibaba Cloud SMS Service Activation
Wireshark经典实践和面试13点总结
FreeRTOS任务基础
NTP SERVICE TASK 在GWserver配置、启用NTP服务,为当前环境提供时钟同步服务,Client主机可以从该服务器同步时间。
Force Buckle: 474. Ones and zeros
selenium和驱动安装
工程 (七) ——PolarSeg点云语义分割
nfs配置
AppUser object extension based on ABP
【集训DAY3】中位数