时间:2021-05-20
下面将以权限的控制为例自定义一个标签:
一、标签类型
复制代码 代码如下:
<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://.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页面导入标签:
<A href="mailto:%@taglib prefix='wxt' uri='/wxt' %">%@taglib prefix="wxt" uri="/wxt" %</A>
运用标签:
<wxt:per uri="${pageContext.request.contextPath }/user/list">
<a href="${pageContext.request.contextPath }/user/list" target="reight">用户管理</a>
</wxt:per>
用户权限包含uri资源的将会输出标签内容。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了javaWeb自定义标签用法。分享给大家供大家参考,具体如下:自定义标签创建自定义标签主要用于移除Jsp页面中的Java代码。移除jsp页面中的j
本文实例讲述了Java自定义标签用法。分享给大家供大家参考,具体如下:简单例子实现一个标签分为两步:(1)继承SimpleTagSupport或TagSuppo
本文实例讲述了jsp中自定义标签用法。分享给大家供大家参考。具体如下:这里简单的写了一个自定义标签,自己定义标签的好处就是在jsp页面中可以使用自己定义的功能,
一、自定义标签入门之无参数自定义标签1.开发自定义标签类当我们在JSP页面使用一个简单的标签时,底层实际上由标签处理类提供支持,从而可以使用简单的标签来封装复杂
Java中自定义异常详解及实例代码下面做了归纳总结,欢迎批评指正自定义异常classChushulingExceptionextendsException{pu