컴퓨터응용과학부 Java Enterprize(DB) 제 13 주 2014년 11월 25일 스트럿츠2과 스프링의 연계(9장) 실습
실습내용 스트럿츠2의 다양한 예제 작성 스트럿츠2와 스프링의 연계 HelloAction MultiAction-foo MultiAction-bar BindingSampleAction AwareSampleAction InterceptorSampleAction ValidationSampleAction ExceptionMappingSampleAction ZeroConfigSampleAction 스트럿츠2와 스프링의 연계 액션에서 스프링 Bean 사용 SpringSampleAction
웹 애플리케이션 화면
스트럿츠2과의 연계 Spring Maven Project 생성 pom.xml에 필요한 라이브러리 추가 필요한 폴더 추가(WebContent, WEB-INF) web.xml 작성 액션 작성 JSP 작성 struts.xml 작성 프로젝트 facets 변경(Dynamic Web Module)
프로젝트 생성 스트럿츠2용 웹 애플리케이션을 작성할 것이므로 스프링 MVC 프로젝트를 만들지 않고 Maven 프로 젝트를 만들어 스트럿츠2를 이용한 애플리케이션 을 만들 것이다.
Maven Project 생성
Create Simple Maven Project
프로젝트 명 설정 임의의 이름 프로젝트 이름
생성된 프로젝트 pom.xml 파일 외에는 추가 된 것이 없음
시스템 라이브러리 변경 기존 시스템 라이브러리 선택
기존 시스템 라이브러리 삭제 새 시스템 라이브러리 추가
JRE System Library 선택
원하는 시스템 라이브러리 선택
추가된 새 시스템 라이브러리
바뀐 시스템 라이브러리
pom.xml 파일 수정
struts2-core 2.3.16.3 추가 검색 목록이 나타나지 않을 경우에는 Group Id와 Artifact Id, Version을 화면과 같이 직접 입력하고 OK를 하면 된다.
struts2-spring-plugin 추가 검색 목록이 나타나지 않을 경우에는 Group Id와 Artifact Id, Version을 화면과 같이 직접 입력하고 OK를 하면 된다.
struts2-convention-plugin 추가 검색 목록이 나타나지 않을 경우에는 Group Id와 Artifact Id, Version을 화면과 같이 직접 입력하고 OK를 하면 된다.
servlet-api 2.5 추가 검색 목록이 나타나지 않을 경우에는 Group Id와 Artifact Id, Version을 화면과 같이 직접 입력하고 OK를 하면 된다.
jstl 1.2 추가 검색 목록이 나타나지 않을 경우에는 Group Id와 Artifact Id, Version을 화면과 같이 직접 입력하고 OK를 하면 된다.
log4j 1.2.16 추가 검색 목록이 나타나지 않을 경우에는 Group Id와 Artifact Id, Version을 화면과 같이 직접 입력하고 OK를 하면 된다.
수정된 pom.xml
WebContent 폴더 추가
폴더 이름 지정 WebContent
META-INF, WEB-INF 폴더 추가
web.xml 추가
XML File 선택
파일명 설정 web.xml
XML schema 로 부터 생성
web-app schema 선택 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd
Root element 선택
생성된 web.xml 파일 2번 줄에 있는 태그의 끝을 다음 줄로 옮긴다.
web.xml 파일 수정 읽기 쉽도록 여러 줄로 분리한다. web-app 가 root element 이므로 javee:web- app 태그를 web-app 태그로 수정한다.
struts2 filter 등록 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
이제 struts2 를 사용할 기본 준비가 완료 된 상태 이다. 지금 부터는 필요한 액션 클래스를 작성하여 추가 하면 된다.
액션 클래스 추가
패키지 및 클래스 명 설정 ejb.y2014.week13.struts2 HelloAction
생성된 POJO 액션 클래스 멤버 변수 message 추가
message 변수에 대한 getter/setter 우클릭 Source Generate Getters and Setters…
멤버변수 선택 멤버변수 선택 소스위치 선택
추가된 getter와 setter 함수 getter와 setter 함수가 추가된 멤버변수를 특히 프로퍼티(property)라고 한다. 웹 애플리케이션의 뷰인 jsp 파일에서 참조 할 수 있는 것은 각 클래스의 프로퍼티(property)이다.
execute 함수 추가
이제 액션도 작성했으므로 액션의 실행 결과를 보 여줄 뷰 파일을 작성할 차례이다. 뷰 파일들은 한 곳에 모아서 작성하는 것이 편리하 므로 뷰 파일들을 모아둘 폴더를 추가한다. 폴더는 /WEB-INF/jsp 로 한다.
jsp 폴더 추가
폴더명 설정 jsp 폴더명 설정
뷰 파일 추가
JSP File 선택
뷰 파일명 설정 hello.jsp 파일명 설정
템플릿 선택 New JSP File(html)
생성된 뷰파일
struts-tags 참조 추가
뷰 내용 작성 액션 클래스의 프로퍼티인 message 값을 표시한다.
액션과 사용할 뷰를 작성했으므로 이제 액션과 뷰 를 연결하는 설정을 추가해야 한다. 이 설정은 모두 struts.xml 파일에 추가해야 한다. struts.xml 파일은 src/main/resources 폴더에 위치해야 한다.
struts.xml 파일 추가
XML File 선택
파일명 설정 struts.xml
XML Template 선택
기본 템플릿 선택
Struts2 설정 파일 DOCTYPE 추가 struts2 용 설정 파일이라는 내용을 추가 한다.
URL과 액션 그리고 뷰를 연결 액션 이름 액션 클래스 이름 뷰 이름 URL: Week13Struts2/hello
여기까지 작성하고 실행을 하려고 하면 Run On Server 라는 항목이 나타나지 않는다. 이유는 아직 웹 애플리케이션이라는 정보가 설정 되지 않아서 그런 것이다. 이를 위해서는 Project Facets에 Dynamic Web Module 을 추가해 주어야 한다.
Dynamic Web Module 설정 Projects Properties
Content 폴더 선택
실행 오류 오류의 원인은 웹으로 실행하기 위하여 넘겨 주어야 할 라이브러리들이 제대로 서버 쪽으로 넘어가지 않아서 발생한 것이다. 이를 해결하기 위해서는 Deployment(배치) 를 올바르게 설정해야 한다.
Deployment 설정 Projects Properties
새 어셈블리(assembly) 선택
Maven Dependencies 추가
새 Deployment 내용
이렇게 설정 한 후에도 오류가 발생한다. 이는 스프링 관련하여 컨테이너를 제대로 적재하 지 못해서 발생하는 것으로 이에 대한 설정을 추가 하면 된다. ContextLoaderListener 를 web.xml 에 추가 한 다.
ContextLoaderListener 추가
Bean 설정 파일 추가
파일명 설정 spring-web.xml
필요한 XSD 선택 beans context mvc 선택. mvc가 없는 경우는 선택하지 않아도 된다.
추가적인 Bean 정의 파일 추가
생성된 Bean 설정 파일
애노테이션 Bean 설정 추가
실행 오류 오류의 원인은 / 에 연결된 액션이 없어서 그런 것임.
정상 실행
menu.jsp 추가 /WEB-INF/jsp/menu.jsp
기본 액션과 menu 액션 추가 struts.xml
도전과제 위 메뉴에 나타난 항목을 모두 구현할 것 첨부 한 ejb2014-struts2.zip 을 참고하여 같은 동작을 하도록 Week13Struts2 를 완성할 것