IT/Java Spring

Spring MVC 기본 게시판 예제 만들기 - 1

Millennials 2020. 6. 17. 16:12

1) 게시판 뷰 생성


게시판 listview - selectList.jsp
css

 

@charset "UTF-8";

.page-main-style{
	width:600px;
	margin:0 auto;
}
.result-display{
	width:400px;
	margin:50px auto;
	border:1px solid #000;
	padding:100px 0 100px 0;
	text-align:center;
}
.align-center{
	text-align:center;
}
.align-right{
	text-align:right;
}
/*목록*/
table{
	width:100%;
	border:1px solid #000;
	border-collapse:collapse;
	margin-top:5px;
}
table td, table th{
	border:1px solid #000;
	padding:5px;
}

/*등록,수정폼*/
form{
	width:500px;
	margin:0 auto;
	border:1px solid #000;
	padding:10px 10px 10px 30px;
}
ul{
	list-style:none;
}
label{
	width:100px;
	float:left;
}
.error-color{
	color:red;
}

2)board.controller 생성


/list.do 요청을 받으면 @RequestMapping 어노테이션을 통해 process메서드가 실행된다.

 

ModelAndView가 "selectList"의 이름을 가진 jsp파일을 실행시킴

 


3)index.jsp 생성


총관 컨트롤러로 연결시킬 index.jsp를 생성한다.

       @RequestMapping                                 ModelAndView

index.jsp          ->          BoardController.java           ->            selectList.jsp

                                     


4) VO 생성


getters and setter 와 toString 추가

 


5) 컨트롤러에 자바빈 추가



6)insertForm.jsp view 생성


insert

 

오류체크

index.jsp 실행 후 아래 화면이 나와야 정상 실행

 

       @RequestMapping("/list.do")                    ModelAndView

index.jsp          ->          BoardController.java           ->            selectList.jsp

등록 버튼을 클릭

 

         @RequestMapping(value="/insert.do",method=RequestMethod.GET)    form() {return"insertForm"    }

index.jsp등록버튼          ->             BoardController.java                            ->           insertForm.jsp

(onclick="location.href='insert.do'")


7)root-context.xml 설정(데이터베이스 관련 설정파일)


annotation이 controller인 것을 제외한다. servlet-context와 같이 스캔이 될 경우 충돌되기 때문


8)설정파일 생성


데이터베이스 jdbc 연동 설정파일 생성

 

 

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
<!-- 빈 자동 스캔 - servlet-context.xml에서 Controller를 자동 스캔해서
     아래 설정에서는 Controller 자동 스캔 제외 -->
    <context:component-scan base-package="kr.spring.board">
        <!-- annotation이 controller인 것을 제외한다. servlet-context와 같이 스캔이 될 경우 충돌되기 때문 -->
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    
    <!-- 데이터베이스 연동 관련 설정 파일 path 설정 -->
    <context:property-placeholder location="classpath:config/jdbc.properties"/>
    
    <!-- 커넥션 풀을 이용한 DataSource 설정 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <!-- 최대 커넥션 개수 -->
        <property name="maxActive" value="50"/>
        <!-- 접속이 없을 경우 최대 유지 커넥션 갯수 -->
        <property name="maxIdle" value="30"/>
        <!-- 접속이 없을 경우 최소 유지 커넥션 갯수 -->
        <property name="minIdle" value="20"/>
        <!-- 최대 대기시간(초) : 초과시 연결실패 오류 발생 -->
        <property name="maxWait" value="5"/>
    </bean>
    
    <!-- JdbcTemplate 객체 설정 -->
    <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
cs

9)DAO 생성 -인터페이스를 통해 구조 생성


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package kr.spring.board.dao;
 
import java.util.List;
 
import kr.spring.board.model.BoardVO;
 
public interface BoardDAO {
    //뼈대 생성
    public void insertBoard(BoardVO board);
    public int getBoardCount();
    public List<BoardVO> getBoardList(int startRow,int endRow);
    public BoardVO getBoard(int num);
    public void updateBoard(BoardVO board);
    public void deleteBoard(int num);
}
 
cs

 

BoardDAOImpl class 생성 implements BoardDAO 로 불러오기


10)Service 생성


interface BoardDAO 복붙


11)insertBoard() 메서드 작업


BoardDAOImpl에서 insertBoard() 메서드 작업

 

BoardServiceImpl에서 insertBoard() 작업

 

BoardDAOImpl에서 Database 관련 연동 작업

BoardServiceImpl에서 BoardDAOImpl 메서드 호출

 

- DB액세스에 필요한 CRUD는 -> DAO 이다

- 사용자의 요구에 맞게 DAO의 CRUD를 응용 조합해서 사용하는 기능은 -> SERVICE 이다.


12)유효성 체크 및 에러코드 메세지 작업


messages 폴더와 validation.properties 생성
에러코드와 에러메시지 설정
에러메세지 빈 설정과 경로 지정
Validator 클래스 만들기


12)유효성 체크 활용 및 write 메서드 활용


 

 

유효성 체크

     @RequestMapping(post)로 form입력 데이터를 빈에 담아 전송    service                      

insertForm.jsp                      ->                  BoardController.java      -> boardService.insertBoard

DAO

-> boardDAO.insertBoard         ->      DB저장

 

반응형