DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> Ajax實現權限控制源代碼
Ajax實現權限控制源代碼
編輯:AJAX詳解     

AJax實現權限控制源代碼(Javaweb.cc整理發表)

1.登錄成功後,從數據庫中讀取出該用戶所對應的功能ID,為了更方便地控制用戶的權限,功能表只有兩個字段,即ID和功能名稱,並且該表是不容許用戶操作的,只可以有查詢的功能,不提供添加、修改和刪除功能。將用戶的功能ID讀取出來後,保存到List中,說明性代碼如下:

List list = new ArrayList();
list.add(2);
list.add(4);
list.add(5);
//實際應用中,應該是循環添加到****
HttpSession session = request.getSession();//將List保存到Session
session.setAttribute("roleList", list);2.寫一個Servlet,用於接收從客戶端傳送過來的功能ID,然後將該ID與List中的數字進行逐個匹配,如果匹配成功,說明有該權限,否則沒有該操作權限。說明性代碼如下:

// 得到權限****
List<Integer> list = (List) request.getSession()
.getAttribute("roleList");
int rid = Integer.parseInt(request.getParameter("rid"));
boolean f = false;
for (Integer i : list) {
if (i == rid) {
f = true;
break;
}
}
//為傳回XML數據做准備
response.setContentType("text/XML;charset=utf-8");
//以下禁止緩存
response.setHeader("pragma", "no-cache");
response.setHeader("cache-control", "no-cache");
response.setDateHeader("expires", 0);
//如果是權限,返回<roles><role>true</role></roles>否則返回<roles><role>false</role></roles>
PrintWriter out = response.getWriter();
StringBuffer sb = new StringBuffer();
sb.append("<roles>").append("<role>")
.append( f ? "1" : "0").append("</role>")
.append("</roles>");
out.print(sb.toString());3.最重要的是AJax的編寫,但其實並不難,主要是要搞清楚邏輯,具體解釋在注釋中給出,代碼如下:

var http_request;
var b = true;
function doget(handleName, url){
http_request = new ActiveXObject("Microsoft.XMLHTTP");
http_request.onreadystatechange = eval(handleName);
//第三個參數要用false,即同步執行,不能異步執行,否則會出邏輯錯誤
http_request.open("get", url, false);
http_request.setRequestHeader("Cache-Control", "no-cache");
http_request.send(null);
}
function role(funid){
doget("handle", "role.do?rid=" + funid);
if(!b){
alert("對不起,您沒有該權限,如果有問題請與管理員聯系!謝謝!");
}
return b;
}
function handle(){
if(http_request.readyState == 4){
if(http_request.status == 200){
var xml = http_request.responseXML;
//alert(xml.XML);
var list = XML.selectNodes("roles/role");
var v = list.item(0).childNodes(0).nodeValue;
if(v == "1") b = true;
else b = false;
}else{
alert("頁面請求出錯");
}
}
}4.頁面訪問代碼如下:

<body>
<h1>權限演示(控制到功能,使用AJax+XML)</h1>
<h3>超鏈接演示</h3>
<a href=http://www.Javaweb.cc >修改</a>[有權限]<br>
<a href=http://www.9iyyzm.com >刪除</a>[無權限]<br>
<a href=http://www.linkzj.cn >查詢</a>[有權限]<br>
<hr>
<h3>表單演示[無權限]</h3>
<form action=http://www.mengdns.com method="post" > 姓名:<input type="text" name="n"><br> <input type="submit" value="提交">
</form>
<hr>
<center>版權所有:JAVA中文網:http://www.Javaweb.cc/</center>
</body>

5. 注意:本代碼使用了struts框架,並且權限List被我放到了ServletContext中,這種做法是錯誤的,必須放到Session中才可以。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved