본 게시물은 아래 링크 게시물을 정리한 글입니다.
1. 오라클 테이블 만들기
게시판에 글을 작성하기 위해 테이블 생성
-> 아래 코드들을 쿼리박스에서 작성하고, 오류없이 잘 나온다면 이 쿼리들은 이클립스에 XML 파일에 옮겨 사용한다.
한줄실행 : CTRL + ENTER
1) MP-BOARD 테이블 생성
CREATE TABLE MP_BOARD(
BNO NUMBER NOT NULL,
TITLE VARCHAR2(100) NOT NULL,
CONTENT VARCHAR2(2000) NOT NULL,
WRITER VARCHAR2(100) NOT NULL,
REGDATE DATE DEFAULT SYSDATE,
PRIMARY KEY(BNO)
)SEGMENT CREATION IMMEDIATE;
SELECT * FROM MP_BOARD;
2) 시퀀스 생성
게시판 번호를 1부터 자동으로 1씩 증가시켜주는 코드
CREATE SEQUENCE MP_BOARD_SEQ
START WITH 1
INCREMENT BY 1;
3) 데이터 입력
INSERT INTO MP_BOARD(BNO, TITLE, CONTENT, WRITER)
VALUES (MP_BOARD_SEQ.NEXTVAL, '제목입니다', '내용입니다', 'DAYKIM');
SELECT * FROM MP_BOARD;
COMMIT; // 데이터 저장
4) src/main/resources/mappers의 boardMapper.xml 파일에다 작성
<!-- 게시판 글 작성 -->
<insert id="insert">
INSERT INTO MP_BOARD( BNO
, TITLE
, CONTENT
, WRITER )
VALUES( MP_BOARD_SEQ.NEXTVAL
, #{title}
, #{content}
, #{writer} )
</insert>
2. 패키지 만들기
1) src/main/java에 만들기
- kr.co.controller
- kr.co.dao
- kr.co.service
- kr.co.vo
역할
controller
- 웹에서 처리해야할 데이터를 받기
- 데이터를 담당할 service 선택하여 호출
- 처리한 데이터를 다음 페이지에서 볼 수 있도록 이동할 페이지 리턴
service
데이터를 dao를 통해 넘겨주거나 받으며 비즈니스 로직을 수행
dao
DB를 통해 데이터를 조회 및 수정, 삭제
vo
DB에 있는 테이블 컬럼 값을 java에서 객체로 다루기 위해 사용
2) kr.co.vo에 BoardVO.java 만들기
그리고 BoardVO 클래스 안 쪽에서 Alt + Shift + s 키 누르면 아래와 같이 나온다.
아래 항목에서 'Generate Getters and Setters' 클릭
package kr.co.vo;
import java.util.Date;
public class BoardVO {
private int bno;
private String title;
private String content;
private String writer;
private Date regdate;
public int getBno() {
return bno;
}
public void setBno(int bno) {
this.bno = bno;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public Date getRegdate() {
return regdate;
}
public void setRegdate(Date regdate) {
this.regdate = regdate;
}
}
3) kr.co.dao에 BoardDAO.java와 BoardDAOImpl.java 만들기
- BoardDAO.java
package kr.co.dao;
import kr.co.vo.BoardVO;
public interface BoardDAO {
// 게시글 작성
public void write(BoardVO boardVO) throws Exception;
}
- BoardDAOImpl.java
package kr.co.dao;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import kr.co.vo.BoardVO;
@Repository
public class BoardDAOImpl implements BoardDAO{
@Inject
private SqlSession sqlSession;
// 게시글 작성
@Override
public void write(BoardVO boardVO) throws Exception{
sqlSession.insert("boardMapper.insert", boardVO);
}
}
4) ko.co.service에 BoardService.java, BoardServiceImpl.java 만들기
- BoardService.java
package kr.co.service;
import kr.co.vo.BoardVO;
public interface BoardService {
// 게시글 작성
public void write(BoardVO boardVO) throws Exception;
}
- BoardServiceImpl.java
package kr.co.service;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import kr.co.dao.BoardDAO;
import kr.co.vo.BoardVO;
@Service
public class BoardServiceImpl implements BoardService{
@Inject
private BoardDAO dao;
// 게시글 작성
@Override
public void write(BoardVO boardVO) throws Exception{
dao.write(boardVO);
}
}
5) kr.co.controller에 BoardController.java 만들기
- BoardController.java
package kr.co.controller;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import kr.co.service.BoardService;
import kr.co.vo.BoardVO;
@Controller
@RequestMapping("/board/*")
public class BoardController {
private static final Logger logger = LoggerFactory.getLogger(BoardController.class);
@Inject
BoardService service;
// 게시판 글 작성 화면
@RequestMapping(value = "/board/writeView", method = RequestMethod.GET)
public void writeView() throws Exception{
logger.info("writeView");
}
// 게시판 글 작성
@RequestMapping(value = "/board/write", method = RequestMethod.POST)
public String write(BoardVO boardVO) throws Exception{
logger.info("write");
service.write(boardVO);
return "redirect:/";
}
}
6) 스프링이 스캔할 수 있도록 root-context.xml에 아래 코드 추가
<!-- scan -->
<context:component-scan base-package="kr.co.service"></context:component-scan>
<context:component-scan base-package="kr.co.dao"></context:component-scan>
<context:component-scan base-package="kr.co.vo"></context:component-scan>
7) src/main/webapp/spring/appServlet/servlet-context.xml에서 component-scat이 'kr.co.controller'로 되어있는지 확인
3. 게시판 작성 기능 구현
1) src/main/webapp/WEB-INF/views에 board 폴더 만들기
2) board 폴더에 writeView.jsp 파일 만들기
3) writeView.jsp 파일에 아래 코드 작성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>게시판</title>
</head>
<body>
<div id="root">
<header>
<h1> 게시판</h1>
</header>
<hr />
<nav>
홈 - 글 작성
</nav>
<hr />
<section id="container">
<form role="form" method="post" action="/board/write">
<table>
<tbody>
<tr>
<td>
<label for="title">제목</label><input type="text" id="title" name="title" />
</td>
</tr>
<tr>
<td>
<label for="content">내용</label><textarea id="content" name="content" ></textarea>
</td>
</tr>
<tr>
<td>
<label for="writer">작성자</label><input type="text" id="writer" name="writer" />
</td>
<tr>
<td>
<button type="submit">작성</button>
</td>
</tr>
</tbody>
</table>
</form>
</section>
<hr />
</div>
</body>
</html>
4. 확인하기
1) Tomcat 서버 실행
2) 주소창에 http://localhost:8080/board/writeView 입력
아래와 같이 나오면 완료
5. 글 작성해보기
1) 글 작성 후 '작성' 버튼 클릭해보기
에러가 발생하는게 맞다.
하지만 위의 링크 에러와는 다르다..
2) 참고한 게시글과는 다른 오류지만 우선 DB에 제대로 저장됐는지 확인하기
입력한 내용 저장이 안 되었다..
에러 메세지가 달랐던 이유가 있나보다.
확인해보자.
***
root-context.mxl 에서 oracle 사이트 계정을 입력하는 줄 알았는데
아래 에서 만든 계정을 입력하는 것이었다.
위의 문제를 해결하고, 게시판에 글 작성 후 다시 작성 버튼을 누르면 아래와 같이 홈 화면이 나온다.
BoardController.java에서 아래와 같은 코드를 작성했었는데,
return "redirect:/"는 홈화면으로 경로를 보내는 것이므로 위와같이 홈 화면이 나오는 것이 맞다.
@RequestMapping(value = "/board/write", method = RequestMethod.POST)
public String write(BoardVO boardVO) throws Exception{
logger.info("write");
service.write(boardVO);
return "redirect:/";
}
위와 같이 모든게 잘 실행 되었다면, 테이블을 다시 확인해보자
잘 추가되었다.
'프로그래밍 > Spring' 카테고리의 다른 글
[게시판] 5. 게시판 목록 기능 구현 (0) | 2021.12.11 |
---|---|
Spring Framework (0) | 2021.12.11 |
[게시판] 3. 한글 인코딩 및 Mybatis, 오라클 연동 (0) | 2021.11.16 |
[게시판] 2. 프로젝트 생성 (0) | 2021.11.11 |
[게시판] 1.데이터베이스 사용자 생성 (0) | 2021.11.11 |