您的位置:首页 > Web前端 > JavaScript

JSP自定义标签实现按钮级权限控制

2014-09-18 13:50 555 查看
使用jsp自定义标签,来实现根据当前用户角色显示不显示操作按钮。本文没有说明自定义标签的使用方式,只是概述讲解使用自定义标签来处理按钮控制大体思路。

部分实现核心代码及其流程如下:

1使用按钮的jsp文件:

首先引入自定义标签文件

其次获取session中存放的用户信息用来传到自定义标签处理类,判断是否拥有权限操作。

<%@ taglib prefix="mytag" uri="/http://xiami.****.com.cn/kali/core"%>

<%

HttpSession Session = request.getSession();

String user = (String)Session.getAttribute("UserName");

%>

按钮标签

<mytag:buttonURL user="<%=user%>" url="addURLUI.do" jsmethod="javascript:addURL();" image="images/sys/add.png" value="添加URL"/>

2自定义标签模板文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE taglib

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

"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>

<tlib-version>1.0</tlib-version>

<jsp-version>1.2</jsp-version>

<short-name>mytag</short-name>

<description><![CDATA[Custom tag library for this application]]></description>

<tag>

<name>buttonURL</name>

<tag-class>com.*.mytag.ButtonUrlTag</tag-class>

<body-content>JSP</body-content>

<attribute>

<name>user</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

<attribute>

<name>url</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

<attribute>

<name>jsmethod</name>

<required>false</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

<attribute>

<name>image</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

<attribute>

<name>alt</name>

<required>false</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

<attribute>

<name>value</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

</taglib>

3web.xml配置

<!-- 自定义标签 -->

<jsp-config>

<taglib>

<taglib-uri>/http://xiami.****.com.cn/kali/core</taglib-uri>

<taglib-location>/WEB-INF/tlds/kalitags.tld</taglib-location>

</taglib>

</jsp-config>

<!-- 自定义标签结束 -->

4自定义 标签处理类

public class ButtonUrlTag extends TagSupport {

private static final long serialVersionUID = -7811902545513255473L;

//标签属性用户名

private String user = null;

//标签属性操作url

private String url = null;

//标签属性 js方法

private String jsmethod = null;

//标签属性image 按钮图片

private String image = null;

//标签属性 alt 提示

private String alt = null;

//标签属性操作value 按钮文本

private String value = null;

/* 标签初始方法 */

public int doStartTag() throws JspTagException{

return super.EVAL_BODY_INCLUDE;

}

/* 标签结束方法 */

public int doEndTag() throws JspTagException{

Boolean b = false;

List list = new ArrayList();

Permission p = new Permission();

JDBCHibernate jdbca = new JDBCHibernate();

try {

list = jdbca.getHaveURLByUsernameList(user);

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

for(int i = 0;i < list.size(); i++){

p = (Permission) list.get(i);

if(p.getUrl().trim().equals(url.trim())){

b = true;

//如果jsmethod属性不为null 则把超链接href改为调用js

if(jsmethod!=null){

url = jsmethod;

}

}

}

JspWriter out = pageContext.getOut();

if(b){

try {

//有权限 显示操作按钮

out.println("<a href='" +url+ "' class='regular'><img src='" + image + "' alt='" + alt +"' />" + value + "</a>");

} catch (IOException e) {

e.printStackTrace();

}

}

return super.SKIP_BODY;

}

/* 释放资源 */

public void release(){

super.release();

}

public String getUser() {

return user;

}

public void setUser(String user) {

this.user = user;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getImage() {

return image;

}

public void setImage(String image) {

this.image = image;

}

public String getAlt() {

return alt;

}

public void setAlt(String alt) {

this.alt = alt;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public String getJsmethod() {

return jsmethod;

}

public void setJsmethod(String jsmethod) {

this.jsmethod = jsmethod;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: