熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Java自定義簡單標簽實例

2013-11-15 12:05:18  來源: JSP教程 
Java自定義簡單標簽可以方便的在頁面輸出信息並且對於權限的控制和對於Jsp標簽和servlet代碼的分離有著很好的作用  

  下面將以權限的控制為例自定義一個標簽
標簽類型

復制代碼 代碼如下:
<wxt:per uri="${pageContextrequestcontextPath }/privilege/list"></wxt:per>

  
步驟
自定義一個類PerssionTag 繼承SimpleTagSupport(自定義標簽一般都會繼承這個類)

復制代碼 代碼如下:
package cncomliveucprivilegetag;
import javaioIOException;
import javautilArrayList;
import javautilList;
import javautilSet;
import javaxservletjspJspException;
import javaxservletjspPageContext;
import javaxservletjsptagextSimpleTagSupport;
import cncomliveucprivilegemodelPrivilege;
import cncomliveucprivilegemodelResource;
import cncomliveucprivilegemodelRole;
import cncomliveucprivilegemodelUser;
/**
 *
 * @說明   自定義標簽
 */
public class PerssionTag extends SimpleTagSupport {

 //自定義標簽屬性用於標簽傳入參數
 private String uri;

 //接收標簽傳入的參數
 public void setUri(String uri) {
  thisuri = uri;
 }
 @Override
 public void doTag() throws JspException IOException {
  //獲取用戶登陸後保存的Session
  PageContext page = (PageContext) thisgetJspContext();
  User user = (User) pagegetSession()getAttribute("login");
  //如果用戶登陸
  if(user != null) {
   //用戶登陸判斷用戶權限
   List<String> list = new ArrayList<String>();
   //獲取用戶的角色
   Set<Role> role = usergetRole();
   for(Role r:role) {
    //獲取角色對應的權限
    Set<Privilege> privilege = rgetPrivilege();
    for(Privilege p:privilege) {
     //獲取權限對應的資源
     Set<Resource> res = pgetResource();
     for(Resource re:res) {
      listadd(regetUri());
     }
    }
   }
   for(String ur:list) {
    //判斷用戶的權限
    if(urequals(uri)) {
     thisgetJspBody()invoke(null); //有權限輸出標簽體內容
    }
   }
  }
 }
}

  
在WEBINF下創建tld文件描述標簽

復制代碼 代碼如下:
<?xml version="" encoding="UTF" standalone="no"?>
<taglib xmlns=":xsi="
 version=""
 xsi:schemaLocation="://javasuncom/xml/ns/jee/webjsptaglibrary__xsd">
 <description><![CDATA["To make it easier to access dynamic data;
                    the Apache Struts framework includes a library of custom tags
                    The tags interact with the frameworks validation and internationalization features;
                    to ensure that input is correct and output is localized
                    The Struts Tags can be used with JSP FreeMarker or Velocity"]]></description>
 <displayname>"Struts Tags"</displayname>
 <tlibversion></tlibversion>
 <shortname>s</shortname>
 <uri>/wxt</uri>
 <tag>
  <name>per</name><! 標簽名 >
  <tagclass>cncomliveucprivilegetagPerssionTag</tagclass>
  <bodycontent>scriptless</bodycontent>
  <! 標簽屬性 >
  <attribute>
   <name>uri</name><! 屬性名稱 >
   <required>true</required><! 是否必須 >
   <rtexprvalue>true</rtexprvalue><! 是否為動態標簽 >
  </attribute>
 </tag>
</taglib>

  
運用標簽
在Jsp頁面導入標簽
<A href="mailto:%@taglib prefix=wxt uri=/wxt %">%@taglib prefix="wxt" uri="/wxt" %</A>
運用標簽
<wxt:per uri="${pageContextrequestcontextPath }/user/list">
      <a href="${pageContextrequestcontextPath }/user/list" target="reight">用戶管理</a>
</wxt:per>
用戶權限包含uri資源的將會輸出標簽內容


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20257.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.