当前位置:网站首页>[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
边栏推荐
猜你喜欢
随机推荐
YOLOV5 study notes (7) - training your own data set
解锁时间生成与比较
GoLang 使用 goroutine 停止的几种办法
【SSL集训DAY2】Sort【树状数组】
Eureka自我保护
CAD 截断线段
【SSL集训DAY3】控制棋盘【二分图匹配】
Eureka protects itself
Sqlserver restricts the ip under which accounts can access the database
Dry goods!Towards robust test-time adaptation
Gumbel distribution of discrete choice model
Comprehensive analysis of FPGA basics
AUTOCAD——形位公差如何标注、CAD打断于点的操作
【问题解决】训练和验证准确率很高,但测试准确率很低
Wireshark classic practice and interview 13-point summary
关于服务治理
拒绝“重复造轮子”,百度EasyDL让你玩转AI定制开发
《动手学深度学习》(八) -- 多尺度标检测和单发多框检测
【C语言】指针和数组的深入理解(第四期)
nfs配置