sitelink1  
sitelink2  
sitelink3  
extra_vars6  
http://blog.empas.com/ahnyounghoe/13186543
이젠 article-servlet.xml 파일을 작성할 차례군요. 먼저 WEB-INF 폴더에 article-servlet.xml 라는 이름으로 파일을 하나 생성합니다. xml 이기 때문에 Schema나 DTD 정의가 필요하죠. 아래 틀을 사용합니다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!-- == Web Application Layer == -->
<beans>
</beans>
 
Web Application Context 파일에 정의되는 객체의 주요 유형은 다음과 같습니다.
 
  • Handler Mappings
  • View Resolver
  • Handler(Controller)
  •  
    Handler Mappings는 브라우저에서 서버로 오는 요청의 URL에 따라 어떤 객체가 호출되어야 하는지를 알려주는 객체입니다. 아무 설정도 하지 않으면 객체 정의(bean)할 때 이름(name 속성)으로 요청 url을 사용할 때 쓰는 BeanNameUrlHandlerMapping가 쓰입니다.
     
    View Resoler는 view(화면)의 이름을 실제 파일 이름으로 변경해주는 해석기 역할을 합니다. Spring MVC는 jsp 이외에도 Velocity나 FreeMarker 등을 기본 지원하고 그 외에의 화면을 사용할 수 있게 하기 위해서 view 이름을 파일 이름이 아닌 논리적 이름(변수명)으로 취급합니다.
     
    jsp 파일을 WEB-INF/jsp 폴더에 넣기 위해서는 다음과 같은 설정이 필요합니다. 이렇게 하면 view의 이름 앞과 뒤에 각각 /WEB-INF/jsp/ 와 .jsp 가 붙는 효과가 나죠. 아래 설정을 위의 xml 파일에 넣어봅니다.
     
     <bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="viewClass"
       value="org.springframework.web.servlet.view.JstlView" />
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
     </bean>
     
    위에서 viewClass 프로퍼티로 JstlView를 설정했는데요. Jstl을 포함한 Jsp를 HTML 템플릿 기술로 쓸 때 적합한 클래스죠. Velocity나 FreeMarker를 쓰기 위해선 다른 클래스를 넣으면 되겠구나 짐작할 수 있죠. 결국 코드 수정을 최소화 하고 템플릿 기술을 바꿀 수 있단 것이죠.
     
    하나 설명 안한 항목이 Handler죠. 요청 처리기인데요. Spring MVC는 기본적으로 다양한 Controller를 제공합니다.
     
    자세한 것은 Spring MVC컨트롤러 탐험기 안내 를 참조하세요.
     
    Handler는 이들 Controller의 메소드를 의미합니다. 그러나, 객체는 클래스 단위로 등록되기 때문에 Controller를 등록하시는거죠. 아무튼 요청을 처리하는 녀석은 Controller / Handler라고 한다는 것을 기억하세요.
     
    index.do 요청에 대해서 404 에러가 나지 않도록 처리기와 화면(view)를 만들어보죠. 먼저 view부터 해보겠습니다. WEB-INF 폴더 밑에 jsp 폴더를 먼저 만듭니다. 그 아래 index.jsp 파일을 새로 만듭니다. index.jsp 파일에는 아무런 내용이나 입력합니다. 저는 ok라고만 넣었습니다. 404 에러 대신 보여질 것을 넣는 것이죠.
     
    이젠 view는 만들어 두었고, Handler/Controller 설정을 해야 하는데.. 앞으로 이들을 싸잡아서 처리기 혹은 요청 처리기라고 부르겠습니다. 단순히 특정 view(앞으로 화면이라고 하겠습니다.) 이름을 반환하는 처리기를 정의해보죠. Spring MVC가 제공하는 ParameterizableViewController 타입을 쓰면 됩니다.
     
     <bean name="/index.do"
      class="org.springframework.web.servlet.mvc.ParameterizableViewController">
      <property name="viewName" value="index" />
     </bean>
     
    이제 index.do 요청이 발생하면 ParameterizableViewController 객체에게 요청이 넘겨지고, 이 녀석은 화면 이름으로 index를 반환합니다. 그러면, 다시 Spring MVC의 Front Controller에선 결과 화면으로 해당 화면 이름을 가진 실제 페이지를 찾아서(View Resolver를 통해) 보여주는 것이죠.
     
    404를 알리는 페이지가 브라우저에 떠 있는 상태라면 서버를 다시 실행합니다. (브라우저를 닫으신 분들은 Run As > Run on Server를 수행하세요.)


    Servers 뷰에서 좌측에 돌아가는 화살표 아이콘을 눌러 서버를 재구동하면 됩니다. 저와 동일하게 하셨다면, 다음과 같은 에러가 발생합니다.
     
    java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/fmt/LocalizationContext
     
     
    StackTrace를 보면 JstlView가 JstlUtils을 사용하는데, JstlUtils가 사용하는 LocalizationContext를 찾지 못해서 발생하는 오류임을 알 수 있습니다. Classpath Helper 플러그인(JAR 의 의존성까지 체크해주는 이클립스 플러그인, Classpath Helper  참조)을 설치했다면 좀 더 쉽게 알 수 있죠.
     
    org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/fmt/LocalizationContext
    java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/fmt/LocalizationContext
     at org.springframework.web.servlet.support.JstlUtils.exposeLocalizationContext(JstlUtils.java:83)
     at org.springframework.web.servlet.view.JstlView.exposeHelpers(JstlView.java:82)
    ...
     
    spring 라이브러리 zip 파일(with dependencies 다운 로드시)의 lib/j2ee에 들어 있는 jstl.jar 파일을 WEB-INF/lib로 드래그앤드롭합니다. 서버를 재시작하고 브라우저에서 F5키를 누르면 ok가 보이겠죠.

    번호 제목 글쓴이 날짜 조회 수
    공지 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) 황제낙엽 2023.12.23 0
    공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 6
    43 스프링의 구조별 기능 설명 황제낙엽 2007.06.26 42
    42 실습 STEP2 - 기초편 (데이터 베이스 접속) file 황제낙엽 2007.06.21 21
    41 java.util.MissingResourceException: Can't find bundle for base name xxx, locale ko_KR 황제낙엽 2007.06.21 2362
    40 자바지기 스프링 프레임웍 아티클 황제낙엽 2007.06.04 54
    39 AOP(Aspect Oriented Programming) 황제낙엽 2007.06.03 39
    38 Spring MVC 어플리케이션 개발 <12> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 31
    37 Spring MVC 어플리케이션 개발 <11> 간단한 조회 구현 방안 비교 황제낙엽 2007.05.27 164
    36 Spring MVC 어플리케이션 개발 <10> 도메인 객체 수정시 변경 사항 황제낙엽 2007.05.27 10
    35 Spring MVC 어플리케이션 개발 <9> JSP 화면 작성 황제낙엽 2007.05.27 28
    34 Spring MVC 어플리케이션 개발 <8> Spring기반 iBatis DAO 작성 황제낙엽 2007.05.27 51
    33 Spring MVC 어플리케이션 개발 <7> Spring과 iBatis 연동을 위한 준비 황제낙엽 2007.05.26 17
    32 Spring MVC 어플리케이션 개발 <5> MVC 컨트롤러 작성 황제낙엽 2007.05.26 22
    31 Spring MVC 어플리케이션 개발 <4> 화면 요구 작성 황제낙엽 2007.05.26 19
    » Spring MVC 어플리케이션 개발 <3> Web Application Context 파일 작성 황제낙엽 2007.05.26 125
    29 Spring MVC 어플리케이션 개발 <2> Spring MVC 구동을 위한 web.xml 작성 황제낙엽 2007.05.26 32
    28 Spring MVC 어플리케이션 개발 <1> 프로젝트 디렉토리 생성 황제낙엽 2007.05.26 51
    27 Struts에서 Spring으로의 이주 가이드 - Spring (java/j2ee Application Framework) 황제낙엽 2006.02.27 29
    26 실습 STEP1 - 기초편 (Hello Spring 출력) file 황제낙엽 2007.04.27 18
    25 Bean 생명주기 관리 황제낙엽 2007.03.23 24
    24 Spring프레임워크 소개문서 (3) 황제낙엽 2007.03.22 35