1、tld文件,定义权限标签
<?xml version="1.0" encoding="UTF-8"?>
<!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>cloud</shortname>
<tag>
<name>checkPower</name>
<tagclass>com.zkhg.cloud.common.tld.CheckTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>urlName</name>
<!-- required:用来指定属性是否一定要使用,如果设置为true:则此属性在这个标签中一定被使用如果设置为false则这个属性石可选的 -->
<required>true</required>
<!-- rtexprvalue:设置成true:表示该自定义标签的某属性的值可以直接指定或者通过动态计算指定,即后台传入的值;
设置成false:表示该自定义标签的某属性的值只能直接指定 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>modelName</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
2、web.xml引入自定义标签
<jsp-config>
<taglib>
<taglib-uri>/cloud</taglib-uri>
<taglib-location>/WEB-INF/tld/cloud.tld</taglib-location>
</taglib>
</jsp-config>
3、java代码
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
@SuppressWarnings("serial")
public class CheckTag extends TagSupport {
// 操作url
private String urlName;
// 模块名
private String modelName;
/**
* 页面加载之前起效
*/
public int doStartTag() throws JspException {
// 1、获取页面的模块id,及操作的url
// 2、获取session中的权限信息pageContext.getAttribute("session");
// 3、判断如果没有此权限则不显示操作按钮
System.out.println("模块名:" + modelName + ",,操作url:" + urlName);
// 可以根据权限判断是否显示操作
if (true) {
// 有此权限则显示
return EVAL_PAGE;
}
// 没有权限则不显示
return SKIP_BODY;
}
public String getUrlName() {
return urlName;
}
public void setUrlName(String urlName) {
this.urlName = urlName;
}
public String getModelName() {
return modelName;
}
public void setModelName(String modelName) {
this.modelName = modelName;
}
}
4、jsp测试
①、引入自定义标签
<%@ taglib uri="/cloud" prefix="cloud"%>
②、自定义标签使用,控制按钮是否显示
<cloud:checkPower urlName="/test/file/upload.do" modelName="zz"><input type="submit" value="文件上传"/></cloud:checkPower>