源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java自定义简单标签实例

  • 时间:2021-04-09 13:51 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java自定义简单标签实例
下面将以权限的控制为例自定义一个标签: [b]一、标签类型 [/b]
[u]复制代码[/u] 代码如下:
<wxt:per uri="${pageContext.request.contextPath }/privilege/list"></wxt:per>
[b]步骤: [/b]1.自定义一个类PerssionTag 继承SimpleTagSupport(自定义标签一般都会继承这个类)
[u]复制代码[/u] 代码如下:
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); //有权限输出标签体内容     }    }   }  } }
[b]2.在WEB-INF下创建tld文件描述标签。 [/b]
[u]复制代码[/u] 代码如下:
<?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>
[b]3.运用标签 [/b]在Jsp页面导入标签: <A href="mailto:%@taglib prefix='wxt' uri='/wxt' %">%@taglib prefix="wxt" uri="/wxt" %</A> [b]运用标签: [/b]<wxt:per uri="${pageContext.request.contextPath }/user/list">       <a href="${pageContext.request.contextPath }/user/list" target="reight">用户管理</a> </wxt:per> 用户权限包含uri资源的将会输出标签内容。 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部