最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java自定義簡單標簽實例

 更新時間:2013年07月20日 16:03:02   作者:  
Java自定義簡單標簽可以方便的在頁面輸出信息,并且對于權(quán)限的控制,和對于Jsp標簽和servlet代碼的分離有著很好的作用

下面將以權(quán)限的控制為例自定義一個標簽:
一、標簽類型

復制代碼 代碼如下:

<wxt:per uri="${pageContext.request.contextPath }/privilege/list"></wxt:per>

步驟:
1.自定義一個類PerssionTag 繼承SimpleTagSupport(自定義標簽一般都會繼承這個類)
復制代碼 代碼如下:

package cn.com.liveuc.privilege.tag;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import cn.com.liveuc.privilege.model.Privilege;
import cn.com.liveuc.privilege.model.Resource;
import cn.com.liveuc.privilege.model.Role;
import cn.com.liveuc.privilege.model.User;
/**
 *
 * @說明   自定義標簽
 */
public class PerssionTag extends SimpleTagSupport {

 //自定義標簽屬性,用于標簽傳入?yún)?shù)
 private String uri;

 //接收標簽傳入的參數(shù)
 public void setUri(String uri) {
  this.uri = uri;
 }
 @Override
 public void doTag() throws JspException, IOException {
  //獲取用戶登陸后保存的Session
  PageContext page = (PageContext) this.getJspContext();
  User user = (User) page.getSession().getAttribute("login");
  //如果用戶登陸
  if(user != null) {
   //用戶登陸判斷用戶權(quán)限
   List<String> list = new ArrayList<String>();
   //獲取用戶的角色
   Set<Role> role = user.getRole();
   for(Role r:role) {
    //獲取角色對應的權(quán)限
    Set<Privilege> privilege = r.getPrivilege();
    for(Privilege p:privilege) {
     //獲取權(quán)限對應的資源
     Set<Resource> res = p.getResource();
     for(Resource re:res) {
      list.add(re.getUri());
     }
    }
   }
   for(String ur:list) {
    //判斷用戶的權(quán)限
    if(ur.equals(uri)) {
     this.getJspBody().invoke(null); //有權(quán)限輸出標簽體內(nèi)容
    }
   }
  }
 }
}

2.在WEB-INF下創(chuàng)建tld文件描述標簽。
復制代碼 代碼如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 version="2.0"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.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 framework's 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>
 <display-name>"Struts Tags"</display-name>
 <tlib-version>2.2.3</tlib-version>
 <short-name>s</short-name>
 <uri>/wxt</uri>
 <tag>
  <name>per</name><!-- 標簽名 -->
  <tag-class>cn.com.liveuc.privilege.tag.PerssionTag</tag-class>
  <body-content>scriptless</body-content>
  <!-- 標簽屬性 -->
  <attribute>
   <name>uri</name><!-- 屬性名稱 -->
   <required>true</required><!-- 是否必須 -->
   <rtexprvalue>true</rtexprvalue><!-- 是否為動態(tài)標簽 -->
  </attribute>
 </tag>
</taglib>

3.運用標簽
在Jsp頁面導入標簽:
<A href="mailto:%@taglib prefix='wxt' uri='/wxt' %">%@taglib prefix="wxt" uri="/wxt" %</A>
運用標簽:
<wxt:per uri="${pageContext.request.contextPath }/user/list">
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<a href="${pageContext.request.contextPath }/user/list" target="reight">用戶管理</a>
</wxt:per>
用戶權(quán)限包含uri資源的將會輸出標簽內(nèi)容。 

相關(guān)文章

  • SpringBoot熱部署配置過程

    SpringBoot熱部署配置過程

    這篇文章主要介紹了SpringBoot熱部署配置過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Hibernate中使用HQLQuery查詢?nèi)繑?shù)據(jù)和部分數(shù)據(jù)的方法實例

    Hibernate中使用HQLQuery查詢?nèi)繑?shù)據(jù)和部分數(shù)據(jù)的方法實例

    今天小編就為大家分享一篇關(guān)于Hibernate中使用HQLQuery查詢?nèi)繑?shù)據(jù)和部分數(shù)據(jù)的方法實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • mybatis的if判斷integer問題

    mybatis的if判斷integer問題

    這篇文章主要介紹了mybatis的if判斷integer問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • springboot+mybatis配置控制臺打印sql日志的方法

    springboot+mybatis配置控制臺打印sql日志的方法

    這篇文章主要介紹了springboot+mybatis配置控制臺打印sql日志的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java中的迭代和遞歸詳解

    Java中的迭代和遞歸詳解

    這篇文章主要給大家介紹了關(guān)于Java中的迭代和遞歸,文章顯示分別介紹了Java中的迭代和遞歸,而后又介紹了迭代和遞歸的區(qū)別以及數(shù)形遞歸的相關(guān)內(nèi)容,文中介紹的很詳細,相信會對大家學習具有一定的參考借鑒價值,有需要的朋友們可以參考借鑒。
    2016-11-11
  • SpringBoot集成FTP與SFTP連接池流程

    SpringBoot集成FTP與SFTP連接池流程

    在項目開發(fā)中,一般文件存儲很少再使用SFTP服務,但是也不排除合作伙伴使用SFTP來存儲項目中的文件或者通過SFTP來實現(xiàn)文件數(shù)據(jù)的交互,這篇文章主要介紹了SpringBoot集成FTP與SFTP連接池
    2022-12-12
  • 子線程任務發(fā)生異常時主線程事務回滾示例過程

    子線程任務發(fā)生異常時主線程事務回滾示例過程

    這篇文章主要為大家介紹了子線程任務發(fā)生了異常時主線程事務如何回滾的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • 如何使用BigDecimal實現(xiàn)Java開發(fā)商業(yè)計算

    如何使用BigDecimal實現(xiàn)Java開發(fā)商業(yè)計算

    這篇文章主要介紹了如何使用BigDecimal實現(xiàn)Java開發(fā)商業(yè)計算,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • MyBatis之自查詢使用遞歸實現(xiàn) N級聯(lián)動效果(兩種實現(xiàn)方式)

    MyBatis之自查詢使用遞歸實現(xiàn) N級聯(lián)動效果(兩種實現(xiàn)方式)

    這篇文章主要介紹了MyBatis之自查詢使用遞歸實現(xiàn) N級聯(lián)動效果,本文給大家分享兩種實現(xiàn)方式,需要的的朋友參考下吧
    2017-07-07
  • Spring Boot(五)之跨域、自定義查詢及分頁

    Spring Boot(五)之跨域、自定義查詢及分頁

    這篇文章主要介紹了Spring Boot(五)之跨域、自定義查詢及分頁的的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評論

龙海市| 平凉市| 桐城市| 沅陵县| 禹州市| 霸州市| 彭山县| 鹿邑县| 胶南市| 中宁县| 桃江县| 华宁县| 汽车| 武安市| 绥江县| 射阳县| 仙居县| 卢湾区| 财经| 额敏县| 新乡市| 肥城市| 潮安县| 桂林市| 吉木萨尔县| 兴仁县| 射洪县| 介休市| 麻栗坡县| 北京市| 竹北市| 邵阳市| 枞阳县| 长泰县| 合川市| 南皮县| 正镶白旗| 华宁县| 台南县| 辽中县| 黄骅市|