게시판〃(3) 디스패쳐서블릿 설정 + 라이브러리 추가

반응형


지금까지 게시판 만들기 프로젝트 중 단순 HTML로 화면만을 구성해보았는데요. 11월 25일날 작성하고 스프링 프레임워크를 공부하느라 진행하지 못했습니다. 이제 이 프로젝트에 필요한 부분은 숙지했으니 막힘없이 한번 만들어볼까요~~


게시판 (3)번 제목부터는 스프링 프레임워크를 적용하면서 그동안 만들었던 jsp파일을 WEB-INF폴더안에 옮길거라 출력되는 화면이 없어 지루하실수도 있습니다. 왜냐하면 WEB-INF안에 있는 파일은 보호화되면서 Run시키면 경로를 찾을수 없는 404오류가 뜨기 때문이죠.


또한 (2)번 제목까지 Board_Write파일이 진행되면 Board_Write_action파일로 전송되게 했는데, 서블릿을 이용하면서 이 파일들을 지우겠습니다. 아참 저번까지 Color Scripter 적용이 잘 안되서 사진으로 올렸는데 CSS를 살짝 수정하니 글에 올릴수 있게 되서 이번글부터 바로 쓰겠습니다.



 폴더정리 / 화면에 출력할 index.jsp 생성


기존 WebContent 폴더에 생성했던 jsp파일들을

WEB-INF폴더의 view폴더를 만들어 옮겨주었습니다.


이제 run 출력이 되는 파일은 index.jsp 파일만 존재하며

시각적으로 어떻게 흘러갈지 만들었던

Board_Delete_action / Board_Reply_action / Board_Write_action은

서블릿으로 대체될 예정이니 삭제하였습니다.




▲ index.jsp 출력화면


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>게시판 접속</title>
</head>
<body>
    <h2>훈이의 게시판 만들기 프로젝트</h2>
    <a href="boardList.action">게시판으로 이동하려면 클릭</a>
</body>
</html>



▲ index.jsp 소스코드 


index는 위와 같이 간단하게 만들었습니다. 

나중에 전부 완성되면 이쁘게 꾸며볼 생각이에요.




 Dispathcer Servlet 설정



1) web.xml

2) applicationContext.xml 

3) board-servlet.xml


이 3가지를 WEB-INF폴더 내부에 xml파일로 만들어줍니다.

자세한 설명은 아래 링크를 통해 먼저 정리된걸 보시고 오시면 좋은게

중요하다 싶은 부분은 간단하게 정리할 예정이라 그렇습니다.



관련글중에서 꼭 보셔야되는건 MVC패턴의 흐름과 Dispathcer Servlet 설정글입니다. 2번째 MVC 패턴을 보고오시면 이 게시판 프로젝트가 어떻게 만들어지는지 흐름을 알수 있습니다. 또한 3번째 글을 보시면 제가 아래에서 셋팅하는 태그들이 이해가 되실겁니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?>
 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  
  <display-name>Archetype Created Web Application</display-name>
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>EUC-KR</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>board</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>board</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>
</web-app>



▲ web.xml 소스코드


이 web.xml에는 [8~14] 문자열타입을 설정해주고, [23~26] 디스패쳐 서블릿 설정, [27~30] url 매핑설정을 해줍니다. 이 매핑을 통해 다음 단계는 <servlet-name>으로 정해준 board로 board-servlet.xml파일을 만들어 핸들러 매핑연결을 하게되죠. [20~22]에 보이는 태그는 디스패쳐서블릿을 다중으로 설정한다면 꼭 설정해야하는 리스너 설정태그입니다.이 리스너는 applicationContext.xml에서 받아주게 되고요.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
    
    <!-- DB관련 커넥션풀 -->
    <bean id="boardDaoImpl" class="board.dao.BoardDaoImpl"/
    
    <!-- Listener 설정 -->    
    <context:component-scan base-package="board.controller" annotation-config="true" />
    
    <!-- ViewResolver -->    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="order" value="2"/>    
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
        <property name="basename">
            <value>BundleView</value>
        </property>
        <property name="order" value="1"/>    
    </bean>
 
    <!-- DI 기능 주입-->    
    <bean id="boardService" class="board.service.BoardServiceImpl" />
 
</beans>



▲ applicationContext.xml 소스코드


다음 Context파일 [12~14]에서 아까 web.xml에서 설정했던 Listener태그를 받아줍니다. [9~11]은 DB연동을 하기위한 DAO를 설정, [28~29]에서 서비스주입을 받기 위한 DI기능을 주입해줍니다. [15~26]은 MVC구조의 뷰리졸버를 설정해주는것인데 한참 다음다음 단계죠. 미리 설정해준것이라 아직은 모르셔도 상관없습니다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                                  http://www.springframework.org/schema/beans/spring-beans.xsd">
 
    <!-- HandlerMapping -->
    
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="alwaysUseFullPath" value="true" />
        <property name="mappings">
            <props>
                <prop key="/boardList.action">listController</prop>
                <prop key="/boardView.action">viewController</prop>
                <prop key="/boardWrite.action">writeController</prop>
                <prop key="/boardUpdate.action">updateController</prop>
                <prop key="/boardDelete.action">deleteController</prop>
                <prop key="/boardReply.action">replyController</prop>
                <prop key="/boardAjax.action">ajaxController</prop>
            </props>
        </property>
    </bean>
    
</beans>



▲ board-servlet.xml 소스코드


디스패쳐서블릿의 마지막 설정인 board-servlet입니다. 이 파일은 web.xml에서 [27~30]의 <servelet mapping>태그로 이어받아 연결되는 xml파일이에요. 여기서 핸들러매핑을 통해 Controller로 전달시켜 주는 역활을 하게 되죠. 역시 관련글을 보게되면 이해가 바로 되실겁니다.





 라이브러리 추가




라이브러리 (hunit.tistory.com).zip


제가 요번 프로젝트에 사용할 라이브러리 파일들을 WEB-INJF내의 lib폴더에 추가시켜주었습니다. 파일은 알집으로 첨부해 놓았으니 압축을 푸시고 해당 프로젝트에 드래그로 손쉽게 옮겨 놓으시면 됩니다. 어느 정도 프로그래밍을 공부하신 분들이라면 아시겠지만 서블릿과 mysql, mybatis, jstl을 사용한다는것에 감이 오실거에요. 다음글에서는 자바 파일을 만들어 보도록하겠습니다.

반응형