婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 用定制標簽庫和配置文件實現對JSP頁面元素的訪問控制

用定制標簽庫和配置文件實現對JSP頁面元素的訪問控制

熱門標簽:開封便宜外呼系統報價 怎樣把地圖標注出來 淮南騰訊地圖標注 漯河辦理400電話 黃石智能營銷電銷機器人效果 地圖標注人員兼職 電話機器人的特色和創新 商丘百應電話機器人有沒有效果 騰訊地圖標注商戶改名注冊入駐

       控制客戶端訪問是開發一個基于B/S的架構的系統的開發者必須考慮的問題。JSPSERVLET規范的基于配置文件的安全策略對資源的控制是以文件為單位的,即只可以定義某個視圖全部可以或全部不能被訪問。一個比較復雜的系統往往要要求對視圖的一部分(如JSP頁面里的一個按鈕)提供訪問控制,只允許被某種角色的用戶訪問。如果采用可編程的安全策略,因為對用戶角色和操作的定義在開發時不能定義,而且這種策略加大了程序員的工作量,它可能不是一種好的辦法。

       我采用定制標簽庫和和配置文件來解決這個問題:把要權限控制的JSP頁面元素如BUTTON,作為標簽的內容。為受保護的內容起一個唯一的名稱,把這個名稱作為標簽的一個屬性。某個角色對某個頁面元素或一組頁面元素是否有權限,在XML配置文件中描述。

 

       例如,下面的JSP頁面有“詳細”和“修改”兩個按鈕。

%@ taglib uri="http://mytag" prefix="custTag" %>

html>

head>

title>test/title>

/head>

body >

form name="form1" >

   table width="600" border="0" cellspacing="0" cellpadding="2" >

      tr>

       td>

            custTag:JspSecurity elementName="employeedetail" >

              input type="button" name="detail"  value="詳細" >

            /custTag:JspSecurity>

            custTag:JspSecurity elementName="employeemodify" >

              input type="button" name="modify"  value="修改" >

            /custTag:JspSecurity>

        /td>

      /tr>

/table>

br>

/form>

/body>

 

       下面XML配置文件內容表示對角色為common的用戶,只對名為employeedetail 的頁面元素即“詳細”按鈕有權限,對角色為“admin”的用戶,對名為employeedetail employeemodify的頁面元素即兩個按鈕都有權限。

?xml version="1.0" encoding="GB2312"?>

security>

htmlElement name="employeedetail" >

roleName name="common" />

roleName name="admin" />

/htmlElement>

htmlElement name="employeemodify" >

roleName name="admin" />

/htmlElement>

/security>

 

       定制標簽類JspSecurityTag繼承了BodyTagSupport類。BodyTagSupport有一個變量bodyContent指向起始標志和結束標志之間的內容。JspSecurityTag的私有靜態變量roleList保存從XML文件中取到角色和頁面元素的對應集合,私有變量ElementName對應頁面元素的名稱。當解析該定制標簽時,首先先取到頁面元素的名稱,再取到當前用戶的角色,如果角色有該頁面元素的權限,就顯示標簽正文(即頁面元素),否則不顯示。

 

Pagekage com.presentation.viewhelper.JspSecurityTag;

 

import javax.servlet.jsp.tagext.*;

import javax.servlet.jsp.*;

import java.util.*;

import org.xml.sax.*;

import org.xml.sax.helpers.*;

import org.w3c.dom.*;

import java.io.*;

import javax.xml.parsers.*;

 

public class JspSecurityTag extends BodyTagSupport {

  //保存從XML文件中取到角色和頁面元素的對應集合

  private static ArrayList roleList;

  //頁面元素的名稱

  private String elementName;

 

  public void setElementName(String str)

  {

    this.elementName=str;

  }

 

