您的位置:首页 > 编程语言 > Java开发

关于用Java程序实现8421码权限管理 -第四部分

2010-01-31 15:46 666 查看
自定义标签,标签处理器类:

PrivilegeTag.Java有权限的类设计:

package com.qizhi.tags.bean;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.tagext.TagSupport;
import com.qizhi.entity.Roleright;
import com.qizhi.web.form.UserForm;
/**
* <qz:privilege />表示处理器类
*/
public class PrivilegeTag extends TagSupport
{
private String beanName="login";
private String scope="session";
private String operation="none";

public void setBeanName(String beanName)
{
this.beanName = beanName;
}
public void setScope(String scope)
{
this.scope = scope;
}
public void setOperation(String operation)
{
this.operation = operation;
}

public int doStartTag(){
UserForm init_bean=null;
if (scope == null || scope.equals(""))
return SKIP_BODY;
else
{
if (scope.trim().equals("session"))
{
HttpSession session = pageContext.getSession();
init_bean = (UserForm)session.getAttribute(beanName);
if (init_bean == null)
return SKIP_BODY;
}
else{
if (scope.trim().equals("request"))
{
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
init_bean = (UserForm)request.getAttribute(beanName);
if (init_bean == null)
return SKIP_BODY;
}
}
}

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
String resource_path = request.getServletPath();//得到本页资源url

List<Roleright> roleRights=init_bean.getUser().getRole().getRolerights();
for (Roleright roleright : roleRights)
{
if(roleright.getRight().getRightUrl().trim().equals(resource_path.trim())){

if (operation.trim().equals("ALL"))//所有权限
if(roleright.getAddVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("QUERY"))//如果需要判定是否具有查询
if (roleright.getFindVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("ADD"))//增加权限
if (roleright.getAddVal())return EVAL_BODY_AGAIN;

if (operation.equals("DELETE"))//删除权限
if (roleright.getDelVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("UPDATE"))//修改权限
if (roleright.getEditVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("PRINT"))//打印权限
if (roleright.getPrintVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("DISTRIBUTE"))//分配权限
if (roleright.getDisVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("COMFIRM"))//批准权限
if (roleright.getCfmVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("SPECIALTY"))//特别权限
if (roleright.getSpecVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("ADMIN"))//管理员权限
if (roleright.getAdminVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("DOWNLOAD"))//下载权限
if (roleright.getDownLoadVal())return EVAL_BODY_AGAIN;

break;
}
}
return SKIP_BODY;
}
}

NotPrivilegeTag.java无权限类设计:

package com.qizhi.tags.bean;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.tagext.TagSupport;

import com.qizhi.entity.Roleright;
import com.qizhi.web.form.UserForm;

/**
* <qz:notPrivilege />表示无权限处理器类
*/
public class NotPrivilegeTag extends TagSupport
{
private String beanName="login";
private String scope="session";
private String operation="none";

public void setBeanName(String beanName)
{
this.beanName = beanName;
}
public void setScope(String scope)
{
this.scope = scope;
}
public void setOperation(String operation)
{
this.operation = operation;
}

public int doStartTag(){
UserForm init_bean=null;
if (scope == null || scope.equals(""))
return SKIP_BODY;
else
{
if (scope.trim().equals("session"))
{
HttpSession session = pageContext.getSession();
init_bean = (UserForm)session.getAttribute(beanName);
if (init_bean == null)
return SKIP_BODY;
}
else{
if (scope.trim().equals("request"))
{
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
init_bean = (UserForm)request.getAttribute(beanName);
if (init_bean == null)
return SKIP_BODY;
}
}
}

HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
String resource_path = request.getServletPath();//得到本页资源url

List<Roleright> roleRights=init_bean.getUser().getRole().getRolerights();
for (Roleright roleright : roleRights)
{
if(roleright.getRight().getRightUrl().trim().equals(resource_path.trim())){

if (operation.trim().equals("NONE"))//没有权限
if(!roleright.getAddVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("QUERY"))//如果需要判定是否具有查询
if (!roleright.getFindVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("ADD"))//增加权限
if (!roleright.getAddVal())return EVAL_BODY_AGAIN;

if (operation.equals("DELETE"))//删除权限
if (!roleright.getDelVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("UPDATE"))//修改权限
if (!roleright.getEditVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("PRINT"))//打印权限
if (!roleright.getPrintVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("DISTRIBUTE"))//分配权限
if (!roleright.getDisVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("COMFIRM"))//批准权限
if (!roleright.getCfmVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("SPECIALTY"))//特别权限
if (!roleright.getSpecVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("ADMIN"))//管理员权限
if (!roleright.getAdminVal())return EVAL_BODY_AGAIN;

if (operation.trim().equals("DOWNLOAD"))//下载权限
if (!roleright.getDownLoadVal())return EVAL_BODY_AGAIN;

break;
}
}
return SKIP_BODY;
}
}

