* ȸ¿ø°¡ÀÔ * ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ ã±â   ID PW
Last Modified : 2008.07.08

Struts °Ô½ÃÆÇ

Struts - First Steps ¸¦ ¸ÕÀú ½Ç½ÀÇÑ ´ÙÀ½ ¾Æ·¡¸¦ ¼öÇà

  1. mystruts-helloworld/WEB-INF/lib ¿¡ ÀÖ´Â ¾ÆÄ«ÀÌºê ÆÄÀÏÀ» dadam/WEB-INF/lib ¿¡ º¹»ç
  2. mystruts-helloworld/WEB-INF/src/MessageResources.properties ¸¦ dadam/WEB-INF/src ¿¡ º¹»ç
  3. mystruts-helloworld/WEB-INF ¿¡ ÀÖ´Â *.tld ÆÄÀÏÀ» dadam/WEB-INF ¿¡ º¹»ç
  4. mystruts-helloworld/WEB-INF/struts-config.xml, validation.xml ¸¦ dadam/WEB-INF ¿¡ º¹»ç
  5. mystruts-helloworld/WEB-INF/web.xml ¿¡¼­ ActionServlet ¼­ºí¸´ ¼±¾ð°ú ¸ÅÇÎ, Struts ÅÂ±× ¶óÀ̺귯¸® ¼±¾ðºÎºÐÀ» dadam/WEB-INF/web.xml ÆÄÀÏ¿¡ º¹»ç ÆíÁý (À̶§ taglib ¿¤¸®¸ÕÆ®´Â jsp-config ¿¤¸®¸ÕÆ®ÀÇ ÀÚ½Ä ¿¤¸®¸ÕÆ®°¡ µÇµµ·Ï ÇÔ)
  6. mystruts-helloworld/pages À» dadam/pages ·Î º¹»ç mystruts-helloworld/index.jsp ÆÄÀÏÀ» dadam/index.jsp ·Î º¹»ç
  7. dadam ¾ÖÇø®ÄÉÀ̼ÇÀ» ´Ù½Ã ·ÎµåÇϰí http://localhost:8080/dadam/ À¸·Î Á¢±ÙÇØ¼­ Welcoem.jsp ÆÄÀÏÀÇ ³»¿ëÀÌ º¸ÀÌ¸é ¿ì¸®ÀÇ À¥ App¿¡ Struts À» Àû¿ëÇÒ Áغñ ¿Ï·á

1. ¸ñ·Ïº¸±â ±¸Çö

¸ñ·Ïº¸±â¿¡ ´ëÇÑ Æûºó, ¾×¼ÇÀ» ÀÛ¼ºÇϰí struts-config.xml ÆíÁýÇÏ´Â ¼øÀ¸·Î ÁøÇà
¸ðµ¨2 °Ô½ÃÆÇ ÀÛ¾÷°ú ºñ±³ÇÏ¸é ÆûºóÀÌ Ãß°¡µÈ °ÍÀÌ ´Ù¸§
¸ñ·Ïº¸±â¿¡ ¾²ÀÏ ÆûºóÀ» ListForm À¸·Î À̸§À» Áþ°í ÆÑŰÁö´Â com.dadam.form À¸·Î ÁöÁ¤
ListForm À» ±¸ÇöÇϱâ À§Çؼ­ ¸ÕÀú model2 °Ô½ÃÆÇ¿¡¼­ list.jsp ¿¡ ¾î¶² Á¤º¸°¡ Àü´ÞµÇ´ÂÁö È®ÀÎÇÑ´Ù.

list.jsp ÆäÀÌÁö°¡ Àü´Þ¹Þ¾Æ¾ß ÇÏ´Â Á¤º¸
  • gulList
  • board
  • prev
  • next
  • cur_page => ( ÀÚ¹Ù ¸í¸í°ü·Ê¿¡ µû¶ó curPage ·Î º¯°æ )
  • first_page => ( firstPage ·Î º¯°æ )
  • last_page => ( lastpage ·Î º¯°æ )
  • article_no => ( articleNo ·Î º¯°æ )
¸ðµ¨2 °Ô½ÃÆÇ¿¡¼­ ListAction ÀÌ Àü´Þ¹ÞÀº ÆÄ¶ó¹ÌÅÍ
  • cur_page => list.jsp °¡ ¹Þ¾Æ¾ß ÇÏ´Â Á¤º¸¿Í Áߺ¹
  • board => list.jsp °¡ ¹Þ¾Æ¾ß ÇÏ´Â Á¤º¸¿Í Áߺ¹

À̰ÍÀÌ ListForm ÀÇ ¸â¹öº¯¼ö È帱ºÀÌ´Ù.
ÀÌ Á¤º¸¸¦ °¡Áö°í ListForm ¸¦ ¾Æ·¡¿Í °°ÀÌ ÀÛ¼ºÇÑ´Ù.

