Im Folgenden wird die Berechtigungssteuerung als Beispiel für die Anpassung eines Tags verwendet:
1. Tag-Typ
<wxt:per uri="${pageContext.request.contextPath }/privilege/list"></wxt:per>
Schritte:
1. Passen Sie eine Klasse PerssionTag an, die SimpleTagSupport erbt (benutzerdefiniertes Tag). Im Allgemeinen wird diese Klasse vererbt)
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. Erstellen Sie ein TLD-Dateibeschreibungs-Tag unter WEB-INF.
<?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>
3. Tags verwenden
Tags in JSP-Seiten importieren:
a9299afefc7ab73b257370b90aea1a05
Tag verwenden:
bcad09b850150c1d8a3566fa403f0b07
3e8796c7bf6ed5690f93459d174b3862Benutzerverwaltung5db79b134e9f6b82c0b36e0489ee08ed
e2f21268e536a2e312274b8a07586959
Benutzerberechtigungen, die URI-Ressourcen umfassen, geben den Tag-Inhalt aus.
Weitere Artikel zu Beispielen für benutzerdefinierte einfache Java-Tags finden Sie auf der chinesischen PHP-Website!