Spring View에서 Business-logic의 Bean 접근하기
최근들어 쓸일이 없었는데 갑자기 또 쓸일이 급 늘어나기 시작해서 다시 정리정리!
Java 1.7, Spring 3.2, Servlet3 에서 사용한 코드이다. (Servlet2.5에서는 에러가 발생)
import 부분은 너무 길어져서 다 빼버렸다.
* 사용 대상이 될 객체 (Bean)
1. EL, JSTL을 사용하는 방법
2-1. ServletContext에 등록할 loader 클래스를 만들고, JSP에서 접근하고자 하는 Bean 등록
2-2. JSP에서 JSTL로 등록된 객체를 직접 접근해서 사용하기
최근들어 쓸일이 없었는데 갑자기 또 쓸일이 급 늘어나기 시작해서 다시 정리정리!
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;
}
}
@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로 바로 사용한다.
2. servletContext를 사용하는 방법
<jsp:useBean id="myCalculator" class="com.egloos.namelessja.accesibleObjects.BeanCalculator"/>
<c:out value="myCalculator.sum(10, 20)"/>
<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);
}
}
@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)}"/>
덧글