<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시글 작성</title>
<!-- include libraries(jQuery, bootstrap) -->
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!-- include summernote css/js -->
<link href="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.js"></script>
</head>
<body>
<h1 align="center">게시글 등록 페이지</h1>
<br> <br>
<form action="/board/register.kh" method="post">
<table align="center" border="1">
<tr>
<td>제목</td>
<td> <input type="text" name="boardTitle"> </td>
</tr>
<tr>
<td>작성자</td>
<td><input type="text" name="boardWirter"></td>
</tr>
<tr>
<td>내용</td>
<td><textarea id="summernote" name="boardContents" style="resize:none; width:500px; height:100%;"></textarea>
</td>
</tr>
<tr>
<td>첨부파일</td>
<td> <input type="file" name="boardFile"> </td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value ="등록">
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
<script>
$('#summernote').summernote({
height: 300, // set editor height
minHeight: null, // set minimum height of editor
maxHeight: null, // set maximum height of editor
focus: true, // set focus to editable area after initializing summernote
});
</script>
</body>
</html>
Create table board_tbl(
board_no number primary key,
board_title varchar2(100) not null,
board_contents varchar2(2000) not null,
board_wirter varchar2(30) not null,
board_file varchar2(300),
board_rename varchar2(300),
board_fildpath varchar2(500),
board_count number default 0,
b_create_date date default sysdate,
b_update_date date default sysdate,
b_status varchar2(2) default 'Y'
);
@RequestMapping(value="/board/writeView.kh", method=RequestMethod.GET)
public ModelAndView shoWBoardWirte(ModelAndView mv) {
mv.setViewName("board/boardWriteForm");
return mv;
}
@Controller
public class BoradController {
@Autowired
BoradService bService;
@RequestMapping(value="/board/writeView.kh", method=RequestMethod.GET)
public ModelAndView shoWBoardWirte(ModelAndView mv) {
mv.setViewName("board/boardWriteForm");
return mv;
}
@RequestMapping(value="/board/register.kh", method = RequestMethod.POST)
public ModelAndView registBoard(ModelAndView mv,
@ModelAttribute Board board
) {
try {
int result = bService.registerBoard(board);
mv.setViewName("redirect:/board/list.kh");
}catch (Exception e) {
mv.addObject("mgs",e.getMessage());
mv.setViewName("/common/errorPage");
}
return mv;
}
}
@Controller
선언을 잊지 말것@Autowired
는 스프링에 있는 클래스로 대상에게 의존성을 주입해 새로운 인스텐스로 선언하지 않고도 사용할수있다.@RequestMapping(value="/board/register.kh", method = RequestMethod.POST)
메소드 위에 반드시 써주어야 한다.public ModelAndView registBoard(ModelAndView mv,@ModelAttribute Board board)
@ModelAttribute
를 활용하면 Board의 변수와 같은 값의 form네임은 자동으로 Board클래스의 set해주어 board에 저장된다.@Service
public class BoradServiceImple implements BoradService {
@Autowired
SqlSessionTemplate session;
@Autowired
BoardStore bStore;
@Override
public int registerBoard(Board board) {
int result = bStore.insertBoard(board, session);
return result;
}
}
@Service
해줘야 스프링이 클래스를 인식하고 처리해준다.@Autowired
를 통해 SessionTaplate BoardStore를 new 선언없이 새로운 인스탠스로 만든다.@Repository
public class BoardStoreLogic implements BoardStore{
@Override
public int insertBoard(Board board, SqlSessionTemplate session) {
int result = session.insert("BoardMapper.insertBoard",board);
return result;
}
}
@Repository
를 써줘야 store클래스를 인식하고 스프링이 연결해준다.
int result = session.insert("BoardMapper.insertBoard",board);
이 코드를 통해 mapper와 연결해준다.
nameSpace = BoardMaper
id = insertBoard
insert
는 사용되는 태그이다
board
는 데이터베이스에게 보낼 전달값이다
<?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="BoardMapper">
<insert id="insertBoard">
insert into board_tbl values(seq_board_no.nextval,#{boardTitle},#{boardContents},#{boardWirter},#{boardFile},#{boardRename},#{boardFildpath},default,default,default,default)
</insert>
</mapper>
#{boardTitle}
로 값을 전달할수 있다<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="jdbcTypeForNull" value="NULL"/>
<!-- null값이 있으면 null로 제대로 인식하게 한다. -->
</settings>
<typeAliases>
<typeAlias type="com.kh.junspring.member.domain.Member" alias="Member"/>
<typeAlias type="com.kh.junspring.board.domain.Board" alias="Board"/>
</typeAliases>
<mappers>
<mapper resource="mappers/member-mapper.xml"></mapper>
<mapper resource="mappers/board-mapper.xml"></mapper>
</mappers>
</configuration>
<typeAlias type="com.kh.junspring.board.domain.Board" alias="Board"/>
<mapper resource="mappers/board-mapper.xml"></mapper>