이글루 냠냠

namelessja.egloos.com

포토로그



[Spring][JSP] Spring Bean을 JSP에서 접근하기 Spring/MyBatis

Spring View에서 Business-logic의 Bean 접근하기
최근들어 쓸일이 없었는데 갑자기 또 쓸일이 급 늘어나기 시작해서 다시 정리정리!
Java 1.7, Spring 3.2, Servlet3 에서 사용한 코드이다. (Servlet2.5에서는 에러가 발생)
import 부분은 너무 길어져서 다 빼버렸다.

* 사용 대상이 될 객체 (Bean)
package com.egloos.namelessja.accesibleObjects;

@Component("beanCalculator")
public class BeanCalculator {
public int sum(int a, int b) {
return a + b;
}

public int multiply(int a, int b) {
return a * b;
}
}


1. EL, JSTL을 사용하는 방법
jsp:useBean을 사용해서 Bean을 특정 변수로 등록한 후에 JSTL로 바로 사용한다.
<jsp:useBean id="myCalculator" class="com.egloos.namelessja.accesibleObjects.BeanCalculator"/>
<c:out value="myCalculator.sum(10, 20)"/>


2. servletContext를 사용하는 방법
Spring에 의해 servletContext에 등록된 Bean은 JSP에서도 접근이 가능한 Bean으로 처리된다.
servletContext에 등록하기 위해서는 ServletContextAware를 상속받아 구현해야 하며,
구현된 클래스는 Component나 Service로 등록되어 Spring에 의해 관리될 수 있도록 한다.

2-1. ServletContext에 등록할 loader 클래스를 만들고, JSP에서 접근하고자 하는 Bean 등록
package com.egloos.namelessja.accessibleObjects;

@Component
public class BeanLoader implements ServletContextAware {
@Autowired
BeanCalculator beanCalculator

private ServletContext servletContext;

@Override
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;

}

@PostConstruct
public void init() {
servletContext.setAttribute("beanCalculator", beanCalculator);
}
}


2-2. JSP에서 JSTL로 등록된 객체를 직접 접근해서 사용하기
<c:out value="${beanCalculator.sum(10, 20)}"/>

덧글

댓글 입력 영역