标签设计:

qizhi.tld:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd" >
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>qz</short-name>
<uri>http://www.qizhi.com/qizhi/tags-qz</uri>
<tag>
<name>privilege</name>
<tag-class>com.qizhi.tags.bean.PrivilegeTag</tag-class>
<body-content>jsp</body-content>
<description>
有权限标签
<br>功能:
<br>如果取InitBean这个javabean中的属性字段userid为当前用户,该
用户在本页url(本页url是一个资源),如果有UPDATE权限,那就执行标签内body
部分的链接代码
</description>
<attribute>
<name>beanName</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>String</type>
<description>
集合键名称,如:
<br/>request.getAttribute("beanName")
</description>
</attribute>
<attribute>
<name>scope</name>
<rtexprvalue>true</rtexprvalue>
<type>String</type>
<description>查找的范围Requet或Session默认为Session</description>
</attribute>
<attribute>
<name>operation</name>
<rtexprvalue>true</rtexprvalue>
<type>String</type>
<description>
权限值,如下:
<br/>ALL:所有权限
<br/>ADD:增加权限
<br/>DELETE:删除权限
<br/>UPDATE:修改权限
<br/>QUERY:查询权限
<br/>PRINT:打印权限
<br/>DISTRIBUTE:分配权限
<br/>COMFIRM:批准权限
<br/>SPECIALTY:特别权限
<br/>ADMIN:管理员权限
<br/>DOWNLOAD:下载权限
</description>
</attribute>
<example ></example>
</tag>

<tag>
<name>notPrivilege</name>
<tag-class>com.qizhi.tags.bean.NotPrivilegeTag</tag-class>
<body-content>jsp</body-content>
<description>
无权限标签
<br>功能:
<br>如果取InitBean这个javabean中的属性字段userid为当前用户,该
用户在本页url(本页url是一个资源),如果无UPDATE权限,那就执行标签内body
部分的链接代码
</description>
<attribute>
<name>beanName</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>String</type>
<description>
集合键名称,如:
<br/>request.getAttribute("beanName")
</description>
</attribute>
<attribute>
<name>scope</name>
<rtexprvalue>true</rtexprvalue>
<type>String</type>
<description>查找的范围Requet或Session默认为Session</description>
</attribute>
<attribute>
<name>operation</name>
<rtexprvalue>true</rtexprvalue>
<type>String</type>
<description>
没有权限值,如下:
<br/>NONE:没有权限
<br/>ADD:没有增加权限
<br/>DELETE:没有删除权限
<br/>UPDATE:没有修改权限
<br/>QUERY:没有查询权限
<br/>PRINT:没有打印权限
<br/>DISTRIBUTE:没有分配权限
<br/>COMFIRM:没有批准权限
<br/>SPECIALTY:没有特别权限
<br/>ADMIN:没有管理员权限
<br/>DOWNLOAD:没有下载权限
</description>
</attribute>
<example ></example>
</tag>
</taglib>

标签引用在web.xml中配置:

<taglib>
<taglib-uri>http://www.qizhi.com/qizhi/tags-qz</taglib-uri>
<taglib-location>/WEB-INF/qizhi.tld</taglib-location>
</taglib>

全部代码结束,以上全部只是权限管理的主要代码,参考使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