글쓰기 버튼 클릭시 게시판 작성 페이지(boardwrite.jsp)로 이동
게시글 제목, 게시글 내용 작성 후 [작성완료] 버튼 클릭
데이터베이스에 작성된 게시글 데이터 하나 추가(게시글제목, 게시글내용, 작성된시간, 작성자ID)
<%@ 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>
MySQL에서 테이블, 컬럼 등 만들기
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>
<%@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");
}
%>
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;
}
}
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;
}
}
1) BoardDTO 타입 객체 board 생성 후 파라미터 셋팅
2) BoardDAO 타입 객체 bdao 생성 후 bdao.writeBoard에 board 객체 넘겨줌(처리쪽으로 보내기)
데이터베이스 처리
1) BoardDTO 객체 받아서 writeBoard 메소드 생성
9번 이후
2) BoardMapper.xml에 작성한 insert문 insert("Board.insertBoard",board) 리턴
<?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>
8 - 2)에서 리턴한 불린타입의 값 if문으로 흐름 나누기
BoardDAO bdao = new BoardDAO();
if(bdao.writeBoard(board)){
//성공하면 main.jsp로 이동
response.sendRedirect("main.jsp");
}
else{
//실패하면 boardwrite.jsp로 이동
response.sendRedirect("boardwrite.jsp");
}
<typeAlias type="dto.BoardDTO" alias="boarddto" /> 추가
<mapper resource="mapper/BoardMapper.xml"/> 추가