课程作业08 MVC框架具体使用

MVC是一种设计模式,它将应用划分为3个部分:数据(模型)、展现层(视图)和用户交互(控制器)。

在我的理解:

view 做界面展示
controller 对界面的请求进行一次过滤和转发
model 模型层,是对应数据库表的

一个事件发生的执行顺序是:
  1. 用户和应用产生交互。
  2. 控制器的事件处理器被触发。
  3. 控制器从模型中请求数据,并将其交给视图。
  4. 视图将数据呈现给用户。
   不用类库或框架就可以实现这种MVC架构模式。关键是要将MVC的每部分按照职责进行划分,将代码清晰地分割为若干部分,并保持良好的解耦。这样可以对每个部分进行独立开发、测试和维护。

现用户登录:权限、角色、用户管理为例:

基于MVC框架用户登录时用户请求与数据处理如下图进行:

数据库中表的结构关系:

处理流程:

 

用户登录时,用户访问,传送用户登录信息,然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,即进行用户验证,若通过验证,进入系统。

具体实现方法:

 基于MVC框架实现权限控制大概有这么几种思路:“用户身份验证”、“控制器方法权限控制”、“界面元素权限控制”这三种方式可以为Web开发框架本身提供了很好用户访问控制和权限控制,使得用户界面呈现菜单、Web界面的按钮和内容、Action的提交控制,均能在总体权限功能分配和控制之下。

【用户身份验证】

在获取用户登陆基本信息进行验证时,获取用户的权限信息,从而达到权限控制的目的。

业务逻辑:在用户登录系统的时候获取用户的权限级别(一般用户,操作员等),然后根据用户级别获取到此用户级别可以操作的功能项,然后根据可以操作的功能项来动态的加载和移除功能菜单。

具体代码实现:

(1)视图层:即用户登录界面,再次省去。

(2)  控制层(配置文件)

<action name="showRole" class="roleAction" method="showRole">
<result name="showRole" type="dispatcher">/adminControl/showAllRole.jsp</result>
</action>
<action name="showRight" class="rightAction" method="showRight">
<result name="showRight" type="dispatcher">/adminControl/showAllRight.jsp</result>
</action>

(3)模型层

模型层中含有数据库的全部数据,并且定义了相应的方法去调用,当控制层调用这些方法时,像控制层传递这些数据。

主要代码:

PrintWriter out = response.getWriter();

        List<SysRight> list = rightService.findByLoginUserId(user.getUserId());//调用hibernate中的数据

        for (SysRight sysRight : list) {

            System.out.println(sysRight);

        }

        String json = JSONSerializer.toJSON(list).toString();

        out.print(json);

public List<SysRight> findByLoginUserId(String id) {

String hql="from SysUser u join u.sysRole r join r.sysRight m where u.userId = '"+id+"'";

return rightDao.findByHql(hql);

}

public List<SysRight> findByHql(String hql, Object... objects) {   

        return (List<SysRight>) this.getHibernateTemplate().find(hql,objects);

}

 

posted @ 2017-05-04 22:47  听你笑  阅读(217)  评论(0编辑  收藏  举报