[Struts2]Amateras 설정 및 간단한 예제

|

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
And