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
- SSH 实例流程
- ssh实例
- J2EE进阶(六)SSH框架工作流程项目整合实例讲解
- SSH框架搭建流程
- ssh执行流程
- ssh框架整合流程
- SSH框架流程
- linux ssh设置流程
- SSH 的执行流程
- SSH整合流程
- ssh部署大致流程
- SSH整合流程
- SSH执行流程
- SSH-登录功能流程
- SSH框架流程
- SSH框架搭建流程
- SSH简单流程
- SSH框架工作流程
- c++ 文件的处理
- c++动态内存分配(new/new[]和delete/delete[])
- zoj 3640 Help Me Escape (概率与期望DP)
- 剑指offer-数的整数次方
- JavaScript DOM对象
- SSH 实例流程
- AC自动机
- (转)了解使用Android ConstraintLayout
- 图像的插值算法
- 酉空间和酉矩阵
- C语言读取文件中的数据作为输入和输出
- oracle优化
- 圆周率
- C#高级编程,给线程传递参数有两种方式