[홈페이지만들기7] 게시글 작성 페이지 생성 및 연결 / DB 연동 (boardwrite.jsp/write_db.jsp 등)

jngyoon·2023년 9월 6일
0

혼공일기

목록 보기
13/24

글쓰기 버튼 클릭시 게시판 작성 페이지(boardwrite.jsp)로 이동
게시글 제목, 게시글 내용 작성 후 [작성완료] 버튼 클릭
데이터베이스에 작성된 게시글 데이터 하나 추가(게시글제목, 게시글내용, 작성된시간, 작성자ID)

1. 글쓰기 버튼에 boardwrite.jsp 링크 연결

	<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>main</title>
</head>
<body>
	<%
		String loginUser = (String)session.getAttribute("loginUser");
		if(loginUser == null){
	%>
			<script>
				alert("로그인 후 이용하세요!");
				location.href = "loginview.jsp";
			</script>
	<%
		}
	%>
	<p><%=loginUser%>님 어서오세요~</p>
	<p><a href="logout.jsp">로그아웃</a></p>
	<hr>
	<div>
		<!--
		글쓰기 버튼 클릭시 게시판 작성 페이지(boardwrite.jsp)로 이동
		게시글 제목, 게시글 내용 작성 후 [작성완료] 버튼 클릭
		데이터베이스에 작성된 게시글 데이터 하나 추가(게시글제목, 게시글내용, 작성된시간, 작성자ID)
		-->
		<a href="boardwrite.jsp">글쓰기</a>	
	</div>
</body>
</html>

2. 데이터 정의 - 데이터 모델링 - 개념적 설계

MySQL에서 테이블, 컬럼 등 만들기

3. boardwrite.jsp 생성 (프론트)

form으로 입력창 만들기 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>boardwrite</title>
</head>
<body>
	<form action="write_db.jsp" method="post">
		<p>
			<input type="text" name="boardtitle">
		</p>
		<p>
			<textarea name="boardcontents"></textarea>
		</p>
		<p>
			<input type="submit" value="작성완료">
		</p>
	</form>
</body>
</html>

4. write_db.jsp 생성 (백) <- 처리 코드만 있으면 됨

<%@page import="dao.BoardDAO"%>
<%@page import="dto.BoardDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<%
	<!-- 데이터(파라미터) 수집 -->
	String boardtitle = request.getParameter("boardtitle");
	String boardcontents = request.getParameter("boardcontents");
	String userid = (String)session.getAttribute("loginUser");

	<!-- 데이터(파라미터) 포장(셋팅) -->
	BoardDTO board = new BoardDTO();
	board.setBoardtitle(boardtitle);
	board.setBoardcontents(boardcontents);
	board.setUserid(userid);
    
    <!-- 처리쪽으로 보내기 -->
    BoardDAO bdao = new BoardDAO();
	if(bdao.writeBoard(board)){
		response.sendRedirect("main.jsp");
	}
	else{
		response.sendRedirect("boardwrite.jsp");
	}
%>

5. BoardDAO.java 생성 (처리할 수 있는 곳)

package dao;

import org.apache.ibatis.session.SqlSession;

import dto.BoardDTO;
import mybatis.SqlMapConfig;

public class BoardDAO {
	private SqlSession sqlsession;
	
	public BoardDAO() {
		sqlsession = SqlMapConfig.getFactory().openSession(true);
	}
	
    // 파라미터 받아오기 
	public boolean writeBoard(BoardDTO board) {		//데이터베이스 처리
		return sqlsession.insert("Board.insertBoard",board) == 1;
	}
	
}

6. BoardDTO.java 생성 (파라미터 포장)

package dto;

public class BoardDTO {
	private int boardnum;
	private String boardtitle;
	private String boardcontents;
	private String regdate;
	private String userid;
	
	public int getBoardnum() {
		return boardnum;
	}
	public void setBoardnum(int boardnum) {
		this.boardnum = boardnum;
	}
	public String getBoardtitle() {
		return boardtitle;
	}
	public void setBoardtitle(String boardtitle) {
		this.boardtitle = boardtitle;
	}
	public String getBoardcontents() {
		return boardcontents;
	}
	public void setBoardcontents(String boardcontents) {
		this.boardcontents = boardcontents;
	}
	public String getRegdate() {
		return regdate;
	}
	public void setRegdate(String regdate) {
		this.regdate = regdate;
	}
	public String getUserid() {
		return userid;
	}
	public void setUserid(String userid) {
		this.userid = userid;
	}
}

7. write_db.jsp 이동

1) BoardDTO 타입 객체 board 생성 후 파라미터 셋팅
2) BoardDAO 타입 객체 bdao 생성 후 bdao.writeBoard에 board 객체 넘겨줌(처리쪽으로 보내기)

8. BoardDAO.java 이동

데이터베이스 처리
1) BoardDTO 객체 받아서 writeBoard 메소드 생성 

9번 이후
2) BoardMapper.xml에 작성한 insert문 insert("Board.insertBoard",board) 리턴
 

9. BoardMapper.xml 생성 후 insert문 작성

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="Board">
	<insert id="insertBoard" parameterType="boarddto">
		insert into t_board (boardtitle,boardcontents,userid)
		values(#{boardtitle},#{boardcontents},#{userid})	<!-- 날아온 세개의 데이터 values로 넣어주기
	</insert>
</mapper>
  

10. write_db.jsp 이동

8 - 2)에서 리턴한 불린타입의 값 if문으로 흐름 나누기

BoardDAO bdao = new BoardDAO();
if(bdao.writeBoard(board)){
	//성공하면 main.jsp로 이동
	response.sendRedirect("main.jsp");
}
else{
	//실패하면 boardwrite.jsp로 이동
	response.sendRedirect("boardwrite.jsp");	
}

cf) config.xml

<typeAlias type="dto.BoardDTO" alias="boarddto" /> 추가
<mapper resource="mapper/BoardMapper.xml"/> 추가

0개의 댓글