  public int doAfterBody() throws JspException{

    if(roleList==null)

    {

      roleList=getList();

    }

    try{

        //如果認證通過就顯示標簽正文,否則跳過標簽正文,就這么簡單

        if(isAuthentificated(elementName))

        {

          if(bodyContent != null){

            JspWriter out=bodyContent.getEnclosingWriter();

            bodyContent.writeOut(out);

          }else

          {

          }

        }

    }catch(Exception e){

      throw new JspException();

    }

    return SKIP_BODY;

  }

  //XML配置文件中取到角色和頁面元素的對應,保存到靜態的ArrayList

  private ArrayList getList()

  {

    DocumentBuilderFactory dbf =

        DocumentBuilderFactory.newInstance();

    DocumentBuilder db = null;

    Document doc=null;

    NodeList childlist = null;

    String elementName;

    String roleName;

    int index;

    ArrayList theList = new ArrayList();

 

    try{

      db = dbf.newDocumentBuilder();

    }catch(Exception e)

    {

      e.printStackTrace();

    }

    try{

      doc = db.parse(new File("security.xml"));

    }catch(Exception e)

    {

      e.printStackTrace();

    }

    //讀取頁面元素列表

    NodeList elementList = doc.getElementsByTagName("htmlElement");

    for(int i=0;ielementList.getLength();i++)

    {

      Element name = ((Element)elementList.item(i));

      //頁面元素的名稱

      elementName = name.getAttribute("name");

      //該頁面元素對應的有權限的角色的列表

      NodeList rolNodeList = ((NodeList)name.getElementsByTagName("roleName"));

      for(int j=0;jrolNodeList.getLength();j++)

      {

        //有權限的角色的名稱

        //roleName = ((Element)rolNodeList.item(j)).getNodeValue();

        roleName = ((Element)rolNodeList.item(j)).getAttribute("name");

        theList.add(new ElementAndRole(elementName,roleName));

      }

    }

    return theList;

  }

 

  //檢查該角色是否有該頁面元素的權限

  private boolean isAuthentificated(String elementName)

  {

String roleName = "";

//在用戶登陸時把該用戶的角色保存到SESSION中,這里只是直接從SESSION中取用//戶角色。

roleName=this.pageContext.getSession().getAttribute("rolename”);

// roleList包含elementName屬性為elementNameroleName屬性為roleName//ElementAndRole對象,則該角色有該頁面元素的權限

     if(roleList.contains(new ElementAndRole(elementName,roleName)))

          {

               return true;

          }

    }

    return  false;

  }

  //表示角色和頁面元素的對應的關系的內部類

  class ElementAndRole{

    String elementName;

    String roleName;

    public ElementAndRole(String elementName,String roleName)

    {

      this.elementName=elementName;

      this.roleName=roleName;

    }

    public boolean equals(Object obj)

    {

      return(((ElementAndRole)obj).elementName.equals(this.elementName)((ElementAndRole)obj).roleName.equals(this.roleName));

    }

  }

}

在標簽庫能被JSP頁面使用前,要做以下三個步驟

1、  JSP頁面中包括一個taglib元素,確定需要加載到內存的標簽庫。前面的JSP文件的第一行:%@ taglib uri="http://mytag" prefix="custTag" %>做的就是這件事。

2、  在配置文件web.xml中使用taglib元素確定TLD文件的位置。在web.xml中增加:

  taglib>

    taglib-uri>http://mytag/taglib-uri>

    taglib-location>

       /WEB-INF/mytag.tld

    /taglib-location>

  /taglib>

3TLD文件必須使用taglib元素標識每個定制標簽極其屬性。

下面是使用這個標簽庫對應的TLD文件

?xml version="1.0" encoding="ISO-8859-1" ?>

!DOCTYPE taglib

 PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"

 "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

taglib>

  tlibversion>1.0/tlibversion>

  jspversion>1.1/jspversion>

  shortname>myTag/shortname>

  uri/>

  tag>

    name>JspSecurity/name>

    tagclass>com.presentation.viewhelper.JspSecurityTag/tagclass>

    info>

       JspSecurityTag

    /info>

    attribute>

       name>elementName/name>

       required>true/required>

       rtexprvalue>true/rtexprvalue>

    /attribute>

  /tag>

