본문 바로가기
프로그래밍/프로젝트

[MVC] 게시판 예제 2) 입력하기

by Luhie 2017. 1. 6.


1. 입력 폼 작성

el과 jstl을 사용하여 불필요한 코드들 생략


boardAdd.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>BOARD ADD</title>
</head>
<body>
<h1>BOARD ADD</h1>
<form action="<c:url value='/board/boardAdd'/>" method="post">
<div>boardPw :</div>
<div>
<input name="boardPw" id="boardPw" type="password" />
</div>
<div>boardTitle :</div>
<div>
<input name="boardTitle" id="boardTitle" type="text" />
</div>
<div>boardContent :</div>
<div>
<textarea name="boardContent" id="boardContent" rows="5" cols="50"></textarea>
</div>
<div>boardName :</div>
<div>
<input name="boardUser" id="boardUser" type="text" />
</div>
<div>
<input type="submit" value="글입력" /> <input type="reset" value="초기화" />
</div>
</form>
</body>
</html>
view raw boardAdd.jsp hosted with ❤ by GitHub




2. controller 작성


BoardController.java

package com.tistory.luahius.web;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.tistory.luahius.service.Board;
import com.tistory.luahius.service.Boardservice;
@Controller
public class BoardController {
@Autowired
private Boardservice boardService;
@RequestMapping(value="/board/boardAdd", method=RequestMethod.GET)
public String boardAdd(){
return "/board/boardAdd";
}
@RequestMapping(value="/board/boardAdd", method=RequestMethod.POST)
public String boardAdd(Board board){
boardService.addBoard(board);
return "redirect:/board/boardList";
}
}


http://localhost/board/boardAdd 를 GET방식으로 요청하면 /board/boardAdd.jsp 를 보여주고

POST방식으로 요청하면 boardService.addBoard(board)메소드를 호출

호출 후 Redirect 해 BoardList로 이동한다.



3. 인터페이스

유지보수를 편리하게 하기 위해 BoardServiceImpl를 생성하고 BoardService인터페이스를 구현한다.


BoardService.java

package com.tistory.luahius.service;
public interface BoardService {
int addBoard(Board board);
}


BoardServiceImpl.java

package com.tistory.luahius.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class BoardServiceImpl implements BoardService{
@Autowired
private BoardDao boardDao;
@Override
public int addBoard(Board board) {
return boardDao.insertBoard(board);
}
}


BoardDao.java

package com.tistory.luahius.service;
public interface BoardDao {
int insertBoard(Board board);
}
view raw BoardDao.java hosted with ❤ by GitHub


BoardDaoImpl.java

package com.tistory.luahius.service;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class BoardDaoImpl implements BoardDao{
@Autowired
private SqlSessionTemplate sqlSession;
private final String BOARD_NS="com.tistory.luahius.BoardMapper.";
@Override
public int insertBoard(Board board) {
return sqlSession.insert(BOARD_NS+"boardAdd", board);
}
}


com.tistory.luahius.BoardMapper. 의 주소는 중복, 변화되지 않으니 변수로 선언해준다.

미리 servlet-context.xml에서 생성해둔 SqlSessionTemplate 객체를 통해 메소드를 호출




4. BoardMapper 작성

namespace + id 즉 com.tistory.luahius.BoardMapper.boardAdd 이란 이름을 호출하면

아래의 쿼리문을 실행해 준다.

parameterType은 내가 어떤 Board인지 자세하게 알려줘야 하며 Board의 변수 명과 동일하게

#{}태그를 사용하면 값을 받아 올수 있다



BoardMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tistory.luahius.BoardMapper">
<insert id="boardAdd" parameterType="com.tistory.luahius.service.Board">
INSERT INTO board(
board_pw,
board_title,
board_content,
board_user,
board_date
) values(
#{boardPw},
#{boardTitle},
#{boardContent},
#{boardUser},
now()
)
</insert>
</mapper>
view raw BoardMapper.xml hosted with ❤ by GitHub




'프로그래밍 > 프로젝트' 카테고리의 다른 글

주제 선정의 어려움 01  (0) 2017.01.09
[MVC] 게시판 예제 1) 준비하기  (0) 2017.01.06
주제선정 최종  (0) 2017.01.02