아....-_-;

우선 소스부분
com.mudchobo.guestbook.common - 공통부분이라는 뜻인데 뭐 그냥 인코딩필터밖에 없어요. UTF-8로 인코딩한다 뭐 그런내용밖에-_-; 저도 친구가 쓰는거 가져다가 그냥 썼습니다.

com.mudchobo.guestbook.controller - 말그대로 MVC 중에 Controller에 관련된 클래스가 있습니다.

com.mudchobo.guestbook.db - db와 연동하는 dao클래스가 있습니다.

com.mudchobo.guestbook.logic - 로직과 폼에 관련된 클래스가 있습니다.

com.mudchobo.guestbook.vo - Value Object 클래스가 있습니다.

WEB-INF에는 web.xml과 springapp-servlet.xml, spring.tld가 있습니다.

WEB-INF/jsp에는 jsp 가 있습니다-_-;

우선 web.xml을 봅시다.
[code]
<servlet>
   <servlet-name>springapp</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
   <servlet-name>springapp</servlet-name>
   <url-pattern>*.do</url-pattern>
</servlet-mapping>
[/code]
서블릿을 스프링프레임워크에서 제공하는 DispatcherServlet을 사용합니다. 이것은 *.do으로 들어오는 요청에 대해서는 이 서블릿으로 처리한다는 뜻입니다.

자 이제 가장 중요한 bean들을 모아둔 springapp-servlet.xml을 보도록 합시다.
(파일이름이 서블릿이름-servlet.xml으로 짓는걸 권장하는데 요즘에는 이렇게 안쓰는거 같아요. xml도 분할하고 그러는 것 같습니다.)
[code]
<beans>

 <bean id="springappController"
   class="com.mudchobo.guestbook.controller.SpringappController" />
 
 <bean id="listController"
   class="com.mudchobo.guestbook.controller.ListController">
  <property name="guestbookManager">
   <ref bean="guestbookMan" />
  </property>
 </bean>
 
 <bean id="guestbookWriteValidator"
  class="com.mudchobo.guestbook.logic.GuestbookWriteValidator" />
 
 <bean id="writeController"
  class="com.mudchobo.guestbook.controller.WriteController">
  <property name="sessionForm" value="true" />
  <property name="commandName" value="guestbookWrite" />
  <property name="commandClass"
    value="com.mudchobo.guestbook.logic.GuestbookWrite" />
  <property name="validator" ref="guestbookWriteValidator" />
  <property name="formView" value="list" />
  <property name="successView" value="list.do" />
  <property name="guestbookManager">
   <ref bean="guestbookMan" />
  </property>
 </bean>
 
 <bean id="dataSource"
   class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName">
<value>com.mysql.jdbc.Driver</value></property>
  <property name="url">
   <value>db주소</value>
  </property>
  <property name="username"><value>dbid</value></property>
  <property name="password"><value>dbpw</value></property>
 </bean>
 
 <bean id="guestbookManDao"
   class="com.mudchobo.guestbook.db.GuestbookManagerDaoJdbc">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
 </bean>
 
 <bean id="guestbookMan"
   class="com.mudchobo.guestbook.logic.GuestbookManager">
  <property name="guestbookManagerDao">
   <ref bean="guestbookManDao" />
  </property>
 </bean>
 
 <bean id="urlMapping"
   class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
   <props>
    <prop key="/index.do">springappController</prop>
    <prop key="/list.do">listController</prop>
    <prop key="/write.do">writeController</prop>
    <!--
    <prop key="/delete.htm">DeleteFormController</prop>
     -->
   </props>
  </property>
 </bean>
 
 <bean id="viewResolver"
   class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="viewClass">
   <value>org.springframework.web.servlet.view.JstlView</value>
  </property>  
  <property name="prefix">
   <value>/WEB-INF/jsp/</value>
  </property>
  <property name="suffix">
   <value>.jsp</value>
  </property>
 </bean>
 
 <bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basename"><value>messages</value></property>
 </bean>
</beans>
[/code]
우선 urlMapping bean을 봅시다. list.do 요청이 들어오면 listController빈을 수행합니다. listController는 ListController클래스입니다. 이 클래스의 property는 guestbookManager입니다. 이것은 ListController클래스의 멤버변수를 의미합니다. 이 xml에서 이 해당 멤버변수값을 참조할 수 있습니다. 보시면 알겠지만, ref태그를 통해서 bean을 참조합니다. guestbookMan 빈을 가져올 수 있는 것입니다.
뭐 이런식으로 구조가 되어있어요. ListController는 GuestbookManager클래스를 가져와서 저 Manager클래스는 getContents()등 실제 로직이 있는 클래스이므로 저 메소드를 호출해서 List를 가져올 수 있는 것입니다.
Manager클래스는 Dao를 참조해서 데이터를 가져옵니다.

이런식의 구조로 되어있습니다-_-;

db테이블은
[code]
CREATE TABLE `guestbook` (
  `no` int(11) NOT NULL auto_increment,
  `name` varchar(250) default NULL,
  `subject` varchar(2000) default NULL,
  `content` text,
  `ip` varchar(15) default NULL,
  `datetime` datetime default NULL,
  PRIMARY KEY  (`no`)
) ENGINE=MyISAM  DEFAULT CHARSET=euckr AUTO_INCREMENT=23 ;
[/code]
입니다.

 
Posted by 머드초보
,