MVC 모델 중 "C" 부분을 책임져줄 STRUTS 를 이클립스에서 사용해 보자.
우리는 그중에서 아마테라스에서 만든 STRUTS 를 사용하려고 한다.
우선 아마테라스 홈페이지로 들어가보자.
재패니즈 or 잉글리쉬 아무거나 자신있는걸로 선택 후
메인화면으로 들어가서 Eclipse HTML Editor 와 StrutsIDE 를 다운받아야 한다.
주의할 점은
이런걸 다운받을때 늘상 그렇지만 버전을 잘 확인하고 받아야 한다는 것이다.
우리는 Eclipse 3.2 버전을 사용하기 때문에 Eclipse HTML Editor 와 StrutsIDE 둘다 2.0.6 버전은 사용이 불가하다.
여기서는 2.0.4 버전을 받았다.
그리고 들어가서 잘 읽어보면 JDT 와 GEF 도 필요하단걸 알 수 있다.
하지만 지금 우리가 사용하는 이클립스는 wtp 올인원 버전이라
받을 필요가 없지만 만약 설치 되 있지 않다면 알아서 잘 설치하도록;;;
이녀석들을 다 다운받았다면 압축을 풀자.
압축을 풀면 안에 플러그인 폴더가 나오는데 통채로 붙여넣지 말고
플러그인 폴더 안에 있는 녀석만 복사해서 이클립스가 설치된 폴더의 플러그인 폴더에 붙여넣자.
그리고 이제 이클립스를 실행시켜보자.
플러그인이 잘 설치됬는지 확인하기 위해서
이클립스 메뉴의 Window - Preferences 로 들어가자.
아마테라스 메뉴가 새로 생겼다면 플러그인 설치 성공.
그럼 이제 본격적으로 Struts 를 사용해보자.
우선 다이나믹 웹 프로젝트를 하나 만든다.
여기선 "StrutsStudy" 라는 이름으로 만들었다
그리고 WebContent 에서 마우스 우클릭 - New - other - Amateras - Struts - Add Struts Support 를 선택하자.
그리고 Next!
여기서 잘 보면 servlet-mapping 이 *.do 로 되있는걸 알 수 있다.
다른 녀석을 임의로 지정해 줄 수 도 있다.
Finish 로 끝내자.
그럼 요렇게 여러가지가 생기는 걸 알 수 있다.
저기 빨간 테두리 안에서 struts-config.xml 을 더블클릭하자.
그럼 새로운 작업환경이 나타나는데
저 모습은 왼쪽의 Action 메뉴를 클릭한후 오른쪽 공백에 클릭해서
액션을 하나 만든 모습이다.
다른 메뉴들도 마우스로 클릭한후 공백에 한번 눌러주면 만들 수 있다.
이런식이다.
자세히 보면 어제까지 배우던 서블릿과 거의 흡사함을 알 수 있다.
"Welcome" 이라는 이름의 Action이 "ListServlet"이라는 이름의 Servlet 이고
Servlet에서와 똑같이 forward를 사용해 포워딩 해주고 있다.
따라서 사용자에게 보여주기위해 실행을 하려면 jsp 파일이 아니라 Welcome 이라는 Action을 실행해야 한다.
----------------------------------------------------------------------------------
잠깐 web.xml 에 대해 설명하고 넘어가자.
web.xml 중 일부
<web-app> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> |
웹서버(톰캣)는 외부로부터 들어오는 request를 받아서 response 해준다. (모든 포트가 아니라 8090포트만)
Welcome.do 가 8090포트를 통해 들어오면 톰캣이 우선 받는다
JSP, JAVA, HTML과 같이 자기가 아는 확장자의 경우는 자기가(톰캣) 처리하지만
모르는 파일이 들어왔을경우 web.xml을 뒤지게 된다.
읽어보면 servlet-mapping을 *.do로 한다고 적혀있는것을 찾는다. (위의 소스중 젤 마지막 부분)
그리고 그놈은 "action"이 관리한다고 되어있다.
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> |
그럼 다시 위로 올라가서 servlet-name 이 "action"인 부분을 찾고 설정을 본다.
servlet-class 뒤에 적혀있는 녀석이 그걸 받는다고 되어있다.
<servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> |
그리고 초기화할때 struts-config.xml 이 한다고 되어있고
<init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> |
그래서 다시 그녀석을 읽게된다. 거기로 가서
action-mapping을 보면 Welcome을 Welcome.jsp로 forward 하라고 되어있다.
struts-config.xml 중 일부
<action-mappings> <action path="/Welcome" forward="/Welcome.jsp"> </action> <action path="/list" type="action.ListAction"> <forward name="success" path="/list.jsp"/> </action> </action-mappings> |
이제 젤 먼저 할일은
struts-config.xml 을 열어서
내가 어떻게 하겠다는걸 기술하고
거기에 맞춰서 만들어 줘야 한다. 만약 그걸 제대로 못해주면 404 에러가 발생한다.
경로를 기술할경우 Action같은 경우는 무조건 .do로 끝나야 한다.
----------------------------------------------------------------------------------
그럼 간단하게 디비에 있는 멤버 정보를 나열해 주는 놈으로 만들어보자.
가운데 success 는 forward이름을 그냥 success 로 준 것 뿐이다.
ListAction.java (Action을 상속받는다. )
package action; import java.util.Vector; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import manager.MemberManager; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class ListAction extends Action{ //servlet 같은 경우 상속 받으면 기본적으로 doGet, doPost 를 구현해 줘야 한다. public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ //이밑에는 DB 연결하고 쿼리문 날리고 결과받고 세션에 추가해주고 MemberManager mm = new MemberManager(); Vector v1 = null; v1 = mm.list(); HttpSession session = request.getSession(); session.setAttribute("list", v1); return mapping.findForward("success");// } } |
list.jsp (struts-config.xml 에서 페이지를 만들고 그녀석을 더블클릭하면 바로 만들 수 있다.)
<%@ page contentType="text/html; charset=euc-kr" import="java.util.Vector, bean.MemberBean"%> <% Vector v1 = null; v1 = (Vector)session.getAttribute("list"); %> <html> <body> <table border="1"> <tr> <td>아이디</td> <td>패스워</td> <td>이름</td> <td>이메일</td> <td>가입일</td> </tr> <%for(int i=0;i<v1.size();i++){ MemberBean mb = new MemberBean(); mb = (MemberBean)v1.get(i); %> <tr> <td><%=mb.getId() %></td> <td><%=mb.getPass() %></td> <td><%=mb.getName() %></td> <td><%=mb.getEmail() %></td> <td><%=mb.getRegdate() %></td> </tr> <%} %> </table> </body> </html> |
실행을 하려면 새로운 웹페이지를 하나 띄어놓고
직접 주소를 쳐주자.
list.do 를 잘 보기 바란다.
'JAVA/JSP > Struts2' 카테고리의 다른 글
[Struts2]Struts-config.xml의 dtd 설명 (2) | 2008.12.23 |
---|---|
[Struts2] architecture (0) | 2008.12.23 |
[Struts2] 기본적인 설정 (0) | 2008.12.22 |
[Struct2] Amateras 설정 (0) | 2008.12.22 |
[Struts2] StartingStruts2(pdf) (0) | 2008.12.22 |