当前位置:网站首页>[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
边栏推荐
- Filament - Material basic graphics drawing
- Linux安装Oracle和postgrepSQL数据库
- 解锁时间生成与比较
- LiveData : Transformations.map and Transformations.switchMap usage
- Live Preview | ICML 2022 11 first-author scholars share online neural network, graph learning and other cutting-edge research
- 【诗歌】爱你就像爱生命
- Force Buckle: 474. Ones and zeros
- Gumbel distribution of discrete choice model
- 上交所实时行情文件汇总
- Snap: 322. Change of Change
猜你喜欢
Dry goods!Towards robust test-time adaptation
GoLang 使用 goroutine 停止的几种办法
【集训DAY4】询问【Hash】
2022-08-09 mysql/stonedb-subquery performance improvement-introduction
[C language] In-depth understanding of pointers and arrays (issue 4)
32 JZOF 】 【 print down on binary tree
首席信息官如何将可持续性和技术结合起来
781. 森林中的兔子
complete knapsack theory
共创 Ray 中文社区,Ray Forward Meetup 2022 直播邀你参加!
随机推荐
Filament - Material basic graphics drawing
A Shanghai technology company was fined 220,000 for brushing orders, exposing the gray industry chain of online brushing
微信小程序获取微信用户步数
博弈小游戏
【剑指offer】第一题 第二题
【SSL集训DAY2】Sort【树状数组】
2022-08-09 mysql/stonedb-subquery performance improvement-introduction
新开窗口 展示协议
Service Discovery @EnableDiscoveryClient
恭喜获奖得主 | 互动有礼获赠 Navicat Premium
Has your phone ever been monitored?
YOLOV5 study notes (7) - training your own data set
AirFlow介绍
什么是服务治理
ALV报表总结2022.8.9
In-depth understanding of multithreading (Part 1)
巴比特 | 元宇宙每日必读:国内首个数字人产业专项支持政策发布,2025年北京数字人产业规模将破500亿元...
LeetCode952三部曲之三:再次优化(122ms -> 96ms,超51% -> 超91%)
多商户商城系统功能拆解25讲-平台端分销申请
【诗歌】被讨厌的勇气