课堂作业08——MVC应用实例之权限管理
MVC在Java Web应用程序中的实例分析
✎MVC框架的应用:
在一下比较大型的企业中,MVC加三层架构使用的相对比较普遍。它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
我们经常使用的博客园、CSDN等都会使用MVC框架。
✎用户权限模块的实现代码:
(1) 视图层:
首先,JSP页面(视图层)的js函数中使用ajax技术进行传值,将URL赋值为对应的action,调用action中的方法,即通过hibernate(模型层)获取数据库数据。将收到的数据显示在JSP页面。
实现MVC思想中:发送用户动作(例如按钮点击)到控制器,并可以处理很多不同的视图。
主要代码:
$(function() {
var power;
var html = "";
$
.ajax({
url : "user_menu.action",
type : "post",
dataType : "json",
success : function(data) {
$
.each(data,
function(i, item) {
if (item.rightname == "管理员") {//显示左侧菜单栏
html += "<li><a href='user_FindAllUser.action' target='frmright'><span class='text_slice spanStyle'>用户管理</span></a></li>"
...
...
...
}
}
});
$("#category").html(html);
}
});
})
(2) 控制层
当JSP页面提交了用户需求,交给控制器去处理,控制器需要从模型中找到对应的数据,并返回到JSP页面。
实现MVC思想中:接受用户的输入,解释用户的行为,并提供模型数据至视图。消除模型与视图依赖关系。
主要代码:
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);
(3) 模型层
模型层中含有数据库的全部数据,并且定义了相应的方法去调用,当控制层调用这些方法时,像控制层传递这些数据。
实现MVC思想中:为多个视图提供数据,且拥有最多的处理任务。
主要代码:
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);
}
当系统有多个用户角色时,权限管理无疑提高了系统的可用性、易用性与安全性,使多个用户在权限之内对系统数据进行管理。同时,这样的设计能够灵活的对权限进行设置,体现了系统质量属性的可修改性。