참고하여 build path 수정하기
1. 오라클 등록
<!-- oracle -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
<version>18.0.0</version>
</dependency>
2. jdbc 등록
<!-- jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
3. mybatis 등록
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.3</version>
</dependency>
4. mybatis spring 등록
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.2</version>
</dependency>
5. 서블릿 버전 바꿔 주기
<!-- Servlet -->
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
// 1. jdbc 등록
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="fin01" />
<property name="password" value="fin01" />
</bean>
// 2. sqlSessionFactory 등록
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.kgitbank.board.dto"/>
<property name="mapperLocations" value="classpath:com/kgitbank/board/mapper/*.xml"/>
</bean>
// 4. sql 세션 등록
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="10485760" />
</beans:bean>
<?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="member.mybatis.memberMapper">
<select id="checkMember" parameterType="map" resultType="memberDTO">
select * from member where ssn1=#{ssn1} and ssn2=#{ssn2}
</select>
<insert id="insertMember" parameterType="memberDTO">
insert into member values (member_seq.nextval, #{name},#{id},#{passwd},#{ssn1},#{ssn2},#{email},#{hp1},#{hp2},#{hp3}, sysdate)
</insert>
<select id="listMember" resultType="memberDTO">
select * from member
</select>
<delete id="deleteMember" parameterType="int">
delete from member where no = #{no}
</delete>
<select id="getMemberNo" parameterType="int" resultType="memberDTO">
select * from member where no = #{no}
</select>
<update id="updateMember" parameterType="memberDTO">
update member set passwd=#{passwd}, email=#{email}, hp1=#{hp1}, hp2=#{hp2}, hp3=#{hp3} where no = #{no}
</update>
<select id="findMember" parameterType="map" resultType="memberDTO">
select * from member where ${search} like '%'||#{searchString}||'%'
</select>
<select id="searchMember" parameterType="map" resultType="memberDTO">
select * from member where name=#{name} and ssn1=#{ssn1} and ssn2=#{ssn2}
<if test="id != null">
and id=#{id}
</if>
</select>
<select id="getMemberId" parameterType="String" resultType="memberDTO">
select * from member where id = #{id}
</select>
</mapper>
package com.kgitbank.board.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.kgitbank.board.dto.BoardDTO;
@Service
public class BoardMapper {
@Autowired
private SqlSession sqlSession;
public List<BoardDTO> listBoard(int start, int end) {
Map<String, Object> params = new HashMap<>();
params.put("start", start);
params.put("end", end);
return sqlSession.selectList("listBoard", params);
}
public int getCount() {
return sqlSession.selectOne("getCount");
}
public int insertBoard(BoardDTO dto) {
if (dto.getNum() == 0) {
sqlSession.update("newContent");
}else {
sqlSession.update("oldContent", dto.getRe_step());
dto.setRe_step(dto.getRe_step() + 1);
dto.setRe_level(dto.getRe_level() + 1);
}
return sqlSession.insert("insertBoard", dto);
}
public void plusReadcount(int num) {
sqlSession.update("plusReadcount", num);
}
public BoardDTO getBoard(int num, String mode) {
if (mode.equals("content")) plusReadcount(num);
return sqlSession.selectOne("getBoard", num);
}
protected boolean isPassword(int num, String passwd) {
BoardDTO dto = getBoard(num, passwd);
if (dto.getPasswd().equals(passwd)) {
return true;
}
return false;
}
public int deleteBoard(int num, String passwd) {
if (isPassword(num, passwd)) {
return sqlSession.delete("deleteBoard", num);
}
return -1;
}
public int updateBoard(BoardDTO dto) {
if (isPassword(dto.getNum(), dto.getPasswd())) {
return sqlSession.update("updateBoard", dto);
}
return -1;
}
public List<BoardDTO> findBoard(String search, String searchString) {
Map<String, String> params = new HashMap<>();
params.put("search", search);
params.put("searchString", searchString);
return sqlSession.selectList("findBoard", params);
}
}
@service 어노테이션 붙여서 dao 인 것 알려 주기
jsp 파일들을 넣어 준다
package com.kgitbank.board;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.kgitbank.board.dto.BoardDTO;
import com.kgitbank.board.service.BoardMapper;
@Controller
public class BoardController {
@Autowired
private BoardMapper boardMapper;
/*
@RequestMapping(value= {"/", "list_board.do"}, method = RequestMethod.GET)
public String homeBoard() {
return "redirect:list_board.do";
}
*/
@RequestMapping(value="/")
public String index() {
return "index";
}
@RequestMapping(value="list_board.do")
public String listBoard(HttpServletRequest req,
@RequestParam(required=false) String pageNum) {
int pageSize = 5;
if (pageNum == null) pageNum = "1";
int currentPage = (Integer.parseInt(pageNum));
int start = (currentPage-1) * pageSize + 1;
int end = start + pageSize - 1;
int count = boardMapper.getCount();
if (end > count) end = count;
// List<BoardDTO> list = boardDAO.listBoard(startRow, endRow);
List<BoardDTO> list = boardMapper.listBoard(start, end);
req.setAttribute("listBoard", list);
int number = count - start + 1;
int pageBlock = 3;
int pageCount = count/pageSize + (count%pageSize == 0 ? 0 : 1);
int startPage = (currentPage-1)/pageBlock * pageBlock + 1;
int endPage = startPage + pageBlock - 1;
if (endPage > pageCount) endPage = pageCount;
req.setAttribute("number", number);
req.setAttribute("count", count);
req.setAttribute("pageBlock", pageBlock);
req.setAttribute("pageCount", pageCount);
req.setAttribute("startPage", startPage);
req.setAttribute("endPage", endPage);
return "board/list";
}
@RequestMapping(value="/writeForm_board.do", method=RequestMethod.GET)
public String writeForm_board() {
return "board/writeForm";
}
@RequestMapping(value="/writePro_board.do", method=RequestMethod.POST)
public String writePro_board(HttpServletRequest req,
@ModelAttribute BoardDTO dto, BindingResult result) {
if (result.hasErrors()) {
dto.setNum(0);
dto.setRe_step(0);
dto.setRe_level(0);
}
dto.setIp(req.getRemoteAddr());
int res = boardMapper.insertBoard(dto);
if (res>0) {
req.setAttribute("msg", "게시글 등록 성공!! 게시글 목록 페이지로 이동합니다.");
req.setAttribute("url", "list_board.do");
}else {
req.setAttribute("msg", "게시글 등록 실패!! 게시글 등록 페이지로 이동합니다.");
req.setAttribute("url", "writeForm_board.do");
}
return "message";
}
@RequestMapping("/content_board.do")
public String content_board(HttpServletRequest req, int num) {
BoardDTO dto = boardMapper.getBoard(num, "content");
req.setAttribute("getBoard", dto);
return "board/content";
}
@RequestMapping(value="/delete_board.do", method=RequestMethod.GET)
public String deleteForm_board() {
return "board/deleteForm";
}
@RequestMapping(value="/deletePro_board.do", method=RequestMethod.POST)
public String deletePro_board(HttpServletRequest req,
@RequestParam Map<String, String> params) {
int res = boardMapper.deleteBoard
(Integer.parseInt(params.get("num")), params.get("passwd"));
if (res>0) {
req.setAttribute("msg", "게시글 삭제 성공!! 게시글 목록 페이지로 이동합니다.");
req.setAttribute("url", "list_board.do");
}else if (res<0){
req.setAttribute("msg", "비밀번호가 틀렸습니다. 다시 입력해 주세요");
req.setAttribute("url", "content_board.do?num="+params.get("num"));
}else {
req.setAttribute("msg", "게시글 삭제 실패!! 게시글 보기 페이지로 이동합니다.");
req.setAttribute("url", "content_board.do?num="+params.get("num"));
}
return "message";
}
@RequestMapping(value="/update_board.do", method=RequestMethod.GET)
public String updateForm_board(HttpServletRequest req, int num) {
BoardDTO dto = boardMapper.getBoard(num, "update");
req.setAttribute("getBoard", dto);
return "board/updateForm";
}
@RequestMapping(value="/update_board.do", method=RequestMethod.POST)
public String updatePro_board(HttpServletRequest req, BoardDTO dto) {
int res = boardMapper.updateBoard(dto);
if (res>0) {
req.setAttribute("msg", "게시글 수정 성공!! 게시글 목록 페이지로 이동합니다.");
req.setAttribute("url", "list_board.do");
}else if (res<0){
req.setAttribute("msg", "비밀번호가 틀렸습니다. 다시 입력해 주세요");
req.setAttribute("url", "updateForm_board.do?num="+dto.getNum());
}else {
req.setAttribute("msg", "게시글 수정 실패!! 게시글 보기 페이지로 이동합니다.");
req.setAttribute("url", "content_board.do?num="+dto.getNum());
}
return "message";
}
@RequestMapping("/find_board.do")
public String findBoard(HttpServletRequest req) {
String search = req.getParameter("search");
String searchString = req.getParameter("searchString");
int pageSize = 5;
String pageNum = req.getParameter("pageNum");
if (pageNum == null) {
pageNum = "1";
}
int currentPage = (Integer.parseInt(pageNum));
int startRow = (currentPage-1) * pageSize + 1;
int endRow = startRow + pageSize - 1;
int count = 0;
int number = 0;
List<BoardDTO> list = null;
if (search == null) {
count = boardMapper.getCount();
if (endRow > count) endRow = count;
list = boardMapper.listBoard(startRow, endRow);
number = count - startRow + 1;
}else {
list = boardMapper.findBoard(search, searchString);
number = count - startRow + 1;
}
int pageBlock = 3;
int pageCount = count/pageSize + (count%pageSize == 0 ? 0 : 1);
int startPage = (currentPage-1)/pageBlock * pageBlock + 1;
int endPage = startPage + pageBlock - 1;
if (endPage > pageCount) endPage = pageCount;
req.setAttribute("number", number);
req.setAttribute("count", count);
req.setAttribute("pageBlock", pageBlock);
req.setAttribute("pageCount", pageCount);
req.setAttribute("startPage", startPage);
req.setAttribute("endPage", endPage);
req.setAttribute("listBoard", list);
return "board/list";
}
}