xx.tld标签开发之权限管理标签开发

来源:互联网 发布:真人快打x没有网络链接 编辑:程序博客网 时间:2024/06/05 05:51


以前将 xx.tld 类的自定义标签开发看得很神秘,其实它只是个纸老虎,其实它是相当的简单。要实现它,只需要三个步骤便可。

前沿: xx.tld 是一种正式的标签开发,每个标签要对应一个 java 类。

一、操作步骤:

1、创建标签的逻辑处理类;

2、创建 xx.tld 文件,用于对标签属性的定义与说明。文件放置的位置: WEB-INF/tld/ ;

3、jsp 页面头部引入标签,然后便可以 正常实用了。


二、下面按照这个步骤将 权限标签开发 代码贴出来。

1、创建标签的逻辑处理类;(PermissionTag.java)

[java] view plain copy
print?
  1. <span style="font-size:18px;">package com.wsy.baobaotao.front.tags;  
  2.   
  3. import java.util.List;  
  4.   
  5. import javax.servlet.ServletRequest;  
  6. import javax.servlet.http.HttpSession;  
  7. import javax.servlet.jsp.JspException;  
  8. import javax.servlet.jsp.tagext.TagSupport;  
  9.   
  10. import org.springframework.util.StringUtils;  
  11.   
  12. import com.wsy.baobaotao.base.cons.CommonConstant;  
  13. import com.wsy.baobaotao.front.entity.User;  
  14.   
  15. public class PermissionTag extends TagSupport {  
  16.     private static final long serialVersionUID = 1L;  
  17.   
  18.     // 权限标签的属性  
  19.     private String authType;  
  20.   
  21.     @Override  
  22.     public int doStartTag() throws JspException {  
  23.         // 因为 PermissionTag 继承了 TagSupport 所以可以使用 pageContext 来获取session对象  
  24.         HttpSession session = pageContext.getSession();  
  25.         ServletRequest request = pageContext.getRequest();  
  26.         User u = (User) session.getAttribute(CommonConstant.USER_CONTEXT);  
  27.         System.out.println("/==================================/");  
  28.         System.out.println(u);  
  29.   
  30.         boolean flag = hasPermission(authType, u);  
  31.   
  32.         if (flag) {  
  33.             // 输出标签中的内容  
  34.             return EVAL_BODY_INCLUDE;  
  35.         }  
  36.   
  37.         // 跳过标签中的内容  
  38.         return SKIP_BODY;  
  39.     }  
  40.   
  41.     // 判断用户是否有权限访问  
  42.     private static boolean hasPermission(String authType, User u) {  
  43.         boolean hasPermission_flag = false;  
  44.   
  45.         if (StringUtils.isEmpty(authType) || u == null) {  
  46.             return false;  
  47.         }  
  48.   
  49.         // String[] userPermisssions = {"admin", "manager", "user"};  
  50.         List<String> userAurthTypes = u.getAuthTypes();  
  51.         String[] permisssions = authType.split(",");  
  52.         boolean flag = false;  
  53.         for (String ua : userAurthTypes) {  
  54.             for (String p : permisssions) {  
  55.                 if (ua.equals(p)) {  
  56.                     hasPermission_flag = true;  
  57.   
  58.                     flag = true;  
  59.                     break;  
  60.                 }  
  61.             }// end inner for loop  
  62.             if (flag) {  
  63.                 break;  
  64.             }  
  65.         }// end outer for loop  
  66.   
  67.         return hasPermission_flag;  
  68.     }  
  69.   
  70.     public String getAuthType() {  
  71.         return authType;  
  72.     }  
  73.   
  74.     public void setAuthType(String authType) {  
  75.         this.authType = authType;  
  76.     }  
  77.   
  78. }  
  79. </span>  





2、创建 xx.tld 文件,用于对标签属性的定义与说明。文件放置的位置: WEB-INF/tld/ ;(permission-tags.tld)

[html] view plain copy
print?
  1. <span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>    
  2. <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">   
  3. <taglib>  
  4.     <tlib-version>1.2</tlib-version>    
  5.     <jsp-version>1.1</jsp-version>    
  6.     <short-name>html</short-name>  
  7.     <uri>http://com.wsy.baobaotao/html/permission</uri>  
  8.     <description>  
  9.         <![CDATA[customized taglib for our java development framework according to servlet Taglib]]>  
  10.     </description>  
  11.       
  12.     <tag>  
  13.         <name>permission</name>    
  14.         <tag-class>com.wsy.baobaotao.front.tags.PermissionTag</tag-class>    
  15.         <body-content>JSP</body-content>    
  16.         <attribute>    
  17.             <name>authType</name>    
  18.             <required>true</required>  
  19.             <rtexprvalue>false</rtexprvalue>  
  20.             <description>  
  21.                 <![CDATA[authType : admin/manager/user ; Multivalued please ',' space.]]>  
  22.             </description>    
  23.         </attribute>    
  24.     </tag>    
  25. </taglib>  </span>  



3、jsp 页面头部引入标签,然后便可以 正常实用了。(permissionControl.jsp)

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@taglib prefix="pager" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="html" uri="http://com.wsy.baobaotao/html/permission" %>


<%
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
request.setAttribute("path", basePath);
%>


<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>用户创建成功</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="${path}/js/commons/jquery-1.11.1.min.js"></script>
<script type="text/javascript" src="${path}/js/commons/jquery.json-2.4.js"></script>
<style type="text/css">
body{
font-size: 12pt;
margin: 0;
padding: 0;
}
.button{
margin:0;
padding-left:5px;
padding-right:5px;
height: 30px;
line-height: 30px;
border: 2px solid black;
background-color: yellow;
}

</style>
  </head>
  
  <body>
  <form action="${path }/user/loadUserList.shtml" id="user_loadUserList">
  用户名:<input type="text" id="userName" name="userName" maxlength="20" value=""/>
  <input type="submit" class="button" value="提交"/>
  </form>
  <br>
  <html:permission authType="admin,manager">
    <table id="friends"  width="700" border="1" cellspacing="0" cellpadding="0" >
    <caption style="margin-bottom:10px;">查看所有好友信息</caption>
    <thead>
    <tr bgcolor="yellow" height="30">
    <th width="30%">用户名</th>
    <th width="30%">密码</th>
    <th width="40%">真是姓名</th>
    </tr>
    </thead>
    <tbody>
  <tr height="30">
<td colspan="3" align="center">没有数据</td>
</tr>
    </tbody>
    </table>
    </html:permission>
  </body>
  
<script type="text/javascript">
$(function(){
//alert("aaaaaaaaaaaaaaaa");
});
</script>  
</html>

原创粉丝点击