ListForm.java

package com.dadam.form;

import java.util.ArrayList;

import org.apache.struts.action.ActionForm;

public class ListForm extends ActionForm {
	
   private ArrayList gulList;
   private String board;
   private int prev;
   private int next;
   private int curPage;
   private int firstPage;
   private int lastPage;
   private int articleNo;

   public ArrayList getGulList() {
      return gulList;
   }
   public void setGulList(ArrayList gulList) {
      this.gulList = gulList;
   }
   public String getBoard() {
      return board;
   }
   public void setBoard(String board) {
      this.board = board;
   }
   public int getPrev() {
      return prev;
   }
   public void setPrev(int prev) {
      this.prev = prev;
   }
   public int getNext() {
      return next;
   }
   public void setNext(int next) {
      this.next = next;
   }
   public int getCurPage() {
      return curPage;
   }
   public void setCurPage(int curPage) {
      this.curPage = curPage;
   }
   public int getFirstPage() {
      return firstPage;
   }
   public void setFirstPage(int firstPage) {
      this.firstPage = firstPage;
   }
   public int getLastPage() {
      return lastPage;
   }
   public void setLastPage(int lastPage) {
      this.lastPage = lastPage;
   }
   public int getArticleNo() {
      return articleNo;
   }
   public void setArticleNo(int articleNo) {
      this.articleNo = articleNo;
   }
}	

ÀÌÁ¦ Action À» ÀÛ¼ºÇÑ´Ù.
¸ñ·Ïº¸±â ¿äûÀ» ¼öÇàÇÒ ¾×¼ÇÀÇ À̸§Àº ListAction À̶ó°í Çϰí
ÆÑŰÁö´Â com.dadam.action À̶ó Á¤ÇÑ´Ù.
ÄÚµå´Â model2 °Ô½ÃÆÇ¿¡¼­ ÀÛ¼ºÇÑ ListAction Âü°íÇÏ¿© ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÑ´Ù.
ListForm °´Ã¼°¡ list.jsp ±îÁö Àü´ÞµÈ´Ù´Â °ÍÀ» ¾Ë±â¿¡ list.jsp °¡ ÇÊ¿äÇÑ ¸ðµç Á¤º¸¸¦ ListForm ¿¡ ´ã´Â´Ù.

ListAction.java

package com.dadam.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.dadam.board.*;
import com.dadam.form.*;

public class ListAction extends Action {
	
   public ActionForward execute (
      ActionMapping mapping,
      ActionForm form,
      HttpServletRequest request,
      HttpServletResponse response) throws Exception {

      // paramter
      ListForm listForm = (ListForm) form;
      String board = listForm.getBoard();

      if ( board == null ) {
         listForm.setBoard("notice");
      }
      int curPage = listForm.getCurPage();
      if (curPage == 0 ) {
         listForm.setCurPage(1);
      }
      
      GulManager gulManager = new GulManager();

      int total_record = gulManager.getTotalRecord(listForm.getBoard());
      gulManager.init(listForm.getCurPage(), total_record);

      int start = gulManager.getStartRecord();
      int end = gulManager.getEndRecord();

      listForm.setGulList( gulManager.findGulList( start, end, listForm.getBoard() ) );
      listForm.setPrev( gulManager.getPrev() );
      listForm.setNext( gulManager.getNext() );
      listForm.setFirstPage( gulManager.getFirstPage() );
      listForm.setLastPage( gulManager.getLastPage() );
      listForm.setArticleNo( gulManager.getArticleNo() );

      return mapping.findForward("list");
   }
}

ÀÌÁ¦ Æûºó°ú ¾×¼ÇÀ» strutc-config.xml ¿¡ ¼³Á¤À» ÇØÁÖ¾î¾ß ÇÑ´Ù.
¸ÕÀú ÆûºóÀ» ¼³Á¤ÇÑ´Ù.
¾Æ·¡ ÄÚµåÁ¶°¢À» struts-config.xml ÆÄÀÏÀÇ form-beans ¿¤¸®¸ÕÆ®ÀÇ ÀÚ½Ä ¿¤¸®¸ÕÆ®·Î Ãß°¡ÇÑ´Ù.

<form-bean
      name="listForm"
      type="com.dadam.form.ListForm"
/>

¾×¼ÇÀ» ¼³Á¤ÇÑ´Ù.
¾Æ·¡ ÄÚµåÁ¶°¢À» struts-config.xml ÆÄÀÏÀÇ action-mappings ¿¤¸®¸ÕÆ®ÀÇ ÀÚ½Ä ¿¤¸®¸ÕÆ®·Î Ãß°¡ÇÑ´Ù.

<action
   path="/list"
   type="com.dadam.action.ListAction"
   name="listForm"
   scope="request"
   unknown="false"
   validate="true">
      <forward 
         name="list" 
         path="/struts/list.jsp"
         redirect="false"
       />
