自定义jsp标签实现页面元素的权限控制

来源:互联网 发布:树的遍历非递归算法 编辑:程序博客网 时间:2024/05/01 21:52

在 web.xml 下建立permission.tld

<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"    version="2.0">      <description>permission taglib</description><!-- 描述 -->  <display-name>permission taglib</display-name>  <tlib-version>1.0</tlib-version><!-- 版号 -->  <short-name>permission</short-name> <!-- 简单名称 -->  <uri>http://localhost:8080/aq/</uri>  <!-- 引用路径 -->  <tag>    <description>权限校验标签,有权限就显示标签体的内容,否则不显示</description>    <name>permission</name> <!-- 标签名 -->    <tag-class>que.PermissionTag</tag-class> <!-- 标签类 -->    <body-content>JSP</body-content>    <attribute>        <description></description>        <name>module</name> <!-- 属性名 -->        <required>true</required> <!-- 标签的属性是否是必须的 -->        <rtexprvalue>false</rtexprvalue>    </attribute>    <attribute>        <description></description>        <name>privilege</name>        <required>true</required>        <rtexprvalue>false</rtexprvalue>    </attribute>  </tag>  </taglib>

新建 PermissionTag.java

import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.TagSupport;public class PermissionTag extends TagSupport{//模块   private String module;   //模块中具体权限   private String privilege;    public String getModule() {      return module;   }   public void setModule(String module) {      this.module = module;   }   public String getPrivilege() {      return privilege;   }   public void setPrivilege(String privilege) {      this.privilege = privilege;   }   @Override   public int doStartTag() throws JspException {      boolean result = false;      if (this.module.equals("1") && this.privilege.equals("2")) {      result = true;      }      return result? EVAL_BODY_INCLUDE : SKIP_BODY;//真:返回EVAL_BODY_INCLUDE(执行标签);假:返回SKIP_BODY(跳过标签不执行)   }}

在 web.xml 中做如下配置:

<jsp-config>    <taglib>        <taglib-uri>/permission</taglib-uri>        <taglib-location>/WEB-INF/permission.tld</taglib-location>    </taglib>  </jsp-config>

在 jsp 页面头部做如下引用

<%@ taglib uri="/permission" prefix="yg"%>

在改jsp 页面中添加如下代码


<yg:permission module="1" privilege="2"><a href="">修改</a>   </yg:permission>   <a href="">查看</a>

这样 当 privilege = "1" 时 修改按钮不显示,privilege = “2” 时修改按钮就会显示出来。


在 PermissionTag.java 中我们可以对权限进行详细的控制。

0 0