Eclipse 3.6를 실행하고 다음과 같은 절차에 따라 Spring IDE를 설치한다.
아래에 입력한 업데이트 사이트는 최근에 변경되었으므로 다음과 같은 사이트 주소를 사용해야 한다.
원래의 업데이트 사이트 주소: http://springide.org/updatesite
변경된 업데이트 사이트 주소: http://dist.springframework.org/release/IDE
Spring 2.5를 다운로드한다.
http://www.springsource.org/download
Eclipse에서 Dynamic Web Project를 하나 생성한 후에
프로젝트 이름 위에서 마우스 우측 > Spring Tools... > Add Spring Project Nature 를 선택한다.
다운로드한 Spring 2.5압축파일을 압축 해제하고 다음과 같은 3개의 라이브러리를 Eclipse 프로젝트의 WEB-INF/lib안에 import하거나 Build Path...메뉴를 이용하여 User Library를 생성하고 그 안에 다음 JAR파일을 등록해주면 된다.
dist/spring.jar
dist/modules/spring-webmvc.jar
lib/jakarta-commons/commons-logging.jar
WEB-INF/web.xml 파일을 다음과 같이 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC-KR</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>
index.jsp
</welcome-file>
</welcome-file-list>
</web-app>
위와 같이 인코딩 필터를 설정해 두면 요청을 처리할 때 request.setCharacterEncoding("EUC-KR") 부분을 대신할 수 있다.
WEB-INF/dispatcher-servlet.xml파일을 생성하고 다음과 같이 입력한다. Spring IDE를 설치했다면 New > File > Other > Spring > Spring Bean Configuration File 을 선택하여 파일이름을 입력하면 자동으로 쉽게 이 설정파일을 작성할 수 있다.
이 파일 이름은 web.xml에 등록된 서블릿의 이름으로 시작되고 -servlet.xml이 뒤에 붙어야 한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean name="/hello.htm"
class="controller.HelloController"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
위의 <bean name="/hello.htm" .... 부분의 의미
이용자가 웹브라우저로 요청할 때 요청 URL 이 루트 컨텍스트/hello.htm 과 같이 구성된 경우에 HelloController가 호출된다는 것을 의미한다. 만약 루트 컨텍스트의 이름이 "hello" 라고 한다면, HelloController가 호출될 수 있도록 요청하려면 요청 URL은 다음과 같아야 한다.
http://localhost/hello/hello.htm
<bean name="/test/hello.htm" .... 이렇게 설정하면, 요청할 때 그 URL은 http://localhost/hello/test/hello.htm 으로 하면된다.
즉, 빈 이름이 붙는 "/" 는 루트 컨텍스트를 의미하며 빈의 이름은 반드시 "/" 를 포함해야 한다.
위의 빈 설정파일은 다음과 같이 작성해도 된다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="helloController"
class="controller.HelloController"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- static view mapping -->
<prop key="/hello.htm">helloController</prop>
</props>
</property>
</bean>
</beans>
HelloController.java를 다음과 같이 작성한다.
package controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class HelloController extends AbstractController {
@Override
public ModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
ModelAndView mav = new ModelAndView();
mav.setViewName("hello");
mav.addObject("greeting", "감사해요, Spring2.5");
return mav;
}
}
hello.jsp
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>hello.jsp</title>
</head>
<body>
<%=request.getAttribute("greeting") %><br></br>
${greeting}
</body>
</html>
서버를 실행하고
http://localhost/Spring25/hello.htm으로 접속하면 HelloController를 거쳐 hello.jsp가 이어 실행된다.
실행결과 화면