</action>

ÀÌÁ¦ ¸¶Áö¸·À¸·Î list.jsp ÆÄÀÏÀ» ÆíÁýÇÑ´Ù.
ÀÌÁ¦ list.jsp ¿¡¼­ ÇÊ¿äÇÑ ¸ðµç Á¤º¸´Â ListForm ¿¡ ´ã°ÜÁ® ÀÖ´Ù.
ÁÖÀÇÇÒ Á¡Àº list.do À» ¿äûÇϸ鼭 ³Ñ±â´Â ÆÄ¶ó¹ÌÅͰ¡ ÀÌÁ¦´Â cur_page °¡ ¾Æ´Ñ curPage ¶ó´Â °ÍÀÌ´Ù.
cur_page ·Î ÆÄ¶ó¹ÌÅ͸¦ ³Ñ±â¸é Struts °¡ ListForm ÀÇ curPage ¸â¹ö¸¦ ¼ÂÆÃÇÏÁö ¸øÇϹǷΠ¹®Á¦°¡ ¹ß»ýÇÑ´Ù.

list.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" 
pageEncoding="EUC-KR"%>
<%@ page import="java.util.*" %>
<%@ page import="net.java_school.util.Log" %>
<%@ page import="com.dadam.board.*" %>
<%@ page import="com.dadam.form.*" %>
<%
   ListForm listForm = (ListForm) request.getAttribute("listForm");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitonal.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />
<title>DADAMITA °Ô½ÃÆÇ Å×½ºÆ®</title>
<script language="javascript">
   
   function goWrite() {
      var form = document.getElementById("frmWrite");
      form.submit();
   }
   
   function goView(number) {
      var form = document.getElementById("frmView");
      var gulno = document.forms.frmView.elements[0];
      gulno.value = number;
      form.submit();
   }
   
   function goList(cpage) {
      var form = document.getElementById("frmList");
      form.curPage.value = cpage;
      form.submit();
   }

</script>
</head>
<body>
   <table border="1">
      <tr>
         <th>No</th>
         <th>Á¦¸ñ</th>
         <th>µî·ÏÀÏ</th>
         <th>Á¶È¸</th>
      </tr>	
<%
   ArrayList gulList = listForm.getGulList();
   int length = gulList.size();
   int articleNo = listForm.getArticleNo();
   for ( int i = 0; i < length; i++ )  {
      Gul gul = (Gul)gulList.get(i);	
%>
   <tr>
      <td><%=articleNo%></td>
      <td>
      <a href="javascript:goView('<%=gul.getGulno() %>')"><%=gul.getSubject()%></a>
      </td>
      <td><%=gul.getSigndate()%></td>
      <td><%=gul.getRef()%></td>
   </tr>
<%
      articleNo--;
   }
   String board = listForm.getBoard();
   int curPage = listForm.getCurPage();
%>
   </table>
   <p>
      <input type="button" value="»õ±Û" onclick="javascript:goWrite('<%=board %>')" />
   </p>
   <%@ include file="pager.jsp" %>

   <div id="form-grp">
      <form id="frmList" name="frmList" action="list.do" method="post">
         <input type="hidden" name="board" value="<%=board %>" />
         <input type="hidden" name="curPage" />
      </form>
      <form id="frmView" name="frmView" action="view.do" method="post">
         <input type="hidden" name="gulValue.gulno" />
         <input type="hidden" name="gulValue.bcode" value="<%=board %>" />
         <input type="hidden" name="curPage" value="<%=curPage %>" />
      </form>
      <form id="frmWrite" name="frmWrite" action="write_form.do" method="post">
         <input type="hidden" name="board" value="<%=board %>" />
         <input type="hidden" name="curPage" value="<%=curPage %>" />
      </form>
   </div>
</body>
</html>

pager.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" 
   pageEncoding="EUC-KR"%>
<%@ page import="com.dadam.form.*" %>
<%
   int prev = listForm.getPrev();
   int next = listForm.getNext();
   int firstPage = listForm.getFirstPage();
   int lastPage = listForm.getLastPage();
   if ( prev != 0 ) {
%>
   <p>	
   <a href="javascript:goList('<%=prev %>')">[ÀÌÀü]</a>
<%
   }
   for ( int i = firstPage; i <= lastPage; i++ ) {  
%>	
   <a href="javascript:goList('<%=i%>')">[<%=i%>]</a>
<%
   }
   if ( next != 0 ) {
%>   	
   <a href="javascript:goList('<%=next %>')">[´ÙÀ½]</a>
<%
   }
%>	
</p>

À¥ App ´Ù½Ã ·ÎµåÇϰí http://localhost:8080/dadam/list.do ·Î ¿äûÇÑ´Ù.