본문 바로가기
SPRING

[SPRING] 0915 게시판 만들기-1

by KhyeonS 2022. 9. 15.

 BoardVO클래스 생성

package vo;

public class BoardVO {
	private int idx, readhit, del_info, ref, step, depth;
	private String name, subject, content, pwd, ip, regdate;
	public int getIdx() {
		return idx;
	}
	public void setIdx(int idx) {
		this.idx = idx;
	}
	public int getReadhit() {
		return readhit;
	}
	public void setReadhit(int readhit) {
		this.readhit = readhit;
	}
	public int getDel_info() {
		return del_info;
	}
	public void setDel_info(int del_info) {
		this.del_info = del_info;
	}
	public int getRef() {
		return ref;
	}
	public void setRef(int ref) {
		this.ref = ref;
	}
	public int getStep() {
		return step;
	}
	public void setStep(int step) {
		this.step = step;
	}
	public int getDepth() {
		return depth;
	}
	public void setDepth(int depth) {
		this.depth = depth;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getIp() {
		return ip;
	}
	public void setIp(String ip) {
		this.ip = ip;
	}
	public String getRegdate() {
		return regdate;
	}
	public void setRegdate(String regdate) {
		this.regdate = regdate;
	}
}

BoardDAO 클래스 생성

package dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import vo.BoardVO;

public class BoardDAO {
	
	SqlSession sqlSession;
	public void setSqlSession(SqlSession sqlSession) {
		this.sqlSession = sqlSession;
	}
	
	//전체 게시글 조회
	public List<BoardVO> selectList(){
		List<BoardVO> list = sqlSession.selectList("b.board_list");
		return list;
	}
	
	//새글추가
	public int insert(BoardVO vo) {
		int res=sqlSession.insert("b.board_insert", vo);
		return res;
	}
	
	//상세보기를 위한 게시글 한 건 조회
	public BoardVO selectOne(int idx) {
		BoardVO vo=sqlSession.selectOne("b.board_one", idx);
		return vo;
	}
}

BoardController 클래스 생성

package com.korea.board;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import dao.BoardDAO;
import util.Util;
import vo.BoardVO;

@Controller
public class BoardController {
	
	@Autowired
	HttpServletRequest request;
	
	BoardDAO board_dao;
	public void setBoard_dao(BoardDAO board_dao) {
		this.board_dao = board_dao;
	}
	
	//전체 게시글 조회
	@RequestMapping(value={"/", "/list.do"})
	public String seletList(Model model){
		
		List<BoardVO> list=	board_dao.selectList();
		model.addAttribute("list", list);
		
		
		return Util.Board.VIEW_PATH+ "board_list.jsp";
	}
	
	//새글 작성을 위한 페이지로 전환
	@RequestMapping("/insert_form.do")
	public String insert_form() {
		return Util.Board.VIEW_PATH + "board_write.jsp";
	}
	
	//새글쓰기
	@RequestMapping("/insert.do")
	public String insert(BoardVO vo) {
		
		//ip가져오기
		String ip=request.getRemoteAddr();
		vo.setIp(ip);
		
		int res= board_dao.insert(vo);
		
		return "redirect:list.do";
		
	}
	
	//게시글 상세보기
	@RequestMapping("/view.do")
	public String view(Model model,int idx) {
		
		BoardVO vo =board_dao.selectOne(idx);
		model.addAttribute("vo", vo);
		return Util.Board.VIEW_PATH + "board_view.jsp";
		
	}
}

context-3-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
	
	<bean id="board_daoBean" class="dao.BoardDAO">
		<property name="sqlSession" ref="sqlSessionBean"/>
	</bean>
	
</beans>

servlet-context.xml 에 컨트롤러 생성

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

	<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure -->
	
	<!-- Enables the Spring MVC @Controller programming model -->
	<annotation-driven />

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />

	<!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory -->
	<!-- <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean> -->
	
	<!-- 
	com.korea.db패키지의 컨트롤러를 자동으로 만들어주는 코드
	<context:component-scan base-package="com.korea.db" /> -->
	
	<!-- Autowired기능을 사용하기 위한 속성추가 -->
	<context:annotation-config/>
	
	<!-- 컨트롤러 수동생성 컴트롤러엔 id가 없어도 됨!-->
	<beans:bean id="con" class="com.korea.board.BoardController">
		<beans:property name="board_dao" ref="board_daoBean"/>
	</beans:bean>    

</beans:beans>

그후 util 패키지 만들어 주고 Util 클래스 생성

package util;

public class Util {
	
	public static class Board{
		public static String VIEW_PATH="/WEB-INF/views/board/";
	}
	
	public static class Bbs{
		public static String VIEW_PATH="/WEB-INF/views/bbs/";
	}
}

board.xml 수정

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="b">

