boardInsert.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<!-- bootstrap 사용하기 위해 필요한 라이브러리 3개! -->
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<!-- Latest compiled JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<div class = "container">
<h2>게시판 만들기</h2>
<div class="panel panel-default">
<div class="panel-heading">SpringMVC 게시판</div>
<div class="panel-body">
<form class="form-horizontal" action="boardInsertData.do" method="post">
<div class="form-group">
<label class="control-label col-sm-2" for="title">제목:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="title" name="title" placeholder="제목을 입력하세요">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="writer">작성자:</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="writer" name="writer" placeholder="작성자를 입력하세요">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="contents">내용:</label>
<div class="col-sm-10">
<textarea rows="10" class="form-control" id="contents" name="contents"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default btn-primary btn-sm">글쓰기</button>
</div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>
BoardMapper.java
package kr.smhrd.mapper;
import java.util.List;
import kr.smhrd.model.BoardVO;
public interface BoardMapper {
public List<BoardVO> boardList();
public void boardInsert(BoardVO vo);
}
BoardMapper.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="kr.smhrd.mapper.BoardMapper">
<select id="boardList" resultType="kr.smhrd.model.BoardVO">
select *
from board
</select>
<insert id="boardInsert" parameterType="kr.smhrd.model.BoardVO">
insert into board(title,writer,contents)
values(
#{title},
#{writer},
#{contents}
)
</insert>
</mapper>
BoardController.java
package kr.smhrd.web;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import kr.smhrd.mapper.BoardMapper;
import kr.smhrd.model.BoardVO;
@Controller // FrontController + Controller(POJO)
public class BoardController {
// DB 쿼리문을 수행할 수 있는 인터페이스 생성
// null pointer exception 뜨면 @Autowired 되어 있는지 확인
@Autowired // DI
private BoardMapper mapper;
// 메소드 : public String 메소드명 ()
@RequestMapping("/basic.do")
// Handler Mapping --> basic.do 라는 요청 url과 basic method를 연결!
public String basic(HttpServletRequest request) {
List<BoardVO> list = mapper.boardList();
// forward방식으로 view에 접근
// : url이 안바뀌고 있기 때문에
// : 특정 값들을 넘겨주기 위해서는 request 담아서 넘겨주면 된다.
// : request객체가 필요하면 메소드의 매개변수로 request를 받겠다고 쓰면 된다!
// ----> Spring framework에서 알아서 관리!
// ★★★객체 바인딩
request.setAttribute("list", list);
return "basic"; // 논리적인 주소 -- ViewResolver -- 물리적인 주소
// basic --> /WEB-INF/views/basic.jsp
}
// 글쓰기 페이지로 이동만 하는 메소드
@RequestMapping("/boardInsert.do")
public String boardInsert() {
return "boardInsert";
}
// 글쓰기를 수행하는 메소드
@RequestMapping("/boardInsertData.do")
public String boardInsertData(BoardVO vo) {
// form태그에서 넘겨주는 데이터를 받아올 때는 매개변수에 받아올 자료형을 넣어주면
// spring framework가 자동으로 해당하는 데이터를 받아온다.
// ** input태그의 name 값 == vo의 field명 == db table column
// xml안쪽에 쿼리문을 작성 --> interface --> controller
// 작성자, 내용, 제목을 받아와서 데이터베이스에 insert 해주는 작업
// 1.interface안에 insert를 수행할 수 있는 메소드 생성
mapper.boardInsert(vo);
// 2. xml파일 안에 interface메소드와 대응될 수 있는 id값을 가지고 있는 태그 생성
// 3. 쿼리문을 작성
return "redirect:/basic.do";
// redirect방식을 사용하고 싶을때는 redirect:/ 를 반드시 붙여준다.
}
}
'Java > Spring' 카테고리의 다른 글
[Spring] MyBatis 프레임워크 (0) | 2022.07.18 |
---|---|
[Spring] Spring Container & Spring Framework 특징 (0) | 2022.07.13 |
[Spring] 게시판 목록(HikariCP) (0) | 2022.07.13 |
[Spring] Database 연결흐름(HikariCP) (0) | 2022.07.13 |
[Spring] 게시판 만들기(Model2) (0) | 2022.07.11 |