EL

6.JSP 에서 static 메서드 호출

Jungsoomin :) 2020. 7. 14. 15:37

자주 보게되는 타입은 String 이고 이를 조작하는 법이 능숙할 수록 유리하다는 것을 많이 느낀다.

아파치제단에서 관리하는 JSTL 태그 라이브러리에는 내장된 static 메서드가 있어 이를 EL안에 사용할 수 있다.

 

일단 사용법은 ${메서드명(매개변수)} 인데 매개변수를 조심해야할게, 이게 Property 명이다.

<body>
<%
	List<String> list = new ArrayList<>();
	list.add("java");
	list.add("sql");
	request.setAttribute("myList", list);
%>

<%-- <%= MyUtil.length(list) %> --%>
<!-- 임포트한 뒤 EL에서도 그대로 호출하는데 매개변수가 Property명이다 -->
\${MyUtil.length(myList)}  :  ${MyUtil.length(myList)}
<hr />

${fn:length(myList) } <br />


</body>

내부적으로 Static메서드를 만들어 사용하기 위해서는 클래스에서 정의한 뒤 JSP에서 임포트해야한다고 한다.

${}안에 메서드 명으로 호출한다.

package chap11;

import java.util.Collection;

public class MyUtil {
	public static int length(Object Object) {
		Collection c = null;
		if(Object instanceof Collection) {
			c = (Collection)Object;
		}else {
			return -1;
		}
		return c.size();
	}
}

JSP 페이지에 taglib에 추가한다. prefix 는 fn 이다.

tomcat사이트 -> taglibs -> implc, spec .jar 파일 다운로드 한 뒤 jar 파일을 classpath에 추가.

 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 


Spring ragercy Mvc ProjectDynamic Web Project 에서는 jstl 의존이 등록되어 있으니 에러 없이 사용가능한거 였다.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

나중에 Maven Project 를 생성하게 될 때 참고하자.

 

Sevlet 규약에서는 webapp 안의 lib 가 모듈 저장소이지만, spring에서는 따로 저장하고 있어 lib폴더를 사용해보지는 않은 것 같다.