- 相关推荐
Java自定义简单标签实例
引导语:当jsp的内置标签和jstl标签库内的标签都满足不了需求,这时候就需要开发者自定义标签。以下是百分网小编分享给大家的Java自定义简单标签实例,欢迎阅读!
下面将以权限的控制为例自定义一个标签:
一、标签类型
步骤:
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资源的将会输出标签内容。
【Java自定义简单标签实例】相关文章:
java调用c函数的实例09-16
Java自定义范型的应用技巧10-16
Java队列类编写实例09-05
java读取解析xml文件实例08-05
Java中的多态用法实例分析10-23
java中通用的线程池实例代码08-27
Java 异步回调机制实例解析08-22
java多线程同步块实例讲解素材08-28
有关Java开发中常用到For循环的实例05-31