컴퓨터응용과학부 Java Enterprize(DB) 제 12 주 2014년 11월 18일 스트럿츠1과 스프링의 연계(8장) 실습
스트럿츠1과의 연계 Spring MVC Project 생성 필요한 Domain 클래스 추가 필요한 Service 클래스 추가 pom.xml에 spring-struts와 struts-core 라이 브러리 추가 wem.xml 에 struts 액션 설정 추가 servlet-context.xml 수정 struts-config.xml 파일 추가 필요한 뷰 jsp 파일 추가 필요한 액션 클래스 추가
실습내용 스프링과 스트럿츠1을 연계하는 3가지 방법을 구 현한다. DelegatingActionProxy 사용 : SampleAction1.java ActionSupport 사용 : SampleAction2.java AutiwiringRequestProcessor 사용 : SampleAction3.java 액션의 내용 사용자가 이름과 성을 입력하면 전체 이름을 보여 준다.
예제 프로그램
실습 순서 Spring MVC Project 생성 동작 확인 ejb.y2014.week11패키지를 ejb.y2014.week11.web 패키지로 수정 ejb.y2014.week11. service.SampleService 인 터페이스 추가 ejb.y2014.week11. service.SampleServiceImpl 클래스 추가
실습 순서 pom.xml에 spring-struts와 struts-core 라이 브러리 추가 wem.xml 에 struts 액션 설정 추가 servlet-context.xml 수정 struts-config.xml 파일 추가 필요한 뷰 jsp 파일 추가 필요한 액션 클래스 추가
프로젝트 임포트하기 File->Import
프로젝트 임포트하기 임포트할 아키브(zip)파일을 선택 선택된 아키브 파일 확인 아키브 파일 내의 프로젝트 내용 확인 임포트하면 자동으로 다시 워크스페이스를 빌드함.
STS 기본 설정 확인 Workspace 설정 확인 : D:\Lec_hwl\ejb\y2014 File->Switch Workspace -> Other…
STS 기본 설정 확인 Perspective 설정 확인 : Spring
스프링 MVC 프로젝트 생성
스프링 MVC 프로젝트 생성 Week11-struts 프로젝트 명 설정 처음 스프링 MVC를 생성하는 경우 이 창이 활성화 됨
스프링 MVC 프로젝트 생성 Base 패키지 이름 설정 ejb.y2014.week11 패키지 명 설정 3 단계만 허용함.
스프링 MVC 프로젝트 생성 빌드하는데 처음에는 시간이 걸리 수 있음
스프링 MVC 프로젝트 생성 ejb.y2014.week11.web으로 패키지 명 수정 Controller 패키지로 수정
실행 및 확인
실행 및 확인 서버 선택
실행 및 확인 실행할 모듈 선택 week11-struts1
실행 및 확인 한글이 깨져서 표시됨 week11
실행 및 확인 jsp 파일 pageEncoding 설정 week11-struts1
실행 및 확인 week11
생성된 클래스 ejb.y2014.week11.HomeController
패키지 명 수정
패키지명 수정 ejb.y2014.week11를 ejb.y2014.week11.web으로 수정. HomeController 클래스가 Web컨트롤러 클래스 임을 강조하기 위하여 패키지 명을 수정한 것임.
SampleService 인터페이스 추가 ejb.y2014.week11.service 인터페이스 함수 추가 createFullName() 함수 하나만 추가함.
SampleServiceImpl 클래스 추가 ejb.y2014.week11.service @Service 애노테이션 설정 Service 애노테이션으로 Bean으로 설정한다. createFullName() 함수는 매개변수로 주어진 성과 이름으로 전체 이름을 만들어 리턴한다.
이제 필요한 클래스들이 모두 정의 되었으며, 추가 적인 클래스가 필요하면 언제 든지 추가 하면 된다. 이제 부터 웹 플로우를 정의하고 웹 플로우에서 PersonService 를 사용할 수 있도록 환경을 설정 해 주어야 한다.
실습 순서 pom.xml에 spring-struts와 struts-core 라이 브러리 추가 wem.xml 에 struts 액션 설정 추가 servlet-context.xml 수정 struts-config.xml 파일 추가 필요한 뷰 jsp 파일 추가 필요한 액션 클래스 추가
pom.xml 에 struts 라이브러리 추가
pom.xml 에 spring-struts 라이브러리 추가 runtime 을 선택할 것 spring-struts 입력 알맞은 버전 선택 (경우에 따라 이 목록이 늦게 나타날 수 있음) 수정 후 저장을 하면 워크스페이스를 다시 빌드 함.
pom.xml 에 struts-core 라이브러리 추가 runtime 을 선택할 것 struts-core 입력 알맞은 버전 선택 (경우에 따라 이 목록이 늦게 나타날 수 있음) 수정 후 저장을 하면 워크스페이스를 다시 빌드 함.
web.xml 수정 스트럿츠1의 액션을 처리하는 servlet은 ActionServlet 클래스이다. 액션을 정의한 파일을 참조한다. *.do 로 요청하는 것은 action servlet이 처리하도록 한다.
servlet-context.xml 수정 이 파일은 web.xml 에서 DispatcherServlet 에 의해 읽혀 지도록 설정 되어 있다. DispatcherServlet이 시작할 때 context를 load 할 때 참조하는 파일을 servlet-context.xml 로 설정한다. 즉 모든 로드하는 Bean에 대한 정보를 가져오는 파일이다. 로드 순서가 2로 바뀌었음. web.xml 의 일부 클라이언트의 모든 요청은 appServlet 이 처리하도록 설정한다.
servlet-context.xml 수정 Bean을 로드할 때 ejb.y2014.week11 패키지에 있는 모든 클래스를 사용하도록 설정한다.
이제 액션을 정의하는 struts-config. xml 을 작성 해야 한다 이제 액션을 정의하는 struts-config.xml 을 작성 해야 한다. 나중의 관리편의를 위하여 이 파일은 /WEB-INF/struts1 폴더 아래에 둔다. /WEB-INF 폴더 아래에 struts1 폴더를 만들고 struts-config.xml 을 추가한다.
액션 정의 파일 저장 폴더 추가 웹 플로우 정의 파일을 /WEB-INF/struts1 폴더 아래에 저장할 것이므로 /WEB-INF/ 폴더 아래에 새로운 폴더 struts1 를 추가한다.
struts-config.xml 파일 추가
struts-config.xml 파일 추가
struts-config.xml 파일 추가
struts-config.xml 파일 수정 struts-config DOCTYPE 태그를 추가한다.
struts-config.xml 파일 수정
struts-config.xml 파일 수정
struts-config.xml 파일 수정 스트럿츠1의 액션에서 Bean을 정상적으로 참조하기 위해서는 반드시 이 plug-in을 설정해 주어야 한다.
뷰용 jsp 파일 추가 뷰 파일은 Views 폴더 아래에 둔다.
뷰용 jsp 파일 추가
뷰용 jsp 파일 추가 menu.jsp 설정
뷰용 jsp 파일 추가
뷰용 jsp 파일 추가 추가된 파일
menu.jsp 파일 수정 세 개의 메뉴 설정
같은 방법으로 jsp 파일 추가 sample1.jsp sample2.jsp sample3.jsp
sample1.jsp
sample2.jsp
sample3.jsp
이제는 필요한 뷰를 모두 작성했으므로 각 동작에 필요한 액션과 폼에 사용할 액션폼 클래스를 작성 한다. 액션 클래스를 추가 하기 전에 HomeController.java의 home() 함수의 리턴 값 을 “redirect:/menu.do” 로 수정하여 /로 접속하 면 바로 메뉴가 나타나도록 한다.
SampleAction1.java 이 액션을 액세스하는 path와 같아야 한다.
SampleAction2.java 이렇게 줄이 가는 것은 더 이상 지원하지 않는다는 뜻으로 될 수 있으면 사용하지 말라는 것이다.
SampleAction3.java AutowiringRequestProcessor에 의해 자동으로 인젝션 된다.
SampleForm.java getter/setter 는 이클립스로 자동 추가 한 것임
이제 필요한 모든 파일을 작성하였다. 실행하고 결과를 확인하자.
실행 및 결과
도전 과제 위 예제를 수정하여 SampleService가 폼에 주어 진 두 개의 숫자를 더한 결과를 출력하여 보여 주 도록 하시오. 아래 그림과 같은 클래스에 대한 정보를 입력 받아 서 메모리에 List 로 저장하는 일을 하는 웹 애플리 케이션을 작성하시오. 단, AutowiringRequestProcessor 를 활용하여 작성 하시오.