我是
靠谱客的博主
忧虑彩虹,最近开发中收集的这篇文章主要介绍
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();
- 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;
- }
- }
在WEB-INF下新建文件夹tlds,然后创建文件shiros.tld
- <?xml version="1.0" encoding="UTF-8" ?>
-
- <taglib 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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
- version="2.0">
-
- <description>p2p permission taglib</description>
- <display-name>permission taglib</display-name>
- <tlib-version>1.0</tlib-version>
- <short-name>p2p_admin</short-name>
- <!-- 在taglib.jsp文件中加上如下内容,<%@ taglib uri="<span style="font-family: Arial, Helvetica, sans-serif;">http://vanfon.p2p.cn</span>"
- prefix="p2p"%> uri中的值必须与标签<uri></uri>中的值一致,prefix名称随便取,取完后JSP那端的前缀名必须与这一致。 -->
- <uri>http://vanfon.p2p.cn/</uri>
-
- <tag>
- <description>权限校验标签,有权限就显示标签体的内容,否则不显示</description>
- <name>permission</name>
- <tag-class>com.vanfon.p2p.admin.core.PermissionTag</tag-class>
- <body-content>JSP</body-content>
- </tag>
- </taglib>
web,xml中加入:
- <jsp-config>
- <taglib>
- <taglib-uri>http://vanfon.p2p.cn/</taglib-uri>
- <taglib-location>/WEB-INF/tlds/shiros.tld</taglib-location>
- </taglib>
- </jsp-config>
最后在jsp中引入标签:
- <%@ taglib prefix="p2p" uri="http://vanfon.p2p.cn/" %>
使用标签:
- <p2p:permission><a href="#" class="easyui-linkbutton" iconCls="icon-add" οnclick="openCreateDialog();">新增</a></p2p:permission>
- <p2p:permission ><a href="#" class="easyui-linkbutton" iconCls="icon-edit" οnclick="openUpdateDialog();">编辑</a></p2p:permission>
- <p2p:permission ><a href="#" class="easyui-linkbutton" iconCls="icon-remove" οnclick="del();">删除</a></p2p:permission>
然后就ok了,以管理员的身份(ifsuper=1)登录系统表示可见,以普通用户的身份(ifsuper!=1)登录系统按钮将不可见,以上就是jsp tag自定义标签最简单的用法,仅仅只做了是否是管理员的判断,其实完整的应该是对所有用户进行一个通用的控制。
扩展
比如:
PermissionTag.java
- public class PermissionTag extends TagSupport {
-
- private String module;
-
- 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();
- 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;
- }
- }
-
- return result? EVAL_BODY_INCLUDE : SKIP_BODY;
- }
-
- }
shiros.tld
- <?xml version="1.0" encoding="UTF-8" ?>
-
- <taglib 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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
- version="2.0">
-
- <description>p2p permission taglib</description>
- <display-name>permission taglib</display-name>
- <tlib-version>1.0</tlib-version>
- <short-name>p2p</short-name>
- <!-- 在taglib.jsp文件中加上如下内容,<%@ taglib uri="<span style="font-family: Arial, Helvetica, sans-serif;">http://vanfon.p2p.cn/</span>"
- prefix="p2p"%> uri中的值必须与标签<uri></uri>中的值一致,prefix名称随便取,取完后JSP那端的前缀名必须与这一致。 -->
- <uri>http://vanfon.p2p.cn/</uri>
-
- <tag>
- <description>权限校验标签,有权限就显示标签体的内容,否则不显示</description>
- <name>permission</name>
- <tag-class>com.vanfon.p2p.admin.core.PermissionTag</tag-class>
- <body-content>JSP</body-content>
- <attribute>
- <description></description>
- <name>module</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- </attribute>
- <attribute>
- <description></description>
- <name>privilege</name>
- <required>true</required>
- <rtexprvalue>false</rtexprvalue>
- </attribute>
- </tag>
- </taglib>
最后
以上就是忧虑彩虹为你收集整理的jsp tag 自定义标签实现的全部内容,希望文章能够帮你解决jsp tag 自定义标签实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复