[SSH]如何敲一条线

[SSH]如何敲一条线[SSH]如何敲一条线

大家好,又见面了,我是你们的朋友全栈君。

    网上商城用的是struts+spring+hibernate的框架,在这个框架中是如何来完成一个功能呢?我们以查询订单为例,具体流程如下:

一.新建包

    在src文件夹下新建关于订单的包,主要有action,service,dao和vo,这也体现了分层的思想,与之对应的便是表示层,业务逻辑层,数据持久层和模块层。主要的层次结构为

[SSH]如何敲一条线

二.新建类

    在各个包中建立相应的类

描述

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.net/105714.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue.js中集成ueditor?

    vue.js中集成ueditor?

    2021年10月11日
    43
  • 测试音视频地址(音视频性能测试)

    在线视频地址https://media.w3.org/2010/05/sintel/trailer.mp4http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4http://vjs.zencdn.net/v/oceans.mp4https://media.w3.org/2010/05/sintel/trailer.mp4http://…

    2022年4月13日
    68
  • python plotly 使用教程

    python plotly 使用教程1、plotly介绍lotly的Python图形库使互动的出版质量图表成为在线。如何制作线图,散点图,面积图,条形图,误差线,箱形图,直方图,热图,子图,多轴,极坐标图和气泡图的示例。推荐最好使

    2022年7月5日
    25
  • sp_executesql和execute的区别

    sp_executesql和execute的区别execute对拼成的字符串SQL是有长度限制的,今天在开发中就遇到这种情况,由于长度过长总是被截取。导致报错!后决定改用sp_executesql。但是sp_executesql对参数类型有限制,我声明的类型为varchar(max),报错:Procedureexpectsparameter@statementoftypentext/nchar/nvarchar。这句话

    2022年5月21日
    30
  • Java-MD5加密[通俗易懂]

    Java-MD5加密[通俗易懂]密码全是明文,防止内部人员监守自盗,改成暗文密码加密一般使用MD5加密特点:一旦加密之后,就不可解密光是MD5加密还不够安全,这时候就要添加盐值:盐值作用:让你的密码更加安全,MD5:支持加密次数MD5加密三个概念:MD5常规加密,为了让你的密码更加安全,MD5加密还要加盐值,为了让你的密码超级安全,它支持加密次数MD5Utils.encrypByMd5(String类型的密码)就执行加密importjava.security.MessageDigest;impo

    2022年7月11日
    13
  • android HorizontalScrollView讲解[通俗易懂]

    android HorizontalScrollView讲解[通俗易懂]前言  本章内容是android.widget.HorizontalScrollView,译为”横向滚动条”,版本为Android2.3r1,翻译来自”Tina”,感谢”Tina”为大家带来精彩的翻译稿!期待你加入AndroidAPI中文的翻译,联系我over140@gmail.com。 声明  欢迎转载,但请保留文章原始出处:)    JavaEye社区:htt

    2022年7月14日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号