自定义jsp标签实现按钮权限控制
一、了解jsp自定义标签 自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对tag handler的对象的操作,即当servlet执行时Web 容器调用那些操作。 好处:1.JSP标签主要用来显示结果数据,用来沟通表示层和业务逻辑层,把页面美工工作和程序编写分开。 2. 自定义标签方便JSP页面代码的维护,代码重用。二、按钮权限
一、了解jsp自定义标签
自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对tag handler的对象的操作,即当servlet执行时Web 容器调用那些操作。
好处:1.JSP标签主要用来显示结果数据,用来沟通表示层和业务逻辑层,把页面美工工作和程序编写分开。
2. 自定义标签方便JSP页面代码的维护,代码重用。
二、按钮权限控制实例
1、创建处理标签的java类ButtonPermissionTag
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
public class ButtonPermissionTag extends TagSupport {
/**
*
*/
private static final long serialVersionUID = 3995418178864580338L;
private String name;
public ButtonPermissionTag() {
}
@Override
public int doStartTag() throws JspException {
try {
if ("true".equals(name)) {
return EVAL_BODY_INCLUDE;
}
return SKIP_BODY;
} catch (Exception e) {
throw new RuntimeException("数据加载异常",e);
}
}
public void setName(String name) {
this.name = name;
}
}
上边的java类继承了TagSupport, 重写了doStartTag方法,在方法里面实现我们想要的需求效果。
2、创建tld文件
<?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 version="2.0" xmlns="http://Java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>btn</short-name>
<uri>http://test.com</uri>
<tag>
<name>hasPermission</name>
<tag-class>com.tarena.platform.base.tags.ButtonPermissionTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3、在web.xml中配置标签
<jsp-config>
<taglib>
......
</taglib>
<taglib>
......
</taglib>
<taglib>
<taglib-uri>http://test.com</taglib-uri>
<taglib-location>/WEB-INF/common/tag/button.tld</taglib-location>
</taglib>
</jsp-config>
4 、页面引用
先引入自定义标签
<%@taglib prefix="btn" uri="http://test.com" %>
在jsp页面中引用:
<btn:hasPermission name="true">
<button type="button" class="btn btn-primary btn-sm" id="btn_reset">
测试按钮
</button>
</btn:hasPermission>
根据我们自定义的java类可知,当name=true时按钮显示,当name=false时,按钮隐藏。由此我们实现了简单的按钮权限控制。博友们可以根据此例做扩展,实现后台管理系统的权限控制。三、标签中的静态常量
1、EVAL_BODY_INCLUDE:告诉服务器正文的内容,并把这些内容送入输出流
SKIP_BODY:告诉服务器不要处理正文内容
EVAL_PAGE:让服务器继续执行页面
SKIP_PAGE:让服务器不要处理剩余的页面
EVAL_BODY_AGAIN:让服务器继续处理正文内容,只有doAfterBody方法可以返回
EVAL_BODY_BUFFERED:BodyTag接口的字段,在doStartTag()返回
EVAL_BODY_INCLUDE、SKIP_BODY一般由doStartTag()返回,而EVAL_PAPGE、SKIP_PAGE由doEndTag()返回。
2、doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字;
更多推荐
所有评论(0)