java

位置:IT落伍者 >> java >> 浏览文章

Java自定义简单标签实例


发布日期:2020年07月16日
 
Java自定义简单标签实例
Java自定义简单标签可以方便的在页面输出信息并且对于权限的控制和对于Jsp标签和servlet代码的分离有着很好的作用

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

复制代码 代码如下:
<wxt:per uri="${pageContextrequestcontextPath }/privilege/list"></wxt:per>


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

复制代码 代码如下:
package cncomliveucprivilegetag;
import javaioIOException;
import javautilArrayList;
import javautilList;
import javautilSet;
import javaxservletjspJspException;
import javaxservletjspPageContext;
import javaxservletjsptagextSimpleTagSupport;
import cncomliveucprivilegemodelPrivilege;
import cncomliveucprivilegemodelResource;
import cncomliveucprivilegemodelRole;
import cncomliveucprivilegemodelUser;
/**
*
* @说明 自定义标签
*/
public class PerssionTag extends SimpleTagSupport {

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

//接收标签传入的参数
public void setUri(String uri) {
thisuri = uri;
}
@Override
public void doTag() throws JspException IOException {
//获取用户登陆后保存的Session
PageContext page = (PageContext) thisgetJspContext();
User user = (User) pagegetSession()getAttribute("login");
//如果用户登陆
if(user != null) {
//用户登陆判断用户权限
List<String> list = new ArrayList<String>();
//获取用户的角色
Set<Role> role = usergetRole();
for(Role r:role) {
//获取角色对应的权限
Set<Privilege> privilege = rgetPrivilege();
for(Privilege p:privilege) {
//获取权限对应的资源
Set<Resource> res = pgetResource();
for(Resource re:res) {
listadd(regetUri());
}
}
}
for(String ur:list) {
//判断用户的权限
if(urequals(uri)) {
thisgetJspBody()invoke(null); //有权限输出标签体内容
}
}
}
}
}


在WEBINF下创建tld文件描述标签

复制代码 代码如下:
<?xml version="" encoding="UTF" standalone="no"?>
<taglib xmlns=":xsi="
version=""
xsi:schemaLocation="://javasuncom/xml/ns/jee/webjsptaglibrary__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 frameworks 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>
<displayname>"Struts Tags"</displayname>
<tlibversion></tlibversion>
<shortname>s</shortname>
<uri>/wxt</uri>
<tag>
<name>per</name><! 标签名 >
<tagclass>cncomliveucprivilegetagPerssionTag</tagclass>
<bodycontent>scriptless</bodycontent>
<! 标签属性 >
<attribute>
<name>uri</name><! 属性名称 >
<required>true</required><! 是否必须 >
<rtexprvalue>true</rtexprvalue><! 是否为动态标签 >
</attribute>
</tag>
</taglib>


运用标签
在Jsp页面导入标签
<A href="mailto:%@taglib prefix=wxt uri=/wxt %">%@taglib prefix="wxt" uri="/wxt" %</A>
运用标签
<wxt:per uri="${pageContextrequestcontextPath }/user/list">
<a href="${pageContextrequestcontextPath }/user/list" target="reight">用户管理</a>
</wxt:per>
用户权限包含uri资源的将会输出标签内容

               

上一篇:Java 获取指定日期的实现方法总结

下一篇:Java中overload和override的区别