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.phpgz.com >修改</a>[有权限]<br>
<a href=http://www.phpgz.com >删除</a>[无权限]<br>
<a href=http://www.phpgz.com >查询</a>[有权限]<br>
<hr>
<h3>表单演示[无权限]</h3>
<form actionwww.phpgz.com  method="post" > 姓名:<input type="text" name="n"><br> <input type="submit" value="提交">
</form>
<hr>
<center>www.phpgz.com </center>
</body>

5. 注意:本代码使用了struts框架,并且权限List被我放到了ServletContext中,这种做法是错误的,必须放到Session中才可以。

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67796.html