

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 }"> </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">
< 1 2 3 >
</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>
'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 |

댓글