Servlet작성 실습 - myemp테이블에 데이터 insert하기
작업순서
[step1]
EmpInsertServlet을 작성한다. "서블릿요청성공"을 sysout으로 출력하도록 코드 작성하기
[step2]
register.html에서 [가입하기] 버튼을 누르면 서블릿이 요청되는지 확인하기
[step3]
EmpDAO클래스를 작성하고 insert메소드 정의하기
우선은 public void insert()로 정의하여 메소드에서 sysout으로 출력하도록 작성한다.
EmpInsertServlet에서 EmpDAO클래스의 insert메소드를 호출하여 호출이 성공적으로 완료되는지 확인한다.
[step4]
EmpInsertServlet에서 클라이언트가 전송한 요청정보를 추출하여 샘플로 출력해보기
String id = req.getParameter("id")
[step5]
EmpDTO클래스를 작성하고 step4가 완료되면 step4에서 추출한 정보를 이용해서 EmpDTO객체를 생성하기
[step6]
EmpDAO의 insert메소드의 매개변수를 수정하여 EmpDTO가 EmpDAO객체로 전달이 잘 되었는지 확인하기. sysout으로 정보를 추출하여 확인한다.
[step7]
EmpDAO클래스의 insert메소드를 완성한다.(CustomerDAO를 참고하여 작업하기)
[step8]
EmpInsertServlet에서 EmpDAO의 insert메소드 호출결과를 sysout으로 출력하여 insert가 잘 됐는지 확인하기
[step9]
EmpInsertServlet에서 출력결과를 응답할 수 있도록 out.print()메소드를 이용하여 적절하게 작업하기
<EmpInsertServlet 클래스 작성>
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet(name = "empinsert",urlPatterns = {"/emp/insert.do"})
public class EmpInsertServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//요청과 응답에 한글 셋팅하기
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
System.out.println("서블릿 요청 성공~!");
//응답 데이터를 브라우저 화면에 출력하기 위해 PrintWriter객체를 생성하고
//응답 데이터를 얻어와 resp.getWriter() printWriter 객체에 담아주기!!
PrintWriter out = resp.getWriter();
//클라이언트의 요청 데이터를 추출하여 변수에 담아주기!!
String deptno = req.getParameter("deptno");
String name = req.getParameter("name");
String id = req.getParameter("id");
String pass = req.getParameter("pass");
String addr = req.getParameter("addr");
int point = Integer.parseInt(req.getParameter("point"));
String grade = req.getParameter("grade");
EmpDTO emp = new EmpDTO(deptno, name, id, pass, addr, grade);
EmpDAO dao = new EmpDAO();
int result = dao.insert(emp);
System.out.println(result+"개 행 삽입 성공!");
if(result>0) {
out.print("<img src='/serverweb/images/jehoon.png'/>");
out.print("<h2>삽입성공</h2>");
}else {
out.print("<h2>삽입실패</h2>");
}
}
}
EmpDAO 클래스
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import jdbc.DBUtil;
public class EmpDAO { // insert 메소드를 구현하여 db에 접근할 객체
public static void main(String[] args) {
}
public int insert(EmpDTO emp) {
String sql ="insert into myemp values(?,?,?,?,?,1000,?)";
Connection con = null;
PreparedStatement ptmt = null;
int result =0;
try {
con = DBUtil.getConnection();
ptmt = con.prepareStatement(sql);
ptmt.setString(1, emp.getDeptno());
ptmt.setString(2, emp.getName());
ptmt.setString(3, emp.getId());
ptmt.setString(4, emp.getPass());
ptmt.setString(5, emp.getAddr());
ptmt.setString(6, emp.getGrade());
result = ptmt.executeUpdate();
}catch(SQLException e) {
e.printStackTrace();
}finally {
DBUtil.close(null, ptmt, con);
}
return result;
}
}
EmpDTO 클래스 작성
public class EmpDTO { // 레코드를 담을 객체
String deptno;
String name;
String id;
String pass;
String addr;
int point;
String grade;
public EmpDTO() {
}
@Override
public String toString() {
return "EmpDTO [deptno=" + deptno + ", name=" + name + ", id=" + id + ", pass=" + pass + ", addr=" + addr
+ ", point=" + point + ", grade=" + grade + "]";
}
//insert용
public EmpDTO(String deptno, String name, String id, String pass, String addr, String grade) {
super();
this.deptno = deptno;
this.name = name;
this.id = id;
this.pass = pass;
this.addr = addr;
this.grade = grade;
}
public String getDeptno() {
return deptno;
}
public void setDeptno(String deptno) {
this.deptno = deptno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}