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

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

在个人理解:json

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

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

现用户登陆:权限、角色、用户管理为例:框架

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

数据库中表的结构关系:测试

处理流程:this

 

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

具体实现方法:hibernate

 基于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);

}

相关文章
相关标签/搜索