/taglib>

您可能感興趣的文章:
  • jsp自定義標簽用法實例詳解
  • JSP使用自定義標簽防止表單重復提交的方法
  • jsp中自定義標簽用法實例分析
  • JSP自定義分頁標簽TAG全過程
  • jsp自定義標簽之ifelse與遍歷自定義標簽示例
  • JSP自定義標簽獲取用戶IP地址的方法
  • 基于JSP 自定義標簽使用實例介紹
  • JSP自定義標簽Taglib實現過程重點總結
  • jsp 自定義標簽實例
  • JSP 自定義標簽之一 簡單實例
  • jsp 標準標簽庫簡析
  • jsp通過自定義標簽庫實現數據列表顯示的方法

標簽:大興安嶺 馬鞍山 岳陽 拉薩 武威 鄭州 紅河 亳州

巨人網絡通訊聲明:本文標題《用定制標簽庫和配置文件實現對JSP頁面元素的訪問控制》,本文關鍵詞  用,定制,標簽,庫,和,配置文件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《用定制標簽庫和配置文件實現對JSP頁面元素的訪問控制》相關的同類信息!
  • 本頁收集關于用定制標簽庫和配置文件實現對JSP頁面元素的訪問控制的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧洲精品一区二区三区在线观看| 日韩av中文字幕一区二区三区| 成人精品一区二区三区四区| 亚洲国产精品久久人人爱蜜臀 | 亚洲免费观看高清完整版在线| 日韩欧美一区二区三区在线| 欧洲一区二区三区在线| 成人免费视频视频| 高清久久久久久| 国产精品一区二区在线看| 天天做天天摸天天爽国产一区| 亚洲自拍与偷拍| 亚洲视频图片小说| 亚洲精品高清在线观看| 亚洲欧美日韩久久| 亚洲中国最大av网站| 亚洲精品写真福利| 夜夜精品视频一区二区| 亚洲aaa精品| 日韩国产欧美视频| 日韩高清一区在线| 久99久精品视频免费观看| 久久国产麻豆精品| 国产一区二区三区不卡在线观看| 国产综合色在线| 国产精品1024| 久久国产精品一区二区| 国产精品影视网| 国产+成+人+亚洲欧洲自线| 国产一区二区三区不卡在线观看| 激情综合亚洲精品| 成人99免费视频| 色婷婷国产精品久久包臀| 国产成人精品aa毛片| 波多野洁衣一区| 欧洲av一区二区嗯嗯嗯啊| 欧美日韩激情在线| 欧美一级久久久久久久大片| 欧美成va人片在线观看| 国产日本欧美一区二区| av不卡免费在线观看| 国产性天天综合网| 国产精品久久久久婷婷二区次| 亚洲欧美激情小说另类| 亚洲国产日韩a在线播放性色| 中文字幕不卡的av| 国产精品妹子av| 色综合咪咪久久| 日韩欧美中文字幕精品| 日韩欧美在线网站| 久久精品亚洲精品国产欧美kt∨| 国产精品久久久久久户外露出 | 久久国产乱子精品免费女| 国产精品一区免费在线观看| 91天堂素人约啪| 在线不卡免费av| 中文字幕欧美日本乱码一线二线| 亚洲伊人伊色伊影伊综合网| 久久超级碰视频| 中文无字幕一区二区三区| 韩国三级在线一区| 色婷婷国产精品综合在线观看| 欧美久久婷婷综合色| 精品黑人一区二区三区久久| 亚洲综合色在线| 91色porny| 一区二区三区小说| 懂色av中文一区二区三区| 国产丝袜在线精品| 国产精品自在在线| 在线亚洲一区二区| 精品免费一区二区三区| 亚洲精品欧美激情| 国产高清不卡一区| 欧美一级片在线观看| 亚洲黄色av一区| 成人中文字幕在线| 欧美sm极限捆绑bd| 婷婷丁香激情综合| 91久久免费观看| 国产欧美日产一区| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲精品视频自拍| 国产98色在线|日韩| 日韩视频在线观看一区二区| 亚洲综合色视频| 色综合久久综合| 成人欧美一区二区三区1314| 国产激情一区二区三区桃花岛亚洲| 91精品国产91久久久久久最新毛片 | 91免费国产在线观看| 国产日韩欧美精品电影三级在线| 久久精品国产99国产精品| 欧美在线观看视频一区二区三区 | 欧美精品一区二区三区四区| 成人av网站在线| 秋霞午夜鲁丝一区二区老狼| 精品久久人人做人人爱| 欧美国产1区2区| 久久精品国产亚洲5555| 欧美色欧美亚洲另类二区| 中文字幕精品在线不卡| 亚洲欧美一区二区三区孕妇| 欧美国产精品久久| 欧洲视频一区二区| 久久电影国产免费久久电影| 中文字幕一区二区三区不卡| 欧美日韩国产中文| 成人免费视频视频在线观看免费| 蜜臂av日日欢夜夜爽一区| 中文字幕在线不卡视频| 日韩一级片网站| 色综合久久久久综合99| 国产一区二区三区在线观看精品| 亚洲综合在线观看视频| 久久夜色精品国产欧美乱极品| 在线一区二区观看| 成人国产一区二区三区精品| 免费在线视频一区| 亚洲男人的天堂在线观看| 久久亚洲精品小早川怜子| 欧美性一二三区| www.日韩在线| 高清在线成人网| 美女网站一区二区| 亚洲国产你懂的| 亚洲人成亚洲人成在线观看图片 | 国产精品久久久久久久午夜片| 欧美一区二区三区的| 欧美午夜电影在线播放| 99re视频这里只有精品| 国产成人在线视频播放| 激情伊人五月天久久综合| 天堂av在线一区| 亚洲精品va在线观看| 国产精品动漫网站| 久久久青草青青国产亚洲免观| 在线不卡a资源高清| 欧美亚洲综合一区| 欧美亚洲综合网| 91久久精品午夜一区二区| caoporn国产精品| 不卡电影一区二区三区| 国产91综合网| 成人精品电影在线观看| 国产suv一区二区三区88区| 国产精品一区二区久久精品爱涩| 久久不见久久见中文字幕免费| 免费精品视频最新在线| 日韩 欧美一区二区三区| 首页国产丝袜综合| 日本欧美一区二区三区| 蜜桃精品在线观看| 美女一区二区久久| 狠狠色狠狠色综合| 国产成人综合视频| 成人蜜臀av电影| 99久久精品久久久久久清纯| 99久久国产综合色|国产精品| 99精品国产一区二区三区不卡| 99精品欧美一区二区三区综合在线| 91伊人久久大香线蕉| 91福利资源站| 91精品综合久久久久久| 日韩视频免费观看高清完整版| 精品999在线播放| 国产精品久久久久久久久搜平片| 自拍偷拍国产亚洲| 亚洲一区二区精品视频| 蜜桃久久久久久| 国产91精品一区二区| 91美女片黄在线| 3d成人h动漫网站入口| 精品国产精品网麻豆系列| 国产视频视频一区| 亚洲日本青草视频在线怡红院| 亚洲国产乱码最新视频| 久久国产精品99久久人人澡| 成人免费av在线| 在线电影欧美成精品| 欧美激情一区二区三区不卡| 亚洲精选视频免费看| 日韩电影在线看| 波多野结衣亚洲| 制服丝袜成人动漫| 欧美极品美女视频| 亚洲一区日韩精品中文字幕| 久久99国产精品久久99果冻传媒| 不卡的av电影在线观看| 在线电影欧美成精品| 国产一区二区伦理| 欧美在线观看视频一区二区三区 | 日韩av中文在线观看| 国产成人亚洲综合a∨婷婷| 欧美性猛交xxxx乱大交退制版| 日韩三级视频中文字幕| 亚洲欧美日韩国产综合在线| 久久不见久久见免费视频1| 91免费看`日韩一区二区| 不卡av电影在线播放|