Spring/Spring 공부

[spring] security 2. Board register 게시판 작성 + 저장

congs 2023. 6. 22. 22:01

1. com.myweb.www.domain폴더에 BoardVO 생성

package com.myweb.www.domain;

public class BoardVO {

	/* create table board (
    -> bno bigint not null auto_increment,
    -> title varchar(200) not null,
    -> content text not null,
    -> writer varchar(100),
    -> reg_at datetime default now(),
    -> mod_at datetime default now(),
    -> read_count int default 0,
    -> primary key (bno)
    -> );
	 * */
	private long bno;
	private String title;
	private String content;
	private String writer;
	private String regAt;
	private String modAt;
	private int readCount;
	public long getBno() {
		return bno;
	}
	public void setBno(long 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 String getRegAt() {
		return regAt;
	}
	public void setRegAt(String regAt) {
		this.regAt = regAt;
	}
	public String getModAt() {
		return modAt;
	}
	public void setModAt(String modAt) {
		this.modAt = modAt;
	}
	public int getReadCount() {
		return readCount;
	}
	public void setReadCount(int readCount) {
		this.readCount = readCount;
	}
	@Override
	public String toString() {
		return "BoardVO [bno=" + bno + ", title=" + title + ", content=" + content + ", writer=" + writer + ", regAt="
				+ regAt + ", modAt=" + modAt + ", readCount=" + readCount + "]";
	}
	public BoardVO(long bno, String title, String content, String writer, String regAt, String modAt, int readCount) {
		super();
		this.bno = bno;
		this.title = title;
		this.content = content;
		this.writer = writer;
		this.regAt = regAt;
		this.modAt = modAt;
		this.readCount = readCount;
	}
	public BoardVO() {};
	
}

 


 

2. com.myweb.www.controller폴더에 BoardController 생성

package com.myweb.www.controller;

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;

import com.myweb.www.domain.BoardVO;
import com.myweb.www.service.BoardService;

@RequestMapping("/board/*")
@Controller
public class BoardController {

	private static final Logger log = LoggerFactory.getLogger(BoardController.class);
	@Inject
	private BoardService bsv;
	
}

3. com.myweb.www.service폴더에

                     BoardService (Interface), BoardServiceImpl (class) 생성

package com.myweb.www.service;

public interface BoardService {

}
package com.myweb.www.service;

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import com.myweb.www.controller.BoardController;
import com.myweb.www.domain.BoardVO;
import com.myweb.www.repository.BoardDAO;

@Service
public class BoardServiceImpl implements BoardService{

	private static final Logger log = LoggerFactory.getLogger(BoardServiceImpl.class);
	
	@Inject
	private BoardDAO bdao;

}

4. com.myweb.www.repository폴더에  BoardDAO (Interface)  생성

package com.myweb.www.repository;

import com.myweb.www.domain.BoardVO;

public interface BoardDAO {


}

 


 

5. views폴더안에 board폴더 생성 - register.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>register page</title>
</head>
<body>

<form action="/board/register" method="post">
 	title : <input type="text" name="title"> <br>
   	writer : <input type="text" name="writer"> <br>
   	content : <input type="text" name="content"><br>
   	<button type="submit" id="regBtn">등록</button> <br>
</form>
</body>
</html>

 


 

6. views폴더안 home.jsp에 controller안 /register로 이동하는 버튼 생성

( /board/list 목록으로 이동은 미리 생성 )

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page session="false" %>
<html>
<head>
	<title>index</title>
</head>
<body>
<h1>
	Hello world!  
</h1>

<a href="/board/register"><button type="button">글 등록</button></a>
<a href="/board/list"><button type="button">글 목록</button></a>
</body>
</html>

 


 

7.  BoardController에서 register관련 코드 작성 -> 연결해서 mapper까지 작성

  1. @GetMapping("/register") 으로 이동하는 메서드 생성
  2. @PostMapping("/register") 으로 DB에 저장하는 메서드 생성

package com.myweb.www.controller;

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.myweb.www.domain.BoardVO;
import com.myweb.www.service.BoardService;

@RequestMapping("/board/*")
@Controller
public class BoardController {

	private static final Logger log = LoggerFactory.getLogger(BoardController.class);
	@Inject
	private BoardService bsv;
	
	@GetMapping("/register")
	public void register() {
	}
	
	@PostMapping("/register")
	public String register(Model m, BoardVO bvo) {
		log.info(">>>bvo : "+ bvo);
		int isOk = bsv.boardRegister(bvo);
		return "home";
	}
}


package com.myweb.www.service;

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import com.myweb.www.controller.BoardController;
import com.myweb.www.domain.BoardVO;
import com.myweb.www.repository.BoardDAO;

@Service
public class BoardServiceImpl implements BoardService{

	private static final Logger log = LoggerFactory.getLogger(BoardServiceImpl.class);
	
	@Inject
	private BoardDAO bdao;
	
	@Override
	public int boardRegister(BoardVO bvo) {
		log.info("board reigster in");
		return bdao.insert(bvo);
	}
}


<?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="com.myweb.www.repository.BoardDAO">
 
 <insert id="insert">
 	insert into board (title, writer, content)
 	values (#{title}, #{writer}, #{content})
 </insert>
 
 
 </mapper>

 


 

== 출력 화면 ==