본문 바로가기
JSP

221206 Board 만들기

오라클 저장

 

text(자바파일 아님. text파일)

create table users(
    id varchar2(30) PRIMARY Key,
    pw varchar2(30) not null,
    name varchar2(30) not null,
    email varchar2(30) UNIQUE,
    gender char(1) check (gender in ('f', 'm'))
);

create table board(
    bno number(10) primary key,
    writer varchar2(30) not null,--user와 1대n관계인데 비식별이라 자동으로 foreing key
    title varchar2(50) not null,
    content varchar2(500),
    regdate date default sysdate,
    hit number(10) default 0
);

create SEQUENCE board_seq nocache;--설정안하면 자동으로 1부터 증가

 

기본 페이지 4개

board_write

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@include file="../include/header.jsp" %>

<div align="center" class="div_center">
	<h3>게시판 글 작성 페이지</h3>
	<hr>
	
	<form action="registForm.board" method="post">
		<table border="1" width="500">
			<tr>
				<td>작성자</td>
				<td>
					<input type="text" name="writer" size="10" required>
				</td>
			</tr>
			<tr>
				<td>글 제목</td>
				<td>
					<input type="text" name="title" required>
				</td>
			</tr>
			<tr>
				<td>글 내용</td>
				<td>
					<textarea rows="10" style="width: 95%;" name="content"></textarea>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="작성 완료">
					&nbsp;&nbsp;
					<input type="button" value="목록" onclick="location.href='board_list.board'">         
				</td>
			</tr>
			
		</table>
	</form>
	
</div>

<%@include file="../include/footer.jsp" %>

write에서 button의 location.href를 통해 '목록'버튼을 누르면 list페이지로 이동가능

 

board_list(board의 메인)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<%@include file="../include/header.jsp" %>

	<div class="container">
		<h3>My Web게시판</h3>

		<table class="table table-bordered">
			<thead>
				<tr>
					<th>글 번호</th>
					<th>작성자</th>
					<th>제목</th>
					<th>날짜</th>
					<th>조회수</th>
				</tr>
			</thead>

			<tbody>
				<tr>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
					<td></td>
				</tr>
			</tbody>
			
			<tbody>
				<tr>
					<td colspan="5" align="right">
						<form action="" class="form-inline" >
						  <div class="form-group">
						    <input type="text" name="search" placeholder="제목검색" class="form-control" >
						  	<input type="submit" value="검색" class="btn btn-default">
							<input type="button" value="글 작성" class="btn btn-default" onclick="location.href='board_write.board'">
						  </div>
						</form> 
					</td>
				</tr>
			</tbody>
		
		</table>
	</div>
	
<%@include file="../include/footer.jsp" %>

list에서 button의 location.href를 통해 '글 작성' 버튼을 누르면 write페이지로 이동 가능

 

board_content

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    

<%@include file="../include/header.jsp" %>

<div align="center" class="div_center">

	<h3>게시글 내용 보기</h3>
	<hr>
	<table border="1" width="500">
		<tr>
			<td width="20%">글번호</td>
			<td width="30%"></td>
			
			<td width="20%">조회수</td>
			<td width="30%"></td>
		</tr>
		<tr>
			<td>작성자</td>
			<td></td>
			
			<td>작성일</td>
			<td ></td>
		</tr>
		
		<tr>
			<td width="20%">글제목</td>
			<td colspan="3"></td>
		</tr>
		<tr>
			<td width="20%">글내용</td>
			<td colspan="3" height="120px"></td>
		</tr>
		
		<tr>
			<td colspan="4" align="center">
				<input type="button" value="목록">&nbsp;&nbsp;
				<input type="button" value="수정">&nbsp;&nbsp;
				<input type="button" value="삭제">&nbsp;&nbsp;
			</td>
		</tr>
	</table>
	
	
	

	

</div>

<%@include file="../include/footer.jsp" %>

 

 

board_modify

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@include file="../include/header.jsp" %>

<div align="center" class="div_center">
	<h3>게시판 글 수정 페이지</h3>
	<hr>
	
	<form action="" method="post">
		
		<table border="1" width="500">
			
			<tr>
				<td>글 번호</td>
				<td></td>
			</tr>
			<tr>
				<td>작성자</td>
				<td><input type="text" name="" value="" readonly></td>
			</tr>
			<tr>
				<td>글 제목</td>
				<td>
					<input type="text" name="" value="">
				</td>
			</tr>
			<tr>
				<td>글 내용</td>
				<td>
					<textarea rows="10" style="width: 95%;" name="">
					</textarea>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" value="수정 하기" onclick="">&nbsp;&nbsp;
					<input type="button" value="목록">        
				</td>
			</tr>
			
		</table>
	</form>
	
</div>

<%@include file="../include/footer.jsp" %>

 

 

이동할 컨트롤러

