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。
因此,一个模型可能对应多个视图,一个视图可能对应多个模型。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应 反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能。 Android翻译公司业务管理系统设计与实现(12):http://www.751com.cn/jisuanji/lunwen_141.html