JSP_4강_2_Member테이블_DAO_회원 추가

열라뽕따히·2024년 3월 19일

JSP

목록 보기
19/43

member_insert.jsp


=============================코드=============================

<%@page import="com.member.model.MemberDTO"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
    	List<MemberDTO> list = (List<MemberDTO>)request.getAttribute("List");
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<div align = "center">
		<hr width = "30%" color = "red">
			<h3>Member 테이블 회원 추가</h3>
		<hr width = "30%" color = "red">
		<br/> <br/>
		
		 
			<form method = "post" action ="<%= request.getContextPath() %>/insert_ok">
				<table border = "1" width = "350">
					<tr>
						<th>회원 아이디</th>
						<td>
							<input type = "text" name = "id">
						</td>
					</tr>
					
					<tr>
						<th>회원 이름</th>
						<td>
							<input type = "text" name = "name">
						</td>
					</tr>
					
					<tr>
						<th>회원 비밀번호</th>
						<td>
							<input type = "text" name = "pwd">
						</td>
					</tr>
					
					<tr>
						<th>회원 나이</th>
						<td>
							<input type = "text" name = "age">
						</td>
					</tr>
					
					<tr>
						<th>회원 마일리지</th>
						<td>
							<input type = "text" name = "mileage">
						</td>
					</tr>
					
					<tr>
						<th>회원 직업</th>
						<td>
							<input type = "text" name = "job">
						</td>
					</tr>
					
					<tr>
						<th>회원 주소</th>
						<td>
							<input type = "text" name = "addr">
						</td>
					</tr>
										
					<tr>
						<td colspan = "2" align = "center">
							<input type = "submit" value = "회원등록"> &nbsp;&nbsp;&nbsp;
							<input type = "reset" value = "다시 작성">
						</td>
					</tr>
					
				</table>
			</form>
		
	</div>
</body>
</html>



MemberDAO에서
회원을 등록할 insertMember() 메서드 생성


=============================코드=============================

// member 테이블에 회원을 추가하는 메서드  
	public int insertMember(MemberDTO dto) {
		int result = 0, count = 0;
		
		try {
			// 1단계와 2단계를 같이 진행! : 오라클 드라이버 로딩 및 데이터베이스와 연결 진행
			openConn();
			
			// 3단계 : DB에 전송할 SQL문 작성
			sql = "select max(memno) from member";
			
			// 4단계 : SQL문을 DB 전송 객체에 인자로 전달
			pstmt = con.prepareStatement(sql);
			
			// 5단계 : SQL문을 DB에 전송 및 실행
			rs = pstmt.executeQuery();
			
			if(rs.next()) {
				count = rs.getInt(1);  // max 값을 가져옴
			}
			
			// 3단계 : DB에 전송할 SQL문 작성
			sql = "insert into member values(?, ?, ?, ?, ?, ?, ?, ?, sysdate)";
						
			// 4단계 : SQL문을 DB 전송 객체에 인자로 전달
			pstmt = con.prepareStatement(sql);
			
			// 4-1단계 : 플레이스 홀더(?)에 데이터를 배정
			pstmt.setInt(1, count+1);
			pstmt.setString(2, dto.getMemid());
			pstmt.setString(3, dto.getMemname());
			pstmt.setString(4, dto.getPwd());
			pstmt.setInt(5, dto.getAge());
			pstmt.setInt(6, dto.getMileage());
			pstmt.setString(7, dto.getJob());
			pstmt.setString(8, dto.getAddr());
			
			// 5단계 : SQL문을 DB에 전송 및 실행
			result = pstmt.executeUpdate();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			// 6단계 : DB에 연결되어 있던 자원 종료하기
			closeConn(rs, pstmt, con);
		}
		return result;
	}



com.member.controller 패키지 에서

insert_ok 서블릿 생성


=============================코드=============================

package com.member.controller;

import java.io.IOException;
import java.io.PrintWriter;

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 com.member.model.MemberDAO;
import com.member.model.MemberDTO;


@WebServlet("/insert_ok.go")
public class InsertOkServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
   
    public InsertOkServlet() {
        super();
        
    }

	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 요청 : member 테이블에 회원 등록을 요청
		// 응답 : member 테이블에 회원 등록 폼 페이지에서 넘어온 데이터를 잘 저장하는 비즈니스 로직
		
		// 한글 깨짐 방지 설정 작업 진행
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset = UTF-8");  // html 태그 작성할 때 꼭 필요!(정보 추가 혹은 삭제, 수정 시)
		
		// 1단계 : 회원 등록 폼 페이지에서 넘어온 데이터들을 받아주자
		String member_id = request.getParameter("id").trim();
		String member_name = request.getParameter("name").trim();
		String member_pwd = request.getParameter("pwd").trim();
		String member_age = request.getParameter("age").trim();
		String member_mileage = request.getParameter("mileage").trim();
		String member_job = request.getParameter("job");
		String member_addr = request.getParameter("addr");
		
		// 2단계 : DB에 전송할 DTO 객체의 setter() 메서드의 인자로 파라미터로 받은 값들을 저장
		MemberDTO dto = new MemberDTO();
		
		dto.setMemid(member_id);
		dto.setMemname(member_name);
		dto.setPwd(member_pwd);
		dto.setAge(Integer.parseInt(member_age));
		dto.setMileage(Integer.parseInt(member_mileage));
		dto.setJob(member_job);
		dto.setAddr(member_addr);
		
		// 3단계 : DB 접근 객체를 생성해주자
		MemberDAO dao = MemberDAO.getInstance();
		
		// 4단계 : DAO 객체의 메소드 호출 시 인자로 dto 객체를 넘겨주자
		int check = dao.insertMember(dto);
		
		PrintWriter out = response.getWriter();
		if(check > 0) {
			out.println("<script>");
			out.println("alert('회원 등록 성공!')");
			out.println("location.href = 'select.go'");  // select.go 서블릿으로 다시 넘어감
			out.println("</script>");
		}else {
			out.println("<script>");
			out.println("alert('회원 등록 실패!')");
			out.println("histroy.go(-1)");  // 이전 페이지로 돌아감
			out.println("</script>");
		}
	}

}



main.jsp로 가서 실행해보자


=============================실행=============================

전체 회원 목록 클릭

회원 추가 클릭

회원등록 클릭

확인 클릭

Member 전체회원 목록 리스트로 넘어가며 회원 추가됨

0개의 댓글