jsp tag 自定义标签实现按钮的显示

前些天在一个项目中做了一个最基本的权限管理(标准的权限结构,用户-角色-菜单),后来需要精确地控制到按钮就想到了使用自定义标签(jsp tag)来处理按钮的显示与隐藏。

下面是我参考网上的资料自己写的一个自定义标签的demo:

首先自定义标签类:

package com.vanfon.p2p.admin.core;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

import com.vanfon.p2p.entity.Admin;

public class PermissionTag extends TagSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4592227792811389132L;


	@Override
	public int doStartTag() throws JspException {
		boolean result = false;
		HttpServletRequest request = (HttpServletRequest) this.pageContext
				.getRequest();// 通过成员变量获取HttpServletRequest对象
		Admin admin = (Admin) request.getSession().getAttribute("admin");//获取登录到系统的用户
		if(admin!=null&&"1".equals(String.valueOf(admin.getIfsuper()))){
			result = true;
		}
		return result? EVAL_BODY_INCLUDE : SKIP_BODY;//EVAL_BODY_INCLUDE代表执行自定义标签中的内容,SKIP_BODY代表不执行自定义标签中的内容。
	}
}


在WEB-INF下新建文件夹tlds,然后创建文件shiros.tld





	p2p permission taglib
	permission taglib
	1.0
	p2p_admin
	
	http://vanfon.p2p.cn/

	
		权限校验标签,有权限就显示标签体的内容,否则不显示
		permission
		com.vanfon.p2p.admin.core.PermissionTag
		JSP
	


web,xml中加入:

     
            
                http://vanfon.p2p.cn/
                /WEB-INF/tlds/shiros.tld 
                
  


最后在jsp中引入标签:

<%@ taglib prefix="p2p" uri="http://vanfon.p2p.cn/" %>

使用标签:

新增
			编辑
			删除



然后就ok了,以管理员的身份(ifsuper=1)登录系统表示可见,以普通用户的身份(ifsuper!=1)登录系统按钮将不可见,以上就是jsp tag自定义标签最简单的用法,仅仅只做了是否是管理员的判断,其实完整的应该是对所有用户进行一个通用的控制。


扩展

比如:

PermissionTag.java


public class PermissionTag extends TagSupport {
 
private String module;//属性名必须与JSP自定义标签的属性名一样
 
private String privilege;
 
public String getModule() {
return module;
}
 
public void setModule(String module) {
this.module = module;
}
 
public String getPrivilege() {
return privilege;
}
 
public void setPrivilege(String privilege) {
this.privilege = privilege;
}
 
@Override
public int doStartTag() throws JspException {
boolean result = false;
Employee employee = this.pageContext.getRequest();//通过成员变量获取HttpServletRequest对象。
WebUtil.getEmployee((HttpServletRequest)this.pageContext.getRequest());//获取登录到系统的员工
SystemPrivilege methodPrivilege = new SystemPrivilege(new SystemPrivilegePK(this.getModule(), this.getPrivilege()));
for(PrivilegeGroup group : employee.getGroups()) {
if(group.getPrivileges().contains(methodPrivilege)) {
result = true;
break;
}
}
//EVAL_BODY_INCLUDE代表执行自定义标签中的内容,SKIP_BODY代表不执行自定义标签中的内容。
return result? EVAL_BODY_INCLUDE : SKIP_BODY;
}
 
}


shiros.tld





	p2p permission taglib
	permission taglib
	1.0
	p2p
	
	http://vanfon.p2p.cn/

	
		权限校验标签,有权限就显示标签体的内容,否则不显示
		permission
		com.vanfon.p2p.admin.core.PermissionTag
		JSP
		
			
			module
			true
			false
		
		
			
			privilege
			true
			false
		
	


jsp中用法:

新增


参考:http://blog.sina.com.cn/s/blog_a2de16f401016cpc.html


你可能感兴趣的:(java,java,jsp,tag,自定义标签,控制按钮)