当前位置:网站首页>[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
边栏推荐
- 共创 Ray 中文社区,Ray Forward Meetup 2022 直播邀你参加!
- 什么是平面文件数据库? 如何导入多种格式的文件:DSV、JSON、XML?
- 如何抑制告警风暴?
- 软考 --- 软件工程(7)软件项目管理(下)
- 【JZOF】77 Print binary tree in zigzag
- conda新建环境时报错NotWritableError: The current user does not have write permissions
- 【集训DAY3】中位数
- MQTT X Web:在线的 MQTT 5.0 客户端工具
- [Cloud native] Kubernetes orchestration tools
- Travel with Shengteng: See all the AI attractions in Jinling City in one day
猜你喜欢

ECCV 2022 | 微软开源TinyViT :搞定小模型的预训练能力

vmware Exsi 网卡配置

了解什么是架构基本概念和架构本质

Digital wallets, red sea ecological rapid introduction of small programs can help capture device entry wisdom

【集训DAY4】询问【Hash】

mysql无法远程连接 Can‘t connect to MySQL server on ‘xxx.xxx.xxx.xxx‘ (10060 “Unknown error“)

【集训DAY4】矩形【线段树】

781. 森林中的兔子

Eureka自我保护

selenium和驱动安装
随机推荐
70. Stair Climbing Advanced Edition
下班后用微信处理工作时发病身亡,法院判决:工伤!
多商户商城系统功能拆解25讲-平台端分销申请
Snap: 322. Change of Change
博弈小游戏
Gold Warehouse Database KingbaseGIS User Manual (6.2. Management Functions)
【集训DAY4】异或【字典树】
第十二,十三章 mysql数据类型,视图的课后练习
Alibaba Cloud SMS Service Activation
【诗歌】爱你就像爱生命
GoLang 使用 goroutine 停止的几种办法
redis分布式锁代码示例
如何抑制告警风暴?
【mysql】查询今天9点
基于 RocksDB 实现高可靠、低时延的 MQTT 数据持久化
【集训DAY3】挖金矿【二分答案】
redis distributed lock code example
AUTOCAD——形位公差如何标注、CAD打断于点的操作
防火墙之系统防护
A Shanghai technology company was fined 220,000 for brushing orders, exposing the gray industry chain of online brushing