newxy标签实现部门管理、用户权限管理
作者:胡立新
一、功能简介
这个工程演示了部门管理、用户权限管理,没有使用角色这一环。在系统权限和用户身份不是很复杂的环境下这种运用是对用户权限管理的可行办法。
相关用语说明如下:
1、顶级部门,相对于部门来说的,是部门的上一级,一个系统有一个顶级部门。
2、部门,相对于顶级部门来说明的,是顶级部门的分支,一个系统有多个部门(结合“顶级部门”的说明有循环定义之嫌,此处的说明方法暂理解成“参验”)。
3、用户,软件系统的操作人员,有系统管理员,业务人员,系统管理员只有一个,业务人员可有多个,可有不同的权限。
4、业务,通常说成事务、商业功能模块。为避免与数据的“事务”概念相混淆,用“业务”一词。一个系统可有多个业务。
5、用户—业务,指特定用户与可操作的业务之间的关联。一个用户可操作多项业务,但不同用户对同一项业务操作权限的细分(增、删、改、查等)可能不同。对公共业务不必登记,用户操作时不必作权限检查。
以上用语对应数据库的四个表,“项级部门”、“部门”对应同一个表。
下面是数据库表间关系图:
这个工程的用户由管理员建立,如果由用户自己注册应作修改。
管理员分配好用户权限后,用户登录时可将相关权限读出保存到会话中或某个单例中,用户操作业务时,对其是否有权限作出判断。这工作由运用系统的开发者去完成。
二、目的
建立这个工程的最主要目的是演示如何将newxy新坐标的标签用于开发中。次要目的是作为一个可以复用的功能模块供开发者使用,如果开发者面对的是一个权限及用户身份不很复杂的情况,可以将这个工程作为部门及用户权限管理模块。
这个工程有一个类,是为初始化系统及刷新web上下文设计的。该类有三个共有方法,两个较重要:
public static void contextInitialized(PageContext pageContext)throws Exception
public static void contextInitialized(ServletContext context)throws Exception
条一个方法供jsp页面或标签调用,如:
<%
net.newxy.model.dub.Initial.contextInitialized(pageContext);
%>
第二个方法供后台java代码调用。Web服务器启动时应调用此方法,如:
import javax.servlet.*;
import javax.servlet.http.*;
public class ListenerSetCodes extends HttpServlet implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
javax.servlet.ServletContext context=sce.getServletContext();
try{
net.newxy.model.dub.Initial.contextInitialized(context);
}catch(Exception e){
……
}
}
……
}
本工程因为要便于开发者复用,对这个类的方法调用放在jsp文件中,而不是放在struts的action中。开发者应在web服务器启动时调用第二个方法。
三、流程
1、系统部署后首先将“顶级部门”改为客户单位名。
2、增加或修改部门,已有的部门不能删除,如果不用,可以掛起(非激活状态)。
3、定义业务,业务是运用系统的功能模块简称,这种简称是开发人员与客户共同理解的。
以上应由开发人员在系统部署后定义。
以下由系统管理员完成
4、为每个部门建立用户,也可修改用户信息,包括所属部门。
5、为每个用户选择他可以操作的业务,并细化每个业务的操作权限(数据的增、删、改、查等)。
对第5项的详细说明:
(1)用户查询,管理员可通过用户的用户帐号关键字查询,用户姓名关键字查询,按部门查询,列出所有用户,也可将这几项结合在一起构成多条件查询;
(2)从查询所得列表中选择一用户,列出未分配业务和已分配业务;
(3)点击未分配业务,这项业务从未分配列表中删除,列入已分配业务列表中;
(4)细化业务权限,选择已分配某业务,对该项业务涉及的增、删、改、查是否有权限给以设定。
(5)如果用户不应有某项业务,点击“删除”按钮,将这个业务从已分配业务列表中删除,这项业务又回到未分配业务列表中。
(6)在对某一用户进行业务分配和权限设置时,用户列表中该用户始终有较深的光带与其它用户区别开来。
这里涉及到所有四个表,如果用经典的前后台化工,开发起来会是极其麻烦,用newxy标签,只需三个jsp文件,其中的两个包含在另一个中,可以只用一个jsp文件,页面极其简洁。
大家可以想一想,在开发自助餐式的动态网站时,因为不需写java代码实现增、删、改、查、文件上传、数据分页,动态写几个jsp文件不就轻松实现了吗?
四、使用方法
1、进入newxy新坐标网站http://www.newxy.net,下载《部门管理及用户权限管理》。
2、工程用的是mysql4.1数据库,数据库名newxy,用户名root,口令mysql。用sql文件夹下的sql文件内容建立几个表。配置见src目录下newxy.properties文件。
3、myWeb.war文件是war文件,可直接拷到tomcat的apps文件夹下。
4、解压下载文件得文件夹userRight,这是个jbuilder2005的工程文件夹。
5、用jbuilder2005打开工程后,应进入Tools->Configure->Libraries,新建一library,名为myLib,引用userRight文件夹下lib内的jar文件。
6、usreRight下的lib中有个newxy.1.065.jar文件,是在newxy.1.06版的基础上修正了<nhtml:select />标签的一个小问题后的包。newxy1.065.jar没有发布(截至06年10月6日)。