=====================================
스트럿츠 두번째 시간입니다.
지난 시간에 스트럿츠 문 입구까지 왔다고 하면 오늘은 문을 살짝 열어보도록 하겠습니다.
프로그래밍 언어라는 것이 초보자들에겐 해도해도 끝도 없고, 뭘해도 제대로 하는게 하나도 없는 것 같은
느낌을 쉽게 주곤하는 것 같네요.
하지만, 하나하나씩 정복해갈 수 있도록 포기하지 않는 것이 중요한 것 같습니다.
많은 사람들과 공유할 수 있도록, 로그인 필요없이 추천 버튼 클릭 부탁드립니다^^
오늘 만들어볼 프로젝트 파일구조입니다.
이렇게 맞춰주시면 될 것 같습니다.
파일명은 임의로 지정해주셔도 상관은 없겠습니다.
일단 지금 중요한 부분은 struts2 사용을 위한 jar 파일을 import 해주는 것과,
struts.xml 및 web.xml 파일의 위치를 눈에 익혀두시기 바랍니다.
스트럿츠2를 사용한다는 것은 웹을 만들 때 유지보수 및 생산성 향상을 위한 여러가지 파일들을 사용한다는 의미와 비슷합니다.
위 화면에서 WEB-INF ==> lib ==> 5가지 jar 파일 이 보이실건데요.
이 파일들을 찾아보도록 하겠습니다.
먼저 스트럿츠2 프레임워크를 다운로드 해야 하는데, 꽤나 거대한 설치작업을 진행하는 것이 아니라, 단순히 압축파일 다운받아서 해제해주고, 그 안에 있는 jar 파일들을 import 해줌으로써 스트럿츠2 프레임워크 구조를 사용할 수 있습니다.
스트럿츠2 다운로드
http://struts.apache.org 이동해주세요.(클릭하시면 바로 이동됩니다)
첫화면입니다. Apache Struts 2.3.15.1 GA 다운로드 클릭
노란색으로 표시된 부분 보이시나요?^^; 너무 작게 나왔네요.
Full 버전 zip 파일을 다운로드 해주세요.
다운로드 하시고, 압축해제주시면 되는데요.
해제된 파일에 보시면 lib 폴더로 들어가셔서 아까 말씀드린 jar 파일 5개를 import 해주시면 됩니다.
폴더안에 파일들이 정말 많이 있으니까 잘 찾아보세요^^
일단 파일을 찾으셨다면,
이클립스에서 Dynamic Web Project 로 새로운 프로젝트를 생성하신 후 ( 맨 위에 보시면 아시겠지만 전 Web0723 이라는 프로젝트란 이름으로 만들어주었습니다. )
다시한번 맨 위에 있는 프로젝트 파일 구조를 살펴볼게요.
WEB-INF ==> lib 폴더에 아까 찾아둔 jar 파일 5개를 전부 import 해주세요.
일단 이렇게 기본적인 셋팅이 끝났습니다. 이제 스트럿츠2 프레임워크를 사용해서 웹 어플리케이션을 제작할 수 있게 되었습니다^^
위와 같이 만들어진 파일구조로 어떤 순서로 작업을 진행할 지 먼저 말씀드릴게요.
0. web.xml 에 스트럿츠2 필터 디스패쳐 환경 구축하기.
스트럿츠2 의 컨트롤러 FilterDispatcher 가 액션실행을 위한 환경을 만들어주기 때문에,
여기서부터 스트럿츠2 는 시작됩니다.
1. 액션 클래스 작성(HelloWorld.java)
2. struts.xml 에서의 액션과 리절트 매핑
3. 리절트 페이지 작성
4. 결과보기
web.xml
기본적으로 셋팅되어있는 web.xml 화면입니다. 일단 아무것도 적지 않은 상태인데요.
아래와 같이 FilterDispatcher 컨트롤러를 등록합니다.(struts2 의 핵심기술이라고 할 수 있죠^^)
struts2 라는 이름의 FilterDispatcher 를 사용하는 클래스를 등록하였고,
<url-pattern> 이라는 것은 인터넷 창에서 보여지는 URL 주소 확장자가 .action 일 경우에 FilterDIspatcher가 실행될 수 있도록 매핑작업을 진행한 것입니다.
기본적으로 모든 mapping 작업은 위와 같은 형식으로 사용할 수 있다는 것을 참고해두시면 좋을 것 같네요.
이제 사용자가 웹에서 사용 요청이 들어오게 될 때 실행될 action 클래스를 살펴보도록 하겠습니다.
action 클래스에는 기본 액션 메소드가 정의되어 있습니다. 기본 액션 메소드란 가장 처음에 실행이 되는 부분입니다. 스트럿츠2 에서는 묵시적으로 execute() 로 지정되어 있습니다.
execute() 메소드는 리턴값으로 스트링형을 반환하는데요. 반환되는 이 리턴값이 무엇이냐에 따라서 그 다음 로직이 어떻게 진행될지가 결정된다고 생각하면 됩니다.
이렇게 반환되는 스트링형 문자열 값을 "result code" 라고 명명합니다.
result code 가 반환된 문자열이 있다면 그 문자열을 통해 무엇을 실행시킬지 연결시켜주는 연결고리가 필요하겠죠? struts.xml 에서 그 역할을 담당합니다.
일단 코드 형식은 <result name="success"> HelloWorld.jsp </result> 와 같이 쓰입니다.
어떤 의미인지 단번에 아실 수 있겠죠?^^
자꾸 설명이 길어지는데, 일단 처음이니까 세세하게 살펴볼 필요가 있습니다.
다시 본론으로 들어가서 정말 action 클래스를 살펴보도록 할게요.
HelloWorld.java
package action;
public class HelloWorld {
private String msg;
public String getMsg() { return msg; }
public String execute() throws Exception{
this.msg = "welcome to Struts2 World";
return "success";
} //end
} //class END
=====================================================
이 액션 클래스는 POJO 형식으로 만들어졌습니다. 자바의 가장 고전적인 형태라고 생각하시면 되고, 너무 깊에 파고들 필요는 없을 것 같네요.
여기서 msg 라는 private String 변수를 선언하였고 execute() 메소드에서 변수에 문자열 대입 및 값을 리턴 시켜주었습니다.
Java Beans 에서는 대개 private 으로 변수 선언을 한 후 setter/getter 메소드를 만들어주는데, 여기서는 외부에서 값을 변경하지 못하고, 액션에서 설정한 값만을 가져다 사용만 할 수 있도록 하기 위해 setter 는 생략하였습니다.
execute() 메소드는 액션 요청이 들어올 때, 액션 클래스가 인스턴스화 되면서 자동으로 호출이 되어버리는 메소드입니다. 스트럿츠2 에서의 기본 실행 리폴트 메소드입니다.
execute() 메소드 실행 후 그 값을 리턴시켜 주는데요. 리턴값을 리절트 코드인 success 로 인해서 다음에 실행될 페이지가 결정됩니다.
리절트 코드는 앞서 말씀드린 struts.xml 에서 매핑 시켜주면서 그 결과 연결될 페이지로 이동시켜주는 것으로 기본 로직이 마무리 됩니다.
그럼 끝으로 struts.xml 페이지를 살펴봄으로써 이번 포스팅은 마무리 하겠습니다.
수고하셨습니다.
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="Web0723" extends="struts-default">
<action name="HelloWorld" class="action.HelloWorld"></action>
<result name="success">/HelloWorld.jsp</result>
</package>
</struts>
'IT > Struts2' 카테고리의 다른 글
스트럿츠2 한글 에러 발생 처리 (0) | 2013.07.25 |
---|---|
ActionSupport 클래스를 이용한 action (0) | 2013.07.25 |
struts.xml의 action 설정, 에러발생처리 (0) | 2013.07.24 |
<package/> 요소 사용법 (0) | 2013.07.24 |
Struts2 웹 애플리케이션 흐름(web.xml 과 struts.xml 의 역할) (0) | 2013.07.22 |