- 浏览: 136805 次
- 性别:
- 来自: 大连
最新评论
-
bjt100:
好文章 经常用到各种日期计算,经常记不住要用看文档。。。
java处理日期时间 相加减 -
ping12132200:
[i][/i][b][/b][url][/url][flash ...
java处理日期时间 相加减 -
ping12132200:
如果一直A=7:00:00 B=20:00:00
C=A+B ...
java处理日期时间 相加减 -
如月王子:
非差感谢,这个需要经常用!!!
java处理日期时间 相加减 -
maozilee:
非常好!收下了!
java处理日期时间 相加减
转载于http://blog.csdn.net/fswan/archive/2004/11/02/164063.aspx
学习使用
首先,设置三种要素:用户、群组、角色。用户为登录用,对应到人。群组对应为用户的集合,是一种特殊的用户。角色为一组权限项的集合,用户(群组)都有各自的角色。 权限的实现通过Permission类和Rule类来实现。Permission供外部调用,Rule为一个接口,为权限判断规则。
Permission是一个抽象类,有以下方法
hasPermission方法供外部调用,已实现,实现方法为先根据getDenyRule()得到的规则判断权限是否被阻拦,再根据getAcceptRule来判断是否有权限。
而Rule接口的接品则由用户自行定义,随包附带了一个已实现的Rule,实现的功能如下:
先寻找User的所有角色,然后判断角色是否有权限,如果无权限则寻找其父级群组,再取父级群组的所有角色进行判断是否有权限,如果无权限则再往上级群组找,直到找最上一级还是无权限才判断为无权限。
现实现判断权限有无权限的方式已可以达成的有以下三种:
1、 是否有操作的权限。
2、 是否有操作的子操作的权限。
3、 在数据为某条件时有操作(子操作)的权限。
在进行程序开发时,第一步,编写User,Group,Role的实现类,已提供了一套XML的实现类。
第二步,写配置文件,进行权限项的配置。
第三步,在程序中要进行权限判断的地方调用Permission.hasPermission方法即可. 首先,我定义了一个用户接口,可以从其中取出其的各种属性.代码如后面所示.用户除了各种不同的属性以外还必须设置其角色以及所属的群组.
然后定义一个AbstractUser把User共性的东西进行处理.所有的取属性的方法都已实现.用户只要根据实现情况继承AbstractUser把自己要定义的属性进行处理即可.(因为每个系统的用户都会有不同的属性,所以留成抽象类供使用者自己扩展). 只要初始化变量description, name ,group ,id, prop,role,propMap即可.
最后定义了一个类UserImpl来实现具体的User作随包的一个User供一般使用者使用.不建议直接使用UserImpl,因为以后的版本可能会重写该类.如果要使用的话可以把该类改名为自己的类即可.
这部分涉及到了一个ResourceLib类,该类中存是我自己定义的存储各种资源配置用的类,可以直接使用.
======================User.java===============================
=======================AbstractUser===================================
==============================UserImpl.java===========================
========================XML格式=====================
权限组件之二(群组)收藏
首先,我定义了一个群组接口,除了继承用户的方法以外还有两个方法,getUsers,getSubGroup.代码如后面所示.用户除了各种不同的属性以外还必须设置其角色以及所属的群组.
然后定义一个AbstractGroup,他继承了Group以及AbstractUser,并实现了Group接口定义的两个方法.用户只要根据实现情况继承AbstractGroup把自己要定义的属性进行处理即可.(因为每个系统的用户都会有不同的属性,所以留成抽象类供使用者自己扩展). 只要初始化变量description, name ,group ,id, prop,role,propMap,subGroup,user即可.
最后定义了一个类XMLGroup来实现具体的Group作随包的一个Group供一般使用者使用.不建议直接使用XMLGroup,因为以后的版本可能会重写该类.如果要使用的话可以把该类改名为自己的类即可.
这部分涉及到了一个ResourceLib类,该类中存是我自己定义的存储各种资源配置用的类,可以直接使用.
======================Group.java===============================
=======================AbstractGroup==================================
==============================XMLGroup.java===========================
========================XML格式=====================
========================XML描述文件==================
首先,我定义了一个角色接口,可以从其中取出其的各种属性.代码如后面所示.
然后定义一个AbstractRole把Role共性的东西进行处理.所有的取属性的方法都已实现.用户只要根据实现情况继承AbstractRole把自己要定义的属性进行处理即可.(因为每个系统的用户都会有不同的属性,所以留成抽象类供使用者自己扩展). 只要初始化变量description, name ,id, prop,users(可能是群组), permissionMap即可.
最后定义了一个类XMLRole来实现具体的Role作随包的一个Role供一般使用者使用.不建议直接使用XMLRole,因为以后的版本可能会重写该类.如果要使用的话可以把该类改名为自己的类即可.
这部分涉及到了一个ResourceLib类,该类中存是我自己定义的存储各种资源配置用的类,可以直接使用.
======================Role.java===============================
=======================AbstractRole===================================
==============================XMLRole.java===========================
========================XML格式=====================
========================XML描述文件==================
学习使用
首先,设置三种要素:用户、群组、角色。用户为登录用,对应到人。群组对应为用户的集合,是一种特殊的用户。角色为一组权限项的集合,用户(群组)都有各自的角色。 权限的实现通过Permission类和Rule类来实现。Permission供外部调用,Rule为一个接口,为权限判断规则。
Permission是一个抽象类,有以下方法
public boolean hasPermission(User user,HashMap oldData,Input input); public String getPermissionName(); public abstract Rule[] getDenyRule(); public abstract Rule[] getAcceptRule();
hasPermission方法供外部调用,已实现,实现方法为先根据getDenyRule()得到的规则判断权限是否被阻拦,再根据getAcceptRule来判断是否有权限。
而Rule接口的接品则由用户自行定义,随包附带了一个已实现的Rule,实现的功能如下:
先寻找User的所有角色,然后判断角色是否有权限,如果无权限则寻找其父级群组,再取父级群组的所有角色进行判断是否有权限,如果无权限则再往上级群组找,直到找最上一级还是无权限才判断为无权限。
现实现判断权限有无权限的方式已可以达成的有以下三种:
1、 是否有操作的权限。
2、 是否有操作的子操作的权限。
3、 在数据为某条件时有操作(子操作)的权限。
在进行程序开发时,第一步,编写User,Group,Role的实现类,已提供了一套XML的实现类。
第二步,写配置文件,进行权限项的配置。
第三步,在程序中要进行权限判断的地方调用Permission.hasPermission方法即可. 首先,我定义了一个用户接口,可以从其中取出其的各种属性.代码如后面所示.用户除了各种不同的属性以外还必须设置其角色以及所属的群组.
然后定义一个AbstractUser把User共性的东西进行处理.所有的取属性的方法都已实现.用户只要根据实现情况继承AbstractUser把自己要定义的属性进行处理即可.(因为每个系统的用户都会有不同的属性,所以留成抽象类供使用者自己扩展). 只要初始化变量description, name ,group ,id, prop,role,propMap即可.
最后定义了一个类UserImpl来实现具体的User作随包的一个User供一般使用者使用.不建议直接使用UserImpl,因为以后的版本可能会重写该类.如果要使用的话可以把该类改名为自己的类即可.
这部分涉及到了一个ResourceLib类,该类中存是我自己定义的存储各种资源配置用的类,可以直接使用.
======================User.java===============================
package org.fswan.permission; import org.fswan.Identity; import java.util.Properties; import org.fswan.workflow.exception.CantFoundIDException; public interface User { /** * 获取用户名 * @return 用户名 */ public String getName(); /** * 获取用户描述 * @return 描述 */ public String getDescription(); /** * 获取用户标识 * @return 用户标识 */ public Identity getId(); /** * 获取属性 * @return 属性值 */ public Properties getProperties(); /** * 获取所属组 * @return 组列表 */ public Group[] getGroups() throws CantFoundIDException; /** * 获取所有角色 * @return 角色数组 */ public Role[] getRoles() throws CantFoundIDException; /** * 获取用户用作权限判断的属性 * @param prop 权限属性 * @return 属性值 */ public Object getPermissionProp(String prop); }
=======================AbstractUser===================================
package org.fswan.permission; import java.util.HashMap; import java.util.Properties; import org.fswan.Identity; import org.fswan.workflow.exception.IdentityMappingError; /** * * 实现AbstractUser的类构造必须做的一些事 * 初始化变量description,name,group,id,prop,role,propMap */ public class AbstractUser implements User { /** * 描述 */ protected String description; /** * 名称 */ protected String name; /** * 所属的组的标识 */ protected Identity[] group; /** * 用户标识 */ protected Identity id; /** * 属性 */ protected Properties prop; /** * 角色 */ protected Identity[] role; /** * 权限属性存储的位置 */ protected HashMap propMap; /* (non-Javadoc) * @see org.fswan.permission.User#getDescription() */ public String getDescription() { return description; } /* (non-Javadoc) * @see org.fswan.permission.User#getGroups() */ public Group[] getGroups() { Group[] groups = new Group[group.length]; for (int i = 0; i < groups.length; i++) { try { groups[i] = (Group) group[i].newInstance(); } catch (IdentityMappingError e) { e.printStackTrace(); } } return groups; } /* (non-Javadoc) * @see org.fswan.permission.User#getId() */ public Identity getId() { return id; } /* (non-Javadoc) * @see org.fswan.permission.User#getName() */ public String getName() { return name; } /* (non-Javadoc) * @see org.fswan.permission.User#getProperties() */ public Properties getProperties() { return prop; } /* (non-Javadoc) * @see org.fswan.permission.User#getRoles() */ public Role[] getRoles() { Role[] roles = new Role[role.length]; for (int i = 0; i < roles.length; i++) { try { roles[i] = (Role) role[i].newInstance(); } catch (IdentityMappingError e) { e.printStackTrace(); } } return roles; } public String toString() { String retStr = id.getIdName(); retStr += ":" + name; retStr += " " + description + "\n"; retStr += "Group:"; Group[] groups = this.getGroups(); if (groups != null) { for (int i = 0; i < groups.length; i++) { if (groups[i] != null) retStr += groups[i].getId().getIdName() + "\t"; } } Properties p = getProperties(); Object[] obj = p.keySet().toArray(); for (int i = 0; i < obj.length; i++) { retStr+=obj[i]+":"+p.getProperty(obj[i].toString())+"\n"; } return retStr; } /* (non-Javadoc) * @see org.fswan.permission.User#getPermissionProp(java.lang.String) */ public Object getPermissionProp(String prop) { return propMap.get(prop); } }
==============================UserImpl.java===========================
package org.fswan.permission; import java.util.ArrayList; import java.util.Properties; import javax.xml.parsers.DocumentBuilderFactory; import org.fswan.Identity; import org.fswan.IdentityImpl; import org.fswan.ImplementIdentity; import org.fswan.ResourceLib; import org.fswan.workflow.exception.IdentityMappingError; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class XMLUser extends AbstractUser implements ImplementIdentity { /** * XML中定义用户的标签 */ public static final String USER = "User"; public Object newInstance(Identity id) { ArrayList sources = ResourceLib.getXmlResource(); for (int i = 0; i < sources.size(); i++) { try { Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(sources.get(i).toString()); NodeList nl = doc.getElementsByTagName(USER); for (int j = 0; j < nl.getLength(); j++) { Element tempEl = (Element) nl.item(j); String idStr = tempEl.getAttribute("id"); if (idStr != null && !idStr.equals("")) { if (idStr.equals(id.getIdName())) { this.id = new IdentityImpl(Identity.SWITCH, Identity.XMLUSER, idStr); NodeList tempNl = tempEl.getElementsByTagName("Name"); name = tempNl.item(0).getChildNodes().item(0).getNodeValue(); tempNl = tempEl.getElementsByTagName("Description"); description = tempNl.item(0).getChildNodes().item(0).getNodeValue(); tempNl = tempEl.getElementsByTagName("ParentGroup"); Identity[] groups = new Identity[tempNl.getLength()]; for (int iGroup = 0; iGroup < groups.length; iGroup++) { Element tempEl2 = (Element) tempNl.item(iGroup); String subType = tempEl.getAttribute("subType"); if(subType==null || subType.equals(""))subType = Identity.XMLGROUP; groups[iGroup] = new IdentityImpl(Identity.GROUP, subType, tempEl2.getAttribute("id")); } this.group = groups; tempNl = tempEl.getElementsByTagName("Role"); Identity[] roles = new Identity[tempNl.getLength()]; for (int iRole = 0; iRole < tempNl.getLength(); iRole++) { Element tempEl2 = (Element) tempNl.item(iRole); String subType = tempEl.getAttribute("subType"); if(subType==null || subType.equals(""))subType = Identity.XMLROLE; roles[iRole] = new IdentityImpl(Identity.ROLE, subType, tempEl2.getAttribute("id")); } this.role = roles; this.prop = new Properties(); tempNl = tempEl.getElementsByTagName("Property"); if (tempNl != null) for (int k = 0; k < tempNl.getLength(); k++) { Element tempElement = (Element) tempNl.item(k); System.out.println(tempElement.getAttribute("name")); this.prop.setProperty(tempElement.getAttribute("name"), tempElement.getAttribute("value")); } return this; } } } } catch (Exception e) { e.printStackTrace(); } } return null; } public static void main(String[] args) { try { ResourceLib.addResource("D:\\eclipse\\workspace\\workflow\\workflow.xml"); User u = (User) new IdentityImpl(Identity.USER, Identity.XMLUSER, "U01").newInstance(); System.out.println(u); } catch (IdentityMappingError e) { e.printStackTrace(); } } }
========================XML格式=====================
<User id="U01"> <Name>Swan</Name> <Description>方志文</Description> <ParentGroup id="G01"/> <Property name="SEX" value="male"/> <Property name="AGE" value="20"/> </User> ========================XML描述文件================== <xs:complexType name="User"> <xs:annotation> <xs:documentation>用户名</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="Name"/> <xs:element name="Description"/> <xs:element name="ParentGroup" type="Identity" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Role" type="Identity" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="Property" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="name" use="required"/> <xs:attribute name="value" use="required"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="id" use="required"/> </xs:complexType>
权限组件之二(群组)收藏
首先,我定义了一个群组接口,除了继承用户的方法以外还有两个方法,getUsers,getSubGroup.代码如后面所示.用户除了各种不同的属性以外还必须设置其角色以及所属的群组.
然后定义一个AbstractGroup,他继承了Group以及AbstractUser,并实现了Group接口定义的两个方法.用户只要根据实现情况继承AbstractGroup把自己要定义的属性进行处理即可.(因为每个系统的用户都会有不同的属性,所以留成抽象类供使用者自己扩展). 只要初始化变量description, name ,group ,id, prop,role,propMap,subGroup,user即可.
最后定义了一个类XMLGroup来实现具体的Group作随包的一个Group供一般使用者使用.不建议直接使用XMLGroup,因为以后的版本可能会重写该类.如果要使用的话可以把该类改名为自己的类即可.
这部分涉及到了一个ResourceLib类,该类中存是我自己定义的存储各种资源配置用的类,可以直接使用.
======================Group.java===============================
package org.fswan.permission; public interface Group extends User { /** * 获取组下所有的用户 * @return 用户数组 */ public User[] getUsers(); /** * 获取组下属的组 * @return 组的数组 */ public Group[] getSubGroup(); }
=======================AbstractGroup==================================
package org.fswan.permission; import org.fswan.Identity; import org.fswan.workflow.exception.IdentityMappingError; public class AbstractGroup extends AbstractUser implements Group { protected Identity[] subGroup; protected Identity[] user; /* (non-Javadoc) * @see org.fswan.permission.Group#getSubGroup() */ public Group[] getSubGroup() { Group[] groups = new Group[subGroup.length]; for (int i = 0; i < groups.length; i++) { try { groups[i] = (Group)subGroup[i].newInstance(); } catch (IdentityMappingError e) { e.printStackTrace(); } } return groups; } /* (non-Javadoc) * @see org.fswan.permission.Group#getUsers() */ public User[] getUsers() { User[] users = new User[user.length]; for (int i = 0; i < users.length; i++) { try { users[i] = (User)user[i].newInstance(); } catch (IdentityMappingError e) { e.printStackTrace(); } } return users; } public String toString() { String retStr = id.getIdName(); retStr +=":"+name; retStr += " "+description; return retStr; } }
==============================XMLGroup.java===========================
package org.fswan.permission; import java.util.ArrayList; import java.util.Properties; import javax.xml.parsers.DocumentBuilderFactory; import org.fswan.Identity; import org.fswan.IdentityImpl; import org.fswan.ImplementIdentity; import org.fswan.ResourceLib; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class XMLGroup extends AbstractGroup implements ImplementIdentity { /** * XML中定义群组的标签 */ public static final String GROUP = "Group"; public Object newInstance(Identity id) { ArrayList sources = ResourceLib.getXmlResource(); for (int i = 0; i < sources.size(); i++) { try { Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(sources.get(i).toString()); NodeList nl = doc.getElementsByTagName(GROUP); for (int j = 0; j < nl.getLength(); j++) { Element tempEl = (Element)nl.item(j); String idStr = tempEl.getAttribute("id"); if(idStr!=null && !idStr.equals("")) { if(idStr.equals(id.getIdName())) { this.id = new IdentityImpl(Identity.SWITCH,Identity.XMLGROUP,idStr); //加载名称 NodeList tempNl = tempEl.getElementsByTagName("Name"); name = tempNl.item(0).getChildNodes().item(0).getNodeValue(); //加载描述 tempNl = tempEl.getElementsByTagName("Description"); description = tempNl.item(0).getChildNodes().item(0).getNodeValue(); //加载父群组 tempNl = tempEl.getElementsByTagName("ParentGroup"); Identity[] groups = new Identity[tempNl.getLength()]; for (int iGroup=0; iGroup < tempNl.getLength(); iGroup++) { tempEl = (Element)tempNl.item(iGroup); groups[iGroup] = new IdentityImpl(Identity.GROUP,Identity.XMLGROUP,tempEl.getAttribute("id")); } this.subGroup = groups; //加载角色 tempNl = tempEl.getElementsByTagName("Role"); Identity[] roles = new Identity[tempNl.getLength()]; for (int iRole=0; iRole < tempNl.getLength(); iRole++) { tempEl = (Element)tempNl.item(iRole); roles[iRole] = new IdentityImpl(Identity.ROLE,Identity.XMLROLE,tempEl.getAttribute("id")); } this.role = roles; //加载属性 this.prop = new Properties(); tempNl = tempEl.getElementsByTagName("Property"); if(tempNl!=null) for (int k = 0; k < tempNl.getLength(); k++) { Element tempElement = (Element)tempNl.item(k); this.prop.setProperty(tempElement.getAttribute("name"),tempElement.getAttribute("value")); } //加载子群组 tempNl = tempEl.getElementsByTagName("SubGroup"); if (tempNl != null) { subGroup = new Identity[tempNl.getLength()]; for (int k = 0; k < subGroup.length; k++) { Element tempElement = (Element) tempNl.item(k); subGroup[k] = new IdentityImpl(Identity.GROUP,Identity.XMLGROUP,tempElement.getAttribute("id")); } } //加载用户 tempNl = tempEl.getElementsByTagName("User"); if (tempNl != null) { user = new Identity[tempNl.getLength()]; for (int k = 0; k < subGroup.length; k++) { Element tempElement = (Element) tempNl.item(k); user[k] = new IdentityImpl(Identity.USER,Identity.XMLUSER,tempElement.getAttribute("id")); } } return this; } } } } catch (Exception e) { e.printStackTrace(); } } return null; } }
========================XML格式=====================
<Group id="G01"> <Name>系统部</Name> <Description>系统部</Description> </Group>
========================XML描述文件==================
<xs:complexType name="Group"> <xs:annotation> <xs:documentation>群组</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="User"> <xs:sequence> <xs:element name="SubGroup" type="Identity" minOccurs="0" maxOccurs="unbounded"/> <xs:element name="User" type="Identity" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
首先,我定义了一个角色接口,可以从其中取出其的各种属性.代码如后面所示.
然后定义一个AbstractRole把Role共性的东西进行处理.所有的取属性的方法都已实现.用户只要根据实现情况继承AbstractRole把自己要定义的属性进行处理即可.(因为每个系统的用户都会有不同的属性,所以留成抽象类供使用者自己扩展). 只要初始化变量description, name ,id, prop,users(可能是群组), permissionMap即可.
最后定义了一个类XMLRole来实现具体的Role作随包的一个Role供一般使用者使用.不建议直接使用XMLRole,因为以后的版本可能会重写该类.如果要使用的话可以把该类改名为自己的类即可.
这部分涉及到了一个ResourceLib类,该类中存是我自己定义的存储各种资源配置用的类,可以直接使用.
======================Role.java===============================
package org.fswan.permission; import org.fswan.Identity; import java.util.Properties; import org.fswan.workflow.exception.CantFoundIDException; public interface Role { /** * 获取角色ID * @return */ public Identity getId(); /** * 获取角色的名称 * @return 名称 */ public String getName(); /** * 获取角色的描述 * @return 描述 */ public String getDescription(); /** * 获取角色的所有的用户(组) * @return 用户 */ public User[] getUsers() throws CantFoundIDException; /** * 角色的属性 * @return 属性值 */ public Properties getProperties(); /** * 获取用户用作权限判断的属性 * @param prop 权限属性 * @return 属性值 */ public Object getPermissionProp(String prop); }
=======================AbstractRole===================================
package org.fswan.permission; import java.util.HashMap; import java.util.Properties; import org.fswan.Identity; import org.fswan.workflow.exception.IdentityMappingError; public class AbstractRole implements Role { /** * 描述 */ protected String description ; /** * 名称 */ protected String name; /** * 标识 */ protected Identity id; /** * 属性 */ protected Properties prop; /** * 该角色所有用户的标识 */ protected Identity[] users; /** * 权限属性表 */ protected HashMap permissionMap; /* (non-Javadoc) * @see org.fswan.permission.Role#getDescription() */ public String getDescription() { return description; } /* (non-Javadoc) * @see org.fswan.permission.Role#getId() */ public Identity getId() { return id; } /* (non-Javadoc) * @see org.fswan.permission.Role#getName() */ public String getName() { return name; } /* (non-Javadoc) * @see org.fswan.permission.Role#getProperties() */ public Properties getProperties() { return prop; } /* (non-Javadoc) * @see org.fswan.permission.Role#getUsers() */ public User[] getUsers() { User[] retUser = new User[users.length]; for (int i = 0; i < retUser.length; i++) { try { retUser[i] = (User)users[i].newInstance(); } catch (IdentityMappingError e) { e.printStackTrace(); } } return retUser; } public String toString() { String retStr = id.getIdName(); retStr +=":"+name; retStr += " "+description; return retStr; } /* (non-Javadoc) * @see org.fswan.permission.Role#getPermissionProp(java.lang.String) */ public Object getPermissionProp(String prop) { return permissionMap.get(prop); } }
==============================XMLRole.java===========================
/* * Created on 2004-4-21 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package org.fswan.permission; import java.util.ArrayList; import java.util.Properties; import javax.xml.parsers.DocumentBuilderFactory; import org.fswan.Identity; import org.fswan.IdentityImpl; import org.fswan.ImplementIdentity; import org.fswan.ResourceLib; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class XMLRole extends AbstractRole implements ImplementIdentity { /** * XML标签用的字符串 */ public static final String ROLE = "Role"; public Object newInstance(Identity id) { ArrayList sources = ResourceLib.getXmlResource(); for (int i = 0; i < sources.size(); i++) { try { Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(sources.get(i).toString()); NodeList nl = doc.getElementsByTagName(ROLE); for (int j = 0; j < nl.getLength(); j++) { Element tempEl = (Element)nl.item(j); String idStr = tempEl.getAttribute("id"); if(idStr!=null && !idStr.equals("")) { if(idStr.equals(id.getIdName())) { this.id = new IdentityImpl(Identity.SWITCH,Identity.XMLROLE,idStr); NodeList tempNl = tempEl.getElementsByTagName("Name"); name = tempNl.item(0).getChildNodes().item(0).getNodeValue(); tempNl = tempEl.getElementsByTagName("Description"); description = tempNl.item(0).getChildNodes().item(0).getNodeValue(); this.prop = new Properties(); tempNl = tempEl.getElementsByTagName("Property"); if(tempNl!=null) for (int k = 0; k < tempNl.getLength(); k++) { Element tempElement = (Element)tempNl.item(k); this.prop.setProperty(tempElement.getAttribute("name"),tempElement.getAttribute("value")); } return this; } } } } catch (Exception e) { e.printStackTrace(); } } return null; } }
========================XML格式=====================
<Role id="R01"> <Name>系统管理员</Name> <Description>系统管理员</Description> </Role>
========================XML描述文件==================
<xs:complexType name="Role"> <xs:annotation> <xs:documentation>角色名</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="Name"/> <xs:element name="Description"/> <xs:element name="Property" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="id" use="required"/> </xs:complexType>
相关推荐
《统一权限组件详解》 在IT领域,权限管理是一个至关重要的环节,尤其在大型系统或者企业级应用中,权限控制不仅...对于开发者而言,深入学习和实践这类组件,有助于提升系统的安全性,并为用户提供更友好的权限体验。
本篇文章将深入探讨权限组件的设计思路,帮助开发者理解如何有效地实现这一重要功能。 首先,权限组件的核心目标是实现对用户操作的精细化控制。这包括对资源(如数据、功能模块)的访问权限进行定义、分配、检查...
该项目是一个基于Java语言的Android权限申请组件LinJiuXPermissionClient,包含了101个文件,其中包括28个XML配置文件、13个MD5校验文件...该组件专为Android平台上的权限管理需求而设计,适用于各种Android应用程序。
djangorbac权限管理组件
七、用户权限未设置:中间层、客户端或者其中的一个或者多个不在域里边,那么要求客户端当前登录Windows的用户必须存于中间层服务器的Power Users组中或者administrators组中。 解决方法:确保用户权限正确,中间层...
COM组件,全称为Component Object Model,是微软提出的一种软件组件模型,它允许不同应用程序之间进行交互和通信。...同时,MTS还允许对组件进行配置,如设置安全权限、事务属性等,进一步增强了组件的管理和控制能力。
本篇文章将深入探讨Delphi如何实现权限管理,以及通过提供的源代码,新手可以学习到哪些关键概念。 首先,权限管理的核心是角色(Role)- 权限(Permission)模型。在Delphi中,你可以创建一系列角色,每个角色对应...
Zoo组件同样适用于文章管理。它不仅支持标准的文章格式,还可以创建自定义文章类型,适应新闻、博客、案例研究等多种内容形式。每篇文章可以设置不同的元数据、标签、作者信息,并通过内置的评论系统促进用户互动。...
权限设计的主要组件包括权限管理模块、角色管理模块、用户管理模块和权限分配模块。权限管理模块负责管理所有的权限,包括功能权限和资源权限。角色管理模块负责管理所有的角色,包括管理员、普通用户等。用户管理...
在C# WinForm应用开发中,权限控制是一个关键的安全组件,它确保了只有授权的用户才能访问特定的功能或数据。本教程将详细讲解如何在C# WinForm环境中实现基于角色的权限控制,包括角色、用户和权限的设置。 首先,...
标题中的“win7语音组件”指的是Windows 7操作系统中的语音技术相关组件,这些组件支持文本转语音(TTS,Text-to-Speech)功能,允许计算机将文字转化为可听见的语音输出。在进行TTS开发时,这部分组件是必不可少的...
复选框可以用来选择或取消具体的操作权限,而树形组件则适合展示层次化的资源结构,用户可以选择某个节点(代表资源)下的所有权限。 3. 动态菜单生成 根据用户的角色,动态生成菜单是权限管理的关键。EasyUI的...
在这个"通用的权限管理,ssh项目中权限管理的一个小示例"中,我们将深入探讨SSH框架如何实现权限控制,并学习如何通过自定义标签进行更灵活的定制。 首先,让我们了解一下SSH框架的三个主要组件: 1. **Spring**:...
3. **安装兼容性补丁**:如果是由于系统兼容性导致的问题,可能需要寻找适用于64位Win7的更新或补丁。 4. **以管理员权限运行**:尝试以管理员权限启动可能导致错误的应用程序,看是否能解决问题。 5. **修复或重...
主要定位于后台管理系统学习交流,已内置后台管理系统的基础功能和高效的代码生成工具, 包括:系统权限组件、数据权限组件、数据字典组件、核心工具组件、视图操作组件、工作流组件、代码生成等。 前端界面风格...
本文将详细介绍Vue权限管理相关知识点,为vue实战、学习和项目实战提供参考。 首先,Vue权限管理可以分为前端权限控制和后端权限控制两个部分。前端权限控制主要负责页面级别的访问权限,例如页面元素显示隐藏、...
在学习COM+组件编程时,需要理解这些基本概念并掌握如何创建、配置和使用COM+组件。同时,熟悉Visual Studio和COM+设计工具,如Component Services,将有助于实际开发过程中的应用。尽管现在.NET Framework和.NET ...
第1章 组件设计概述 第2章 组件设计原则 第3章 预备知识 第4章 配置组件 第5章 Socket通信组件 第6章 日志组件 第7章 数据库访问组件 第8章 JSON转换器 第9章 权限组件
对于初学者来说,这是一个很好的学习平台,不仅可以深入了解各组件的使用,还能掌握权限管理的设计和实现。同时,对于有经验的开发者,此项目也是一个有价值的参考,可以帮助他们快速构建类似的业务系统。