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

来源:互联网 发布:手机免费刷赞软件 编辑:程序博客网 时间:2024/06/06 07:00

自定义标签,标签处理器类:

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>
     有权限标签
     &lt;br&gt;功能:
     &lt;br&gt;如果取InitBean这个javabean中的属性字段userid为当前用户,该
      用户在本页url(本页url是一个资源),如果有UPDATE权限,那就执行标签内body
      部分的链接代码
    </description>
    <attribute>
    <name>beanName</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
    <type>String</type>
    <description>
     集合键名称,如:
    &lt;br/&gt;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>
     权限值,如下:
    &lt;br/&gt;ALL:所有权限             
 &lt;br/&gt;ADD:增加权限
 &lt;br/&gt;DELETE:删除权限
 &lt;br/&gt;UPDATE:修改权限
 &lt;br/&gt;QUERY:查询权限
 &lt;br/&gt;PRINT:打印权限
 &lt;br/&gt;DISTRIBUTE:分配权限
 &lt;br/&gt;COMFIRM:批准权限
 &lt;br/&gt;SPECIALTY:特别权限
 &lt;br/&gt;ADMIN:管理员权限
 &lt;br/&gt;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>
     无权限标签
     &lt;br&gt;功能:
     &lt;br&gt;如果取InitBean这个javabean中的属性字段userid为当前用户,该
      用户在本页url(本页url是一个资源),如果无UPDATE权限,那就执行标签内body
      部分的链接代码
    </description>
    <attribute>
    <name>beanName</name>
    <required>true</required>
    <rtexprvalue>true</rtexprvalue>
    <type>String</type>
    <description>
     集合键名称,如:
    &lt;br/&gt;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>
     没有权限值,如下:
    &lt;br/&gt;NONE:没有权限             
 &lt;br/&gt;ADD:没有增加权限
 &lt;br/&gt;DELETE:没有删除权限
 &lt;br/&gt;UPDATE:没有修改权限
 &lt;br/&gt;QUERY:没有查询权限
 &lt;br/&gt;PRINT:没有打印权限
 &lt;br/&gt;DISTRIBUTE:没有分配权限
 &lt;br/&gt;COMFIRM:没有批准权限
 &lt;br/&gt;SPECIALTY:没有特别权限
 &lt;br/&gt;ADMIN:没有管理员权限
 &lt;br/&gt;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>

 

全部代码结束,以上全部只是权限管理的主要代码,参考使用。

原创粉丝点击