热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Java自定义简单标签实例

Java自定义简单标签可以方便的在页面输出信息,并且对于权限的控制,和对于Jsp标签和servlet代码的分离有着很好的作用

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

代码如下:



步骤:
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 list = new ArrayList();
   //获取用户的角色
   Set role = user.getRole();
   for(Role r:role) {
    //获取角色对应的权限
    Set privilege = r.getPrivilege();
    for(Privilege p:privilege) {
     //获取权限对应的资源
     Set 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文件描述标签。
代码如下:


 version="2.0"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
                     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."]]>

 "Struts Tags"
 2.2.3
 s
 /wxt
 
  per
  cn.com.liveuc.privilege.tag.PerssionTag
  scriptless
  
  
   uri
   true
   true
  

 



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

      用户管理

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


推荐阅读
  • Struts2框架构建指南
    本文详细介绍了如何使用Struts2(版本2.3.16.3)构建Web应用,包括必要的依赖库添加、配置文件设置以及简单的示例代码。Struts2是Apache软件基金会下的一个开源框架,用于简化Java Web应用程序的开发。 ... [详细]
  • 本文探讨了一个在Spring项目中常见的问题——当pom.xml文件中引入了servlet依赖但未指定其作用域为provided时导致的应用启动失败。文章详细分析了错误原因,并提供了有效的解决方案。 ... [详细]
  • 近期在研究Java IO流技术时,遇到了一个关于如何正确读取Doc文档而不出现乱码的问题。本文将详细介绍使用Apache POI库处理Doc和Docx文件的具体方法,包括必要的库引入和示例代码。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文探讨了在使用 MyBatis 进行批量数据处理时遇到的参数绑定异常问题,并提供了详细的解决方案。 ... [详细]
  • Maven快照版本管理及更新策略详解
    本文深入探讨了Maven中的快照版本管理和更新策略,解释了快照版本与正式版本的区别,并提供了如何配置快照更新策略的方法,以确保项目依赖始终保持最新。 ... [详细]
  • 如何使用Maven将依赖插件一并打包进JAR文件
    本文详细介绍了在使用Maven构建项目时,如何将所需的依赖插件一同打包进最终的JAR文件中,以避免手动部署依赖库的麻烦。 ... [详细]
  • 本教程旨在指导开发者如何在Android应用中通过ViewPager组件实现图片轮播功能,适用于初学者和有一定经验的开发者,帮助提升应用的视觉吸引力。 ... [详细]
  • 本文详细介绍了Spring AOP注解的基本概念及其实现方式,并通过实例演示了如何在项目中使用这些注解进行面向切面的编程。旨在帮助开发者更好地理解和运用Spring AOP功能。 ... [详细]
  • 本文详细介绍了跨站脚本攻击(XSS)的基本概念、工作原理,并通过实际案例演示如何构建XSS漏洞的测试环境,以及探讨了XSS攻击的不同形式和防御策略。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文详细介绍了Apache Spark 2.2.0版本中集群模式的基本概念和工作流程,包括如何通过集群管理器分配资源,以及Spark应用程序在集群中的运行机制。链接:http://spark.apache.org/docs/2.2.0/cluster-overview.html ... [详细]
  • 本文介绍了如何通过安装和配置php_uploadprogress扩展来实现文件上传时的进度条显示功能。通过一个简单的示例,详细解释了从安装扩展到编写具体代码的全过程。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 本文详细探讨了在Windows 98环境下安装Apache 1.3.9、JServ、GNUJSP 1.0、JDK 1.2.2及JSDK 2.0后遇到的中文显示问题,并提供了多种有效的解决方案。 ... [详细]
author-avatar
翁向军_943
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有