首页 > Java > java教程 > 正文

Java自定义简单标签实例

高洛峰
发布: 2017-01-22 16:43:57
原创
1991人浏览过

下面将以权限的控制为例自定义一个标签:
一、标签类型

<wxt:per uri="${pageContext.request.contextPath }/privilege/list"></wxt:per>
登录后复制

步骤:
1.自定义一个类PerssionTag 继承SimpleTagSupport(自定义标签一般都会继承这个类)

package cn.com.liveuc.privilege.tag;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import cn.com.liveuc.privilege.model.Privilege;
import cn.com.liveuc.privilege.model.Resource;
import cn.com.liveuc.privilege.model.Role;
import cn.com.liveuc.privilege.model.User;
/**
 * 
 * @说明   自定义标签
 */
public class PerssionTag extends SimpleTagSupport {

 //自定义标签属性,用于标签传入参数
 private String uri;

 //接收标签传入的参数
 public void setUri(String uri) {
  this.uri = uri;
 }
 @Override
 public void doTag() throws JspException, IOException {
  //获取用户登陆后保存的Session
  PageContext page = (PageContext) this.getJspContext();
  User user = (User) page.getSession().getAttribute("login");
  //如果用户登陆
  if(user != null) {
   //用户登陆判断用户权限
   List<String> list = new ArrayList<String>();
   //获取用户的角色
   Set<Role> role = user.getRole();
   for(Role r:role) {
    //获取角色对应的权限
    Set<Privilege> privilege = r.getPrivilege();
    for(Privilege p:privilege) {
     //获取权限对应的资源
     Set<Resource> res = p.getResource();
     for(Resource re:res) {
      list.add(re.getUri());
     }
    }
   }
   for(String ur:list) {
    //判断用户的权限
    if(ur.equals(uri)) {
     this.getJspBody().invoke(null); //有权限输出标签体内容
    }
   }
  }
 }
}
登录后复制

2.在WEB-INF下创建tld文件描述标签。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 version="2.0"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
 <description><![CDATA["To make it easier to access dynamic data;
                    the Apache Struts framework includes a library of custom tags.
                    The tags interact with the framework's validation and internationalization features;
                    to ensure that input is correct and output is localized.
                    The Struts Tags can be used with JSP FreeMarker or Velocity."]]></description>
 <display-name>"Struts Tags"</display-name>
 <tlib-version>2.2.3</tlib-version>
 <short-name>s</short-name>
 <uri>/wxt</uri>
 <tag>
  <name>per</name><!-- 标签名 -->
  <tag-class>cn.com.liveuc.privilege.tag.PerssionTag</tag-class>
  <body-content>scriptless</body-content>
  <!-- 标签属性 -->
  <attribute>
   <name>uri</name><!-- 属性名称 -->
   <required>true</required><!-- 是否必须 -->
   <rtexprvalue>true</rtexprvalue><!-- 是否为动态标签 -->
  </attribute>
 </tag>
</taglib>
登录后复制

3.运用标签
在Jsp页面导入标签:
%@taglib prefix="wxt" uri="/wxt" %
运用标签:

      用户管理

用户权限包含uri资源的将会输出标签内容。  

e新时代企业网站管理系统6.0  ACC版
e新时代企业网站管理系统6.0 ACC版

系统共有:常规管理,公告管理,新闻管理,产品管理,采购订单管理,留言反馈管理,短信管理,用户管理,管理员管理,在线邮件管理,系统模板管理,图品缩略图及水印管理,Flash幻灯片管理,统计调查管理,系统数据调用管理,自定义扩展管理,语言标签库管理。18个主要功能模块组成。5月10号更新:1、全新双语模式设计开发2、多级动态JS菜单,支持在线添加,修改,删除3、新增单页管理模块,如扩展企业简介,联系方

e新时代企业网站管理系统6.0  ACC版 0
查看详情 e新时代企业网站管理系统6.0  ACC版

更多Java自定义简单标签实例相关文章请关注PHP中文网!

立即学习Java免费学习笔记(深入)”;

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号