	<select id="board_list" resultType="board">
		select * from sboard order by ref DESC, step ASC
	</select>

	<!-- 새글 추가 -->
	<insert id="board_insert" parameterType="board">
		insert into sboard values(
		seq_sboard_idx.nextVal,
		#{name},
		#{subject},
		#{content},
		#{pwd},
		#{ip},
		sysdate,
		0,
		seq_sboard_idx.currVal,
		0,
		0,
		0
		)
	</insert>
	
	<!-- 상세보기 -->
	<select id="board_one" parameterType="int" resultType="board">
		select * from sboard where idx=#{idx}
	</select>
</mapper>

views 폴더 안에 board 폴더 만들고 board_list.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style>
	a{text-decoration:none;}
</style>
</head>
<body>
<table border="1" width="700" align="center">
	<tr>
		<th>번호</th>
		<th width="350">제목</th>
		<th>작성자</th>
		<th>작성일</th>
		<th>조회수</th>
	</tr>
	
	<c:forEach var="vo" items="${list}">
	<tr>
		<td align="center">${vo.idx }</td>
		<td>
		<!-- 댓글일경우 제목을 들여쓰기한다 -->
		<c:forEach begin="1" end="${vo.depth }">&nbsp;</c:forEach>
		
		<!-- 댓글기호 -->
		<c:if test="${vo.depth ne 0 }">ㄴ</c:if>
		
		<a href="view.do?idx=${vo.idx}"><font color="black">${vo.subject}</font></a></td>
		
		<td align="center">${vo.name }</td>
		<td align="center">${fn:split(vo.regdate, ' ')[0]}</td>
		<td align="center">${vo.readhit }</td>
	</tr>
	
	</c:forEach>
	<tr>
		<td colspan="5" align="center">
			&lt; 1 2 3 &gt;
		</td>
	</tr>
	
	<tr>
	<td colspan="5" align="right">
		<input type="button" value="새글작성" onclick="location.href='insert_form.do'"
				style="cusor:pointer">
	</td>
	</tr>
</table>

</body>
</html>


board_write.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	function send_check(f){
		//유효성 체크 했다고 하고
		
		//비밀번호 유효성 체크
		var pwdPattern = /^[A-Za-z0-9]{4,10}$/;

		//영문과 숫자로 이루어진 비밀번호	
		if(!pwdPattern.test(f.pwd.value)){
			alert("비밀번호 형식을 확인하세요");
			return;
		}	
		f.submit();
		
	}
</script>
</head>
<body>
<form method="post" action="insert.do">
<table border="1" align="center" width="610">
<caption>:::새글작성:::</caption>
	<tr>
		<th>제목</th>
		<td><input name="subject" style="width:300px"></td>
	</tr>
	<tr>
		<th>작성자</th>
		<td><input name="name" style="width:300px"></td>
	</tr>
	<tr>
		<th>내용</th>
		<td><textarea name="content" rows="10" cols="70"></textarea></td>
	</tr>
	<tr>
		<th>비밀번호</th>
		<td><input name="pwd" type="password" style="width:300px"></td>
	</tr>
	
	<tr>
	<td colspan="2" align="right">
	 <input type="button" value="등록" onclick="send_check(this.form);">
	 <input type="button" value="취소" onclick="location.href='list.do'">
	 
	</td>
	</tr>
</table>
</form>
</body>
</html>

board_view.jsp 생성

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form>
<input type="hidden" name="idx" value="${vo.idx}">
	<table border="1" width="600">
		<tr>
			<th>제목</th>
			<td>${vo.subject}</td>
		</tr>
		<tr>
			<th>작성자</th>
			<td>${vo.name}</td>
		</tr>
		<tr>
			<th>작성일</th>
			<td>${vo.regdate}</td>
		</tr>
		<tr>
			<td colspan="2"><pre>${vo.content}</pre></td>
		</tr>
		<tr>
			<td colspan="2">
			<input type="button" value="목록으로" onclick="location.href='list.do'">
			<input type="button" value="댓글달기" onclick="reply(this.form);">
			<input type="button" value="삭제" onclick="del(this.form);">
			</td>
		</tr>
	</table>
	
	</form>
</body>
</html>

Board.7z
0.01MB

'SPRING' 카테고리의 다른 글

[SPRING] 09/19 게시판만들기 -3  (1) 2022.09.19
[SPRING] 09/16 게시판만들기-2  (0) 2022.09.16
[SPRING] 09/14 방명록에 사진 첨부  (0) 2022.09.14
[SPRING] 09/13 글쓰기 기능, 수정 추가  (0) 2022.09.13
[SPRING] 09/08  (0) 2022.09.08

댓글