Android翻译公司业务管理系统设计与实现(12)
时间:2016-11-21 19:38 来源:毕业论文 作者:毕业论文 点击:次
public List<User> getUserByCond(User user){ String hql = "select user from User user where 1=1 "; Map map = new HashMap(); return (List<User>) userDao.findByHql(hql, map); } 这是系统的核心层,主要完成服务的封装。在系统中,我采用 JavaBean 组件实现系统业务逻辑的处理。 数据持久层:我们的操作最终是要与数据库打交道的,对数据库的增、删、改、查等,这些都要依赖数据持久层来完成。其具体执行代码 public PaginationSupport listByPage(String entityName, int currentPage,int pageSize) { HibernateTemplate ht = getHibernateTemplate(); Session session = getSession(); Integer count = (Integer) session.createQuery("from "+entityName).list().size(); Query query =session.createQuery("from "+entityName); query.setFirstResult((currentPage-1)*pageSize); System.out.println("FirstResult:"+(currentPage-1)*pageSize); query.setMaxResults(pageSize); System.out.println("pageSize"+pageSize); List list = query.list(); System.out.println("List"+list); PaginationSupport ps = new PaginationSupport(currentPage,pageSize,list,count); ps.setCurrentPageNum(currentPage); ps.setPageSize(pageSize); return ps; } 该层在程序中体现在于将数据持久层,即调用dao层中的方法对对象持久化。 控制层(Controller):可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以 完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。在Struts2中,控制层就相当于本系统中的Web.xml文件和Struts2.xml文件,它的核心是通过在Web.xml中的过滤器转到Struts.xml文件中其核心代码为: <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter > <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 而在Struts.xml文件中主要是一种固定的模式action,通过Struts.xml中的name属性告诉程序到底实现哪个具体的action,然后将得到的结果返回到Struts.xml中并通过标签result跳转到另一个jsp。 由于我们用的是Struts2框架,所以我们用Action来控制流程,而不是servlet。 因此,一个模型可能对应多个视图,一个视图可能对应多个模型。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应 反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能。 (责任编辑:qin) |