다음은 태그를 사용자 정의하기 위한 권한 제어를 예로 들어 보겠습니다.
1. 태그 유형
<wxt:per uri="${pageContext.request.contextPath }/privilege/list"></wxt:per>
단계:
1. SimpleTagSupport를 상속하는 PerssionTag 클래스를 사용자 정의합니다(사용자 정의 태그는 일반적으로 상속됨). 이 클래스)
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://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. 태그 사용
Jsp 페이지에서 태그 가져오기:
% @taglib prefix="wxt" uri="/wxt" %
태그 사용:
사용자 uri 리소스를 포함하는 권한은 태그 콘텐츠를 출력합니다.
Java 사용자 정의 단순 태그 예제와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!