SSH 实例流程

来源:互联网 发布:淘宝四川百灵鸟笼子 编辑:程序博客网 时间:2024/04/29 21:06

  • 大体是这样滴
  • JSP
    • application
    • action
    • service
    • Dao
    • Struts
    • producthbmxml
  • 后记

&前面一些文章介绍了一些SSH的知识点,小菜我正在路上,有些观点可能不是很成熟,欢迎大家互相交流,下面如题具体的结合代码走一下形式、不是,走一下流程。

大体是这样滴

  • 1、在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。
  • 2、在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
  • 3、在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

JSP

<!--界面:要跳转-->d.add('0104','01','商品管理');        d.add('010401','0104','商品管理','${pageContext.request.contextPath}/adminProduct_findAll.action?page=1','','mainFrame');        d.add('0105','01','订单管理');

application

<!-- 配置后台商品管理的Action -->    <bean id="adminProductAction" class="cn.itcast.shop.product.adminaction.AdminProductAction" scope="prototype">        <property name="**productService**" ref="productService"/>        <property name="**categorySecondService**" ref="categorySecondService"/>    </bean><!--**Service--><bean id="productService" class="cn.itcast.shop.product.service.ProductService">       <property name="productDao" ref="productDao"/>    </bean><bean id="categorySecondService" class="cn.itcast.shop.categorySecond.service.CategorySecondService">        <property name="categorySecondDao" ref="categorySecondDao"/>    </bean> <!--Dao--> <bean id="productDao" class="cn.itcast.shop.product.dao.ProductDao">        <property name="sessionFactory" ref="sessionFactory"></property>     </bean><bean id="categorySecondDao" class="cn.itcast.shop.categorySecond.dao.CategorySecondDao">        <property name="sessionFactory" ref="sessionFactory"/>    </bean> 

action

jsp的方法具体到这里执行,此处也承担着界面跳转等function

public class AdminProductAction extends ActionSupport implements ModelDriven<Product>{    //模型驱动使用的对象    private Product product=new Product();    public Product getModel() {        return product;    }    //**注入商品的service** 相应的配置文件处    private ProductService productService;    public void setProductService(ProductService productService) {        this.productService = productService;    }    //**注入二级分类的categorySecondService**    private CategorySecondService categorySecondService;    public void setCategorySecondService(CategorySecondService categorySecondService) {        this.categorySecondService = categorySecondService;    }    //接收前台page参数    private Integer page;    public void setPage(Integer page) {        this.page = page;    }    //带分页的查询商品    public String findAll(){        PageBean<Product> pageBean = productService.findByPage(page);        // 将PageBean数据存入到值栈中.        ActionContext.getContext().getValueStack().set("pageBean", pageBean);        // 页面跳转        return <font color=#FF4500 > "findAll"</font>;    }}

service:

// 后台查询所有商品带分页    public PageBean<Product> findByPage(Integer page) {        PageBean<Product> pageBean = new PageBean<Product>();        // 设置当前页数:        pageBean.setPage(page);        // 设置每页显示记录数:        int limit = 10;        pageBean.setLimit(limit);        // 设置总记录数:        int totalCount = productDao.findCount();        pageBean.setTotalCount(totalCount);        // 设置总页数:        int totalPage = 0;        // Math.ceil(totalCount / limit);        if (totalCount % limit == 0) {            totalPage = totalCount / limit;        } else {            totalPage = totalCount / limit + 1;        }        pageBean.setTotalPage(totalPage);        // 每页显示的数据集合:        // 从哪开始:        int begin = (page - 1) * limit;        List<Product> list = productDao.findByPage(begin, limit);        <font color=#FF4500 >pageBean.setList(list);</font>        return pageBean;    }

Dao

类似于D层,数据库的增删改

// 后台统计商品个数的方法    public int findCount() {        String hql = "select count(*) from Product";        List<Long> list = this.getHibernateTemplate().find(hql);        if(list != null && list.size() > 0){            return list.get(0).intValue();        }        return 0;    }    // 后台查询所有商品的方法 分页    public List<Product> findByPage(int begin, int limit) {        String hql = "from Product order by pdate desc";        List<Product> list =  this.getHibernateTemplate().execute(new PageHibernateCallback<Product>(hql, null, begin, limit));        if(list != null && list.size() > 0){            return list;        }        return null;    }

Struts:

根据Action 传来的result name去跳转到相应的界面

    <!-- 配置商品管理的action -->        <action name="adminProduct_*" class="adminProductAction" method="{1}">           <result name="<font color=#FF4500 >findAll </font>">/admin/product/list.jsp</result>           <result name="addPageSuccess">/admin/product/add.jsp</result>           <result name="saveSuccess" type="redirectAction">adminProduct_findAll?page=1</result>           <result name="deleteSuccess" type="redirectAction">adminProduct_findAll?page=1</result>           <result name="editSuccess">/admin/product/edit.jsp</result>           <result name="updateSuccess" type="redirectAction">adminProduct_findAll?page=1</result>           <interceptor-ref name="PrivilegeInterceptor"></interceptor-ref>            <interceptor-ref name="defaultStack"></interceptor-ref>        </action>

product.hbm.xml

*.Java没什么意思,略不不写<?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.product.vo.Product" table="product">   <id name="pid">      <generator class="native"/>   </id>   <property name="pname"/>   <property name="image"/>   <property name="pdesc"/>   <property name="pdate"/>   <property name="market_price"/>   <property name="shop_price"/>   <property name="is_hot"/>   <many-to-one name="categorySecond" lazy="false" class="cn.itcast.shop.categorySecond.vo.CategorySecond" column="csid"></many-to-one> </class></hibernate-mapping>

后记

使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate

感谢您的阅读

1 0
原创粉丝点击