[spring 실습] 게시판 만들기 - 글 쓰기 기능 만들기
기본 설정
1. pom.xml 설정, java 1.8 버전 맞추기 : integer-ji.tistory.com/183
2. tomcat 8.5 연동, sts 한글 설정 : integer-ji.tistory.com/184
3. .gitignore 설정 하기 : integer-ji.tistory.com/185
4. git 연동 : integer-ji.tistory.com/186
5. Oracle 11g 연동, pom.xml 의존성 추가 : integer-ji.tistory.com/188
6. Oracle Mybatis 연동 : integer-ji.tistory.com/189
* MVC 패턴, package구조 : integer-ji.tistory.com/187
* Spring Legacy Project에 아무것도 없을 때 : integer-ji.tistory.com/232
해당 게시글은 integer-ji.tistory.com/189
이후 이어서 진행 됩니다.
*.xml 쿼리문 추가하기
<insert id="insertProject">
<selectKey resultType="int" keyProperty="proId" order="BEFORE">
SELECT NVL(MAX(PRO_ID),0)+1 FROM TB_PROJECT
</selectKey>
INSERT INTO TB_PROJECT (
PRO_ID,
PRO_TITLE,
PRO_BODY,
PRO_DATE
) VALUES (
#{proId},
#{proTitle},
#{proBody},
SYSDATE
)
</insert>
TB_PROJECT 테이블에 데이터를 추가하기 위해 insert문을 추가합니다.
"SELECT NVL(MAX(PRO_ID),0)+1 FROM TB_PROJECT"를 사용하여 PRO_ID의 값을 조회해 +1을 해주어
proId라는 Values로 넘겨줍니다.
나머지 TB_PROJECT에 필요한 값은 proTitle, proBody, SYSDATE으로 넘겨줍니다.
*DAO.java insert 추가
package com.project.service.dao;
import java.util.List;
import com.project.vo.ProjectVO;
public interface ProjectDAO {
List<ProjectVO> selectProjectList() throws Exception;
void insertProject(ProjectVO projectVO);
}
Tb_Project_SQL.xml에서 설정한 ID(Line 16)을 불러와 줍니다.
*.xml 파일을 읽어주는 설정은 root-context.xml에서 설정해 줍니다.
*Service.java, *ServiceImpl.java insert추가
package com.project.service;
import java.util.List;
import com.project.vo.ProjectVO;
public interface ProjectService {
List<ProjectVO> selectProjectList() throws Exception;
void insertProject(ProjectVO projectVO);
}
package com.project.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.project.service.ProjectService;
import com.project.service.dao.ProjectDAO;
import com.project.vo.ProjectVO;
@Service("projectService")
public class ProjectServiceImpl implements ProjectService {
@Autowired
private ProjectDAO projectMapper;
@Override
@Transactional
public List<ProjectVO> selectProjectList() throws Exception {
return projectMapper.selectProjectList();
}
@Override
public void insertProject(ProjectVO projectVO) {
projectMapper.insertProject(projectVO);
}
}
Dao에서 던저준 insert api를 Service에서 받아 줍니다.
*Controller.java 추가
...생략
/**
* 게시판 등록폼
* @param projectVO
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value = "/projectRegisterForm.do")
public String projectRegisterForm(@ModelAttribute("projectVO") ProjectVO projectVO, Model model) throws Exception {
return "projectRegisterForm";
}
/**
* 글을 등록합니다.
* @return
*/
@RequestMapping(value = "/projectInsert.do")
public String projectInsert(@ModelAttribute("projectVO") ProjectVO projectVO, Model model) {
projectService.insertProject(projectVO);
return "redirect:/projectList.do";
}
...생략
글 쓰기를 하기 위하여 게시판 등록 폼을 호출하는 Api와 글을 등록할 Api 두개를 만들어 줍니다.
글 쓰기 From.jsp 추가
<!-- @@@ 매우 중요 @@@ -->
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!-- src/main/webapp/WEB-INF/view/projectRegisterForm.jsp -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr"/>
<title>Home</title>
</head>
<body>
<h1>Project Register</h1>
<c:url var="insertUrl" value="/projectInsert.do" />
<form:form commandName="projectVO" action="${insertUrl}" name="projectVO" method="post">
<table>
<tbody>
<tr>
<th>제목</th>
<td><form:input path="proTitle" id="proTitle" size="20" maxlength="20" /></td>
</tr>
<tr>
<th>내용</th>
<td><form:textarea path="proBody" id="proBody" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="등록" /></td>
</tr>
</tbody>
</table>
</form:form>
</body>
</html>
글 쓰기를 눌러 이동할 From을 만들어 줍니다.
Line 1. pageEncoding, charset를 utf-8로 설정 안해주면 oracle에 등록할때 한글이 등록이 안됩니다.
꼭 설정해 주세요.
이제 From에 있는 내용은 projectInsert.do를 호출합니다.
Test
글 쓰기 페이지로 진입 할 <a href="projectRegisterForm.do">글 쓰기</a> Url을 만들어 줍니다.
Home으로 다시 돌아가며 글 작성이 잘 되었습니다.
참고 GitHub : github.com/integerJI/spring.git
'코딩공부 > Java Spring' 카테고리의 다른 글
[spring 실습] 게시판 만들기 - 글 삭제 기능 만들기 (0) | 2020.12.30 |
---|---|
[spring 실습] 게시판 만들기 - 글 수정 기능 만들기 (0) | 2020.12.30 |
[spring 기초] mvc project 없음 Spring Legacy Project에 아무것도 없을때 (2) | 2020.07.13 |
[spring 기초] Oracle mybatis 연동, 테이블 조회하기 (0) | 2020.05.17 |
[spring 기초] Oracle 11g 연동, pom.xml 의존성 추가 (0) | 2020.05.17 |