참고한 게시글
① mybatis연결
② DB 연동
③ 외부게시글 (SQL Mapper 작성 방법)
개발환경
언어 : JAVA (JDK 11)
서버 : Apache Tomcat 9.0
프레임워크 : MyBatis 3.5.8
DB : OracleXE 11gR2
IDE : Eclipse 2020-12, SQL Developler
WebContent - views 폴더 - stuInsert.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert</title>
</head>
<body>
<form action ='' method='post'>
<table>
<tr>
<th>번호</th>
<td> <input type="text" name ="num" /> </td>
</tr>
<tr>
<th>이름</th>
<td> <input type="text" name ="name" /> </td>
</tr>
<tr>
<th>국어</th>
<td> <input type="text" name ="kor" /> </td>
</tr>
<tr>
<th>영어</th>
<td> <input type="text" name ="eng" /> </td>
</tr>
<tr>
<th>수학</th>
<td> <input type="text" name ="math" /> </td>
</tr>
<tr>
<td colspan="2"> <input type="submit" name ="수정" /> </td>
</tr>
</table>
</form>
</body>
</html>
controller 패키지 - StuInsertController클래스 생성
extends HttpServlet
@WebServlet("/stuInsert")
StuService 변수 생성
기본생성자 : StuService 객체 생성
doGet() 오버라이드
: stuInsert.jsp로 이동
package controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/stuInsert")
public class StuInsertController extends HttpServlet{
private StuService service;
public StuInsertController() {
service = new StuService();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String path = "/views/stuInsert.jsp";
RequestDispatcher dis = req.getRequestDispatcher(path);
dis.forward(req, resp);
}//doGet()
}//class StuInsertController
doPost() 오버라이딩
req.setCharacterEncoding("UTF-8");
: post방식으로 데이터 받을 때 한글깨짐 방지 @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
int num = Integer.parseInt(req.getParameter("num"));
String name = req.getParameter("name");
int kor = Integer.parseInt(req.getParameter("kor"));
int eng = Integer.parseInt(req.getParameter("eng"));
int math = Integer.parseInt(req.getParameter("math"));
StuDTO dto = new StuDTO();
dto.setNum(num);
dto.setName(name);
dto.setKor(kor);
dto.setEng(eng);
dto.setMath(math);
}//doPost()
<insert id = "ins" parameterType="dto.StuDTO">
INSERT INTO studentlist(num, name, kor, eng, math)
VALUES(#{num}, #{name}, #{kor}, #{eng}, #{math})
</insert>
insert("stu.ins", dto)
: "stu.ins"라는 INSERT쿼리문을 실행, dto는 파라미터에 값을 공급할 객체 public int setInsertMethod(SqlSession sqlSession, StuDTO dto) {
return sqlSession.insert("stu.ins", dto);
}
setInsertProcess() 추가
sqlSession
= (Connection) 오라클 드라이버 연결한 SqlSession객체 넣어주기 public int setInsertProcess(StuDTO dto) {
int chk =0;
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionTemplate.getSqlSession();
chk = dao.setInsertMethod(sqlSession, dto);
sqlSession.commit();
} catch (Exception e) {
System.out.println(e.toString());
sqlSession.rollback();
} finally {
sqlSession.close();
}
return chk;
}//setInsertProcess()
service.setInsertProcess(dto);
: 쿼리문 실행resp.sendRedirect("stuList");
: stuList.jsp 로 이동 @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
int num = Integer.parseInt(req.getParameter("num"));
String name = req.getParameter("name");
int kor = Integer.parseInt(req.getParameter("kor"));
int eng = Integer.parseInt(req.getParameter("eng"));
int math = Integer.parseInt(req.getParameter("math"));
StuDTO dto = new StuDTO();
dto.setNum(num);
dto.setName(name);
dto.setKor(kor);
dto.setEng(eng);
dto.setMath(math);
service.setInsertProcess(dto);
resp.sendRedirect("stuList");
}//doPost()
WebContent - views 폴더 - stuUpdate.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Update</title>
</head>
<body>
<form action ='stuUpdate' method='post'>
<table>
<tr>
<th>이름</th>
<td> <input type="text" name ="name" value='${dto.name}'/> </td>
</tr>
<tr>
<th>국어</th>
<td> <input type="text" name ="kor" value='${dto.kor}'/> </td>
</tr>
<tr>
<th>영어</th>
<td> <input type="text" name ="eng" value='${dto.eng}'/> </td>
</tr>
<tr>
<th>수학</th>
<td> <input type="text" name ="math" value='${dto.math}'/> </td>
</tr>
<tr>
<td colspan="2">
<input type='hidden' name='num' value="${dto.num}" />
<input type="submit" name ="commit" value="수정"/> </td>
</tr>
</table>
</form>
</body>
</html>
controller 패키지 - StuUpdateController 클래스 생성
@WebServlet("/memUpdate")
package controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dto.StuDTO;
@WebServlet("/stuUpdate")
public class StuUpdateController extends HttpServlet{
private StuService service;
public StuUpdateController() {
service = new StuService();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
int num = Integer.parseInt(req.getParameter("num"));
String name = req.getParameter("name");
int kor = Integer.parseInt(req.getParameter("kor"));
int eng = Integer.parseInt(req.getParameter("eng"));
int math = Integer.parseInt(req.getParameter("math"));
StuDTO dto = new StuDTO();
dto.setNum(num);
dto.setName(name);
dto.setKor(kor);
dto.setEng(eng);
dto.setMath(math);
req.setAttribute("dto", dto);
String path ="/views/stuUpdate.jsp";
RequestDispatcher dis = req.getRequestDispatcher(path);
dis.forward(req, resp);
}//doGet()
}//class StuUpdateController
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
int num = Integer.parseInt(req.getParameter("num"));
String name = req.getParameter("name");
int kor = Integer.parseInt(req.getParameter("kor"));
int eng = Integer.parseInt(req.getParameter("eng"));
int math = Integer.parseInt(req.getParameter("math"));
StuDTO dto = new StuDTO();
dto.setNum(num);
dto.setName(name);
dto.setKor(kor);
dto.setEng(eng);
dto.setMath(math);
}//doPost()
<update id = "upd" parameterType="dto.StuDTO">
UPDATE studentlist set name=#{name}, kor=#{kor}, eng=#{eng}, math=${math}
WHERE num=#{num}
</update>
public int setUpdateMethod(SqlSession sqlSession, StuDTO dto) {
return sqlSession.update("stu.upd", dto);
}
public int setUpdateProcess(StuDTO dto) {
int chk = 0;
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionTemplate.getSqlSession();
chk = dao.setUpdateMethod(sqlSession, dto);
sqlSession.commit();
} catch (Exception e) {
System.out.println(e.toString());
sqlSession.rollback();
} finally {
sqlSession.close();
}
return chk;
}//setUpdateProcess()
service.setUpdateProcess(dto);
: 쿼리문 실행resp.sendRedirect("stuList");
: stuList.jsp 로 이동 @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
int num = Integer.parseInt(req.getParameter("num"));
String name = req.getParameter("name");
int kor = Integer.parseInt(req.getParameter("kor"));
int eng = Integer.parseInt(req.getParameter("eng"));
int math = Integer.parseInt(req.getParameter("math"));
StuDTO dto = new StuDTO();
dto.setNum(num);
dto.setName(name);
dto.setKor(kor);
dto.setEng(eng);
dto.setMath(math);
service.setUpdateProcess(dto);
resp.sendRedirect("stuList");
}//doPost()
<delete id = "del" parameterType="dto.StuDTO">
DELETE FROM studentlist
WHERE num=#{num}
</delete>
public int setDeleteMethod(SqlSession sqlSession, int num) {
return sqlSession.delete("stu.del", num);
}
public int setDeleteProcess(int num) {
int chk =0;
SqlSession sqlSession = null;
try {
sqlSession = SqlSessionTemplate.getSqlSession();
chk = dao.setDeleteMethod(sqlSession, num);
sqlSession.commit();
} catch (Exception e) {
System.out.println(e.toString());
sqlSession.rollback();
} finally {
sqlSession.close();
}
return chk;
}//setDeleteProcess()
삭제
버튼 누르면 num값 받아서 쿼리문으로 넘겨주기(GET) : StuDeleteController클래스 생성package controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import service.StuService;
@WebServlet("/stuDelete")
public class StuDeleteController extends HttpServlet{
private StuService service;
public StuDeleteController() {
service = new StuService();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int num = Integer.parseInt(req.getParameter("num"));
service.setDeleteProcess(num);
resp.sendRedirect("stuList");
}
}//class StuDeleteController