BoardController

package com.example.controller;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.example.board.service.BoardService;
import com.example.board.service.BoardServiceImpl;


@WebServlet("*.board")
public class BoardController extends HttpServlet {
	private static final long serialVersionUID = 1L;
   
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doAction(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doAction(request, response);
	}
	protected void doAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
				//한글처리
				request.setCharacterEncoding("utf-8");
				
				//요청분기
				String uri = request.getRequestURI();
				String path = request.getContextPath();
				String command =uri.substring(path.length());
				
				System.out.println("요청경로:"+command);
				BoardService service=new BoardServiceImpl();
				
			if(command.equals("/board/board_write.board")) { //등록화면
				request.getRequestDispatcher("board_write.jsp").forward(request, response);
				
			}else if(command.equals("/board/board_list.board")) { //목록화면
				request.getRequestDispatcher("board_list.jsp").forward(request, response);
				
			}else if(command.equals("/board/board_content.board")) { //상세내용화면
				request.getRequestDispatcher("board_content.jsp").forward(request, response);
				
			}else if(command.equals("/board/board_modify.board")) { //수정화면
				request.getRequestDispatcher("board_modify.jsp").forward(request, response);
				
			}else if(command.equals("/board/registForm.board")) {//글 등록
				
				/*
				 * 1.service의 regist메서드로 연결
				 * 2.service에서 등록에 필요한 파라미터를 받습니다.
				 * 3.dao의 void regist()메서드를 생성하고 insert작업
				 * 4.insert이후 컨트롤러에서 리스트로 리다이렉트
				 */
				service.regist(request, response);
				response.sendRedirect("board_list.board");
				
			}
		
	}

}

작성을 완료하면 리다이렉트를 통해 list로 페이지가 이동한다.

아직 작성된 글을 list에 출력하는 코드는 생성하지 않았으나,

service와 DAO를 통해 DB에 저장되는 프로세스는 생성하였다.

 

BoardVO

package com.example.board.model;

import java.sql.Timestamp;

public class BoardVO {
	private int bno;
	private String writer;
	private String title;
	private String content;
	private Timestamp regdate;
	private int hit;
	
	public BoardVO() {}

	public BoardVO(int bno, String writer, String title, String content, Timestamp regdate, int hit) {
		super();
		this.bno = bno;
		this.writer = writer;
		this.title = title;
		this.content = content;
		this.regdate = regdate;
		this.hit = hit;
	}

	public int getBno() {
		return bno;
	}

	public void setBno(int bno) {
		this.bno = bno;
	}

	public String getWriter() {
		return writer;
	}

	public void setWriter(String writer) {
		this.writer = writer;
	}

	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 Timestamp getRegdate() {
		return regdate;
	}

	public void setRegdate(Timestamp regdate) {
		this.regdate = regdate;
	}

	public int getHit() {
		return hit;
	}

	public void setHit(int hit) {
		this.hit = hit;
	}

	@Override
	public String toString() {
		return "BoardVO [bno=" + bno + ", writer=" + writer + ", title=" + title + ", content=" + content + ", regdate="
				+ regdate + ", hit=" + hit + "]";
	}
	
	

}

 

 

BoardDAO

package com.example.board.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.example.util.JDBCUtil;


public class BoardDAO {
	
	private static BoardDAO instance = new BoardDAO();
	
	private BoardDAO() {
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			System.out.println("드라이버클래스 로드에러");
		}
	}
	
	public static BoardDAO getInstance() {
		return instance;
	}
	
	public String URL = "jdbc:oracle:thin:@localhost:1521:xe";
	public String UID = "jsp";
	public String UPW = "jsp";
	
	private Connection conn;
	private PreparedStatement pstmt;
	private ResultSet rs;
	
	public void regist(String writer, String title, String content) {
		
		String sql="insert into board values(board_seq.nextval,?,?,?,sysdate,0)";
		
		try {
			conn=DriverManager.getConnection(URL,UID,UPW);
			
			pstmt=conn.prepareStatement(sql);
			pstmt.setString(1,writer);
			pstmt.setString(2,title);
			pstmt.setString(3,content);
			
			pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			JDBCUtil.close(conn, pstmt, rs);
		}
	}

}

 

 

BoardService

package com.example.board.service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public interface BoardService {
	
	public void regist(HttpServletRequest request, HttpServletResponse response);//등록

}

 

 

BoardServiceImpl

package com.example.board.service;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.example.board.model.BoardDAO;

public class BoardServiceImpl implements BoardService{

	public void regist(HttpServletRequest request, HttpServletResponse response) {
		String writer = request.getParameter("writer");
		String title = request.getParameter("title");
		String content = request.getParameter("content");
		
		BoardDAO dao = BoardDAO.getInstance();
		dao.regist(writer, title, content);

	}
	
}