-
Spring 커스텀 태그 활용JAVA 2020. 5. 12. 10:58반응형
간단한 자바 소스들의 경우 모듈화하여 태그라이브러리를 지정하면 효율적이고 수정이 용이하다.
권한체크의 태그라이브러리 활용 예제
- 태그 정의
package com.hailey.security.model; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyTagSupport; import org.springframework.security.core.context.SecurityContextHolder; /** * 권한체크용 태그 * @author hailey * */ public class AuthorityTag extends BodyTagSupport { private static final long serialVersionUID = 1L; private String prgmId; private String authNm; public String getPrgmId() { return prgmId; } public void setPrgmId(String prgmId) { this.prgmId = prgmId; } public String getAuthNm() { return authNm; } public void setAuthNm(String authNm) { this.authNm = authNm; } @SuppressWarnings("unchecked") @Override public int doStartTag() throws JspException { boolean hasAuth = false; // TODO 권한체크 로직 if(hasAuth) { return EVAL_BODY_INCLUDE; } return SKIP_BODY; } }- 권한 정보 매핑용 ENUM
package com.hailey.security.model.domain; /** * DB 매핑을 위한 enum * UserProgram의 url별 접근 권한 체크용으로 사용한다. * @author hailey * */ public enum Authority { SELECT("01", "SELECT") , UPDATE("02", "UPDATE") , CREATE("03", "CREATE") , DELETE("04", "DELETE") , UPLOAD("05", "UPLOAD") , APPROVAL("06", "APPROVAL"); private String name; private String authDvCd; Authority(String authDvCd, String name) { this.authDvCd = authDvCd; this.name = name; } public String getAuthDvCd() { return authDvCd; } public void setAuthDvCd(String authDvCd) { this.authDvCd = authDvCd; } public static final Authority getAuthority(String authDvCd) { Authority[] auths = Authority.values(); for(Authority auth : auths) { if(auth.getAuthDvCd().equalsIgnoreCase(authDvCd)) { return auth; } } return null; } public static final Authority getAuthorityByName(String name) { return Authority.valueOf(name.toUpperCase()); } @Override public String toString() { return this.name; } }- 태그라이브러리 정의
authority.tld
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>authority</shortname> <info>tag library</info> <tag> <name>authority</name> <!-- 커스텀 태그의 이름 --> <tagclass>com.hailey.security.model.AuthorityTag</tagclass><!-- 태그 핸들러 클래스 --> <bodycontent>JSP</bodycontent> <!-- 바디 부분의 컨텐츠 타입 기술. 없으면 empty로 입력 --> <attribute> <!-- 태그의 속성 기능을 부여 --> <name>prgmId</name> <!-- 속성명 --> <required>true</required> <!-- 필수 입력 여부 true : 필수 --> <rtexprvalue>false</rtexprvalue> <!-- 표현식(<%= %>) 사용 여부 --> </attribute> <attribute> <name>authNm</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> </taglib>web.xml에 태그라이브러리 정보 추가
<jsp-config> <taglib> <taglib-uri>authority</taglib-uri> <taglib-location>/WEB-INF/taglib/authority.tld</taglib-location> </taglib> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <trim-directive-whitespaces>true</trim-directive-whitespaces> </jsp-property-group> </jsp-config>- 화면
PGM01.jsp
<%@ taglib uri="authority" prefix="auth"%> <script type="text/javascript"> var authAdd = false; <auth:authority prgmId="PGM01" authNm="CREATE"> authAdd = true; </auth:authority> </script>반응형'JAVA' 카테고리의 다른 글
이클립스 속도 개선 eclipse.ini / Preference (0) 2021.01.08 Spring 다국어 적용하기 (0) 2020.05.27 Spring DAO DTO 사용하기 (0) 2020.05.12 Spring 전체 URL 가져오기 (0) 2020.05.12