아....-_-;
우선 소스부분
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]
입니다.