국비지원 JAVA 풀스택 과정/JAVA

[JSP] 회원관리 프로그램2

ODaram 2022. 12. 13. 16:28
<memberPro.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// 데이터를 처리하는 영역
%>

<% request.setCharacterEncoding("utf-8"); %>
<% // memberPro.jsp의 역할 두가지
	   // 1. VO에 사용자가 입력한 데이터를 설정(주입)한다.
	   // 2. DAO에 있는 INSERT 메서드를 호출해서 사용자가 입력한 데이터(VO에서 얻어온다.)를 데이터 베이스에 저장 %>

<jsp:useBean id ="vo" class="com.member.MemberVO" /> 
<% // userBean 액션태그는 객체를 생성한다. %>
<% // "com.memeber.MemberBean"  == VO 이다. %>

<% // setProperty 액션 태그로  VO의 속성을 초기화한다. 입력폼의 'name 속성값'과 VO의 인스턴스 변수명을 일치시켜야한다. %>
<jsp:setProperty name="vo" property="*" /> 

<jsp:useBean id ="dao" class="com.member.MemberDAO" />


<%
	boolean result = dao.insertMember(vo); 	
	// DAO 빈에 insertMember()를 호출하면서 사용자가 입력한 데이터를 전달한다. 
	// INSERT문의 결과값을 boolean(논리형)으로 받는다.
	
	if(result) {	//INSERT문이 성공하면 result에 true, INSERT문이 실패하면 result에 false가 저장된다.
		
%>
	<script>
		alert("회원가입을 하였습니다.");
		location.href="login.jsp";	 // login.jsp로 이동한다.
	</script>
<%
	}else {
%>
	<script>
		alert("회원가입에 실패하였습니다.");
		history.back(); 	// memberForm.jsp로 되돌아간다.
	</script>
<%
	}
%>

 

<MemberVO.java>

package com.member;                                                                                                                                                                              
                                                                                                                                                                                                 
public class MemberVO {                                                                                                                                                                          
	private String id;	                                                                                                                                                                         
	private String pwd;	                                                                                                                                                                         
	private String name;                                                                                                                                                                         
	private String gender;                                                                                                                                                                       
	private String birth;                                                                                                                                                                        
	private String email;                                                                                                                                                                        
	private String zipcode;                                                                                                                                                                      
	private String addr;                                                                                                                                                                         
	private String hobby[];	//checkbox로 여러개의 데이터를 하나의 변수에 저장하여 전달하므로 배열을 선언하여 받는다.                                                                                                               
	private String job;                                                                                                                                                                          
	                                                                                                                                                                                             
	public String getId() {                                                                                                                                                                      
		return id;                                                                                                                                                                               
	}                                                                                                                                                                                            
	public void setId(String id) {                                                                                                                                                               
		this.id = id;                                                                                                                                                                            
	}                                                                                                                                                                                            
	public String getPwd() {                                                                                                                                                                     
		return pwd;                                                                                                                                                                              
	}                                                                                                                                                                                            
	public void setPwd(String pwd) {                                                                                                                                                             
		this.pwd = pwd;                                                                                                                                                                          
	}                                                                                                                                                                                            
	public String getName() {                                                                                                                                                                    
		return name;                                                                                                                                                                             
	}                                                                                                                                                                                            
	public void setName(String name) {                                                                                                                                                           
		this.name = name;                                                                                                                                                                        
	}                                                                                                                                                                                            
	public String getGender() {                                                                                                                                                                  
		return gender;                                                                                                                                                                           
	}                                                                                                                                                                                            
	public void setGender(String gender) {                                                                                                                                                       
		this.gender = gender;                                                                                                                                                                    
	}                                                                                                                                                                                            
	public String getBirth() {                                                                                                                                                                   
		return birth;                                                                                                                                                                            
	}                                                                                                                                                                                            
	public void setBirth(String birth) {                                                                                                                                                         
		this.birth = birth;                                                                                                                                                                      
	}                                                                                                                                                                                            
	public String getEmail() {                                                                                                                                                                   
		return email;                                                                                                                                                                            
	}                                                                                                                                                                                            
	public void setEmail(String email) {                                                                                                                                                         
		this.email = email;                                                                                                                                                                      
	}                                                                                                                                                                                            
	public String getZipcode() {                                                                                                                                                                 
		return zipcode;                                                                                                                                                                          
	}                                                                                                                                                                                            
	public void setZipcode(String zipcode) {                                                                                                                                                     
		this.zipcode = zipcode;                                                                                                                                                                  
	}                                                                                                                                                                                            
	public String getAddr() {                                                                                                                                                                    
		return addr;                                                                                                                                                                             
	}                                                                                                                                                                                            
	public void setAddr(String addr) {                                                                                                                                                           
		this.addr = addr;                                                                                                                                                                        
	}                                                                                                                                                                                            
	public String[] getHobby() {                                                                                                                                                                 
		return hobby;                                                                                                                                                                            
	}                                                                                                                                                                                            
	public void setHobby(String[] hobby) {                                                                                                                                                       
		this.hobby = hobby;                                                                                                                                                                      
	}                                                                                                                                                                                            
	public String getJob() {                                                                                                                                                                     
		return job;                                                                                                                                                                              
	}                                                                                                                                                                                            
	public void setJob(String job) {                                                                                                                                                             
		this.job = job;                                                                                                                                                                          
	}                                                                                                                                                                                            
}

 

<MemberDAO.java>

package com.member;

import java.sql.Connection;						// java.sql로 들어왔는지 확인작업 필요
import java.sql.PreparedStatement;

public class MemberDAO {
	// 1. 데이터베이스 연결 ( : 커넥션 풀에서 Connection 객체를 얻는다.)
	// 2. 데이터를 처리 (SQL문을 처리 : 'PreparedStatement', 결과값은 ResultSet 객체가 처리)
	
	// 클래스 영역에서 클래스형으로 레퍼런스 변수 선언을 하면 "의존성 주입(반드시 주입)"의 대상이된다.
	// 인스턴스 변수는 초기화 하지 않는다. "가비지컬렉션"이 자동으로 회수한다.
	private DBConnectionMgr pool;	
	
	// 주입하는 방법은 자바에서 두 가지로 제공한다. 
	// 생성자를 사용하는 방법과 setters 메서드(설정 메서드)를 사용하는 방법이다.
	// 의존성 주입은 생성자를 사용하여 주입한다.
	 public MemberDAO() {
		 // 데이터베이스 연결 객체를 얻는 코드는 필수적으로 예외처리를 한다.
		 try { pool = DBConnectionMgr.getInstance(); }
		 catch(Exception e) {e.printStackTrace();} 	// 예외사항을 디테일하게 콘솔뷰로 출력한다.
	 }
	 
	 public boolean insertMember(MemberVO vo) {
		 Connection con = null;			// import 할때 java.sql 선택해야함
		 PreparedStatement pstmt = null;
		 String sql = null;
		 boolean flag = false;
		 
		 // DB 연결과 데이터 처리는 예외처리를 해야한다.
		 try {
			 con = pool.getConnection(); // 커넥션 풀에서 커넥션 객체 하나를 얻는다.
			 sql = "insert into tblMember (id,pwd,name,gender,birth,email,zipcode,addr,hobby,job,regdate)" + " values (?,?,?,?,?,?,?,?,?,?,now())";
			 pstmt = con.prepareStatement(sql);
			 // 쿼리 실행 객체인 pstmt의 setXxx( ) 메서드로 쿼리문의 위치홀더(?)에 VO의 속성 값을 설정한다.
			 pstmt.setString(1, vo.getId());
			 pstmt.setString(2, vo.getPwd());
			 pstmt.setString(3, vo.getName());
			 pstmt.setString(4, vo.getGender());
			 pstmt.setString(5, vo.getBirth());
			 pstmt.setString(6, vo.getEmail());
			 pstmt.setString(7, vo.getZipcode());
			 pstmt.setString(8, vo.getAddr());
			 
			 // 데이터베이스 컬럼의 셀은 여러개의 값을 저장할 수 없으므로 하나의 값으로 변환하는 작업을 한다.
			 // 체크를 했으면 1을 넣고 체크를 안했으면 0을 넣어서 하나의 값으로 만든다.
			 // 사용자가 인터넷과 게임을 체크하면 '10100'로 하나의 결과값을 만든다.
			 String[] hobby = vo.getHobby();	// 체크한 취미를 얻는다.
			 String[] list = {"인터넷", "여행", "게임", "영화", "운동" };		// 리스트랑 비교해서 있으면 1, 없으면 0
			 // list를 선언한 이유 : hobby 배열과 list 배열을 비교하여 같은 원소가 있으면 1, 없으면 0으로 처리한다.
			 char[] hb = {'0', '0', '0', '0', '0'};
			 
			 // hobby 배열의 원소 하나와 모든 list 배열의 원소들을 비교한다. (비교해서 1,0 처리)
			 for (int i=0; i<hobby.length; i++) {
				 for(int j=0; j<list.length; j++) {
					 if(hobby[i].equals(list[j])) { hb[j] = '1';	 } 	// 만약 사용자가 선택한 취미와 같은 취미가 있으면, 배열 hb에 1을 넣는다.
				 }
			 }
			 pstmt.setString(9, new String(hb));
			 // hb는 char형(문자형) 배열이므로 문자열(문자 배열)로 객체화하여 9번째 위치홀더에 설정한다.
			 
			 pstmt.setString(10, vo.getJob());
			 
			 // 쿼리문을 수행할 때는 executeQuery()와 executeUpdate()가 있다.
			 // executeQuery()는 SELECT 문을 수행할 때 사용하고 executeUpdate()는 INSERT,DELETE문을 수행할 때 사용한다.
			 
		 }
		 catch(Exception e) { e.printStackTrace(); }
		 finally { pool.freeConnection(con, pstmt); } // 사용한 객체를 커넥션 풀로 반납한다.
		 
		 return flag;
	 }
	
}


+  com.member > DBConnectionMgr.java 추가

 

<idCheck.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="dao" class="com.member.MemberDAO" />
<% 
	String id = request.getParameter("id");
	 // boolean result = dao.checkId(id);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>아이디 중복 확인</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
</head>
<body>
	<div>
		<h2> 아이디 중복 확인 </h2>
		<p>입력한 아이디는 <strong><%= id %></strong> 입니다.</p>
		<p>
<%
/*
	if(result) out.println("아이디가 중복되어 사용할 수 없습니다.");
	else out.println("입력한 아이디를 사용할 수 없습니다.");
*/
%>
		</p>
		<button onClick="self.close()" class="btn btn-danger">닫기</button>	<!-- button 띄우고 싶으면 style로 조절하기 -->
	</div>
</body>
</html>
<memberPro.jsp>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	// 데이터를 처리하는 영역
%>

<% request.setCharacterEncoding("utf-8"); %>
<% // memberPro.jsp의 역할 두가지
	   // 1. VO에 사용자가 입력한 데이터를 설정(주입)한다.
	   // 2. DAO에 있는 INSERT 메서드를 호출해서 사용자가 입력한 데이터(VO에서 얻어온다.)를 데이터 베이스에 저장 %>

<jsp:useBean id ="vo" class="com.member.MemberVO" /> 
<% // userBean 액션태그는 객체를 생성한다. %>
<% // "com.memeber.MemberBean"  == VO 이다. %>

<% // setProperty 액션 태그로  VO의 속성을 초기화한다. 입력폼의 'name 속성값'과 VO의 인스턴스 변수명을 일치시켜야한다. %>
<jsp:setProperty name="vo" property="*" /> 

<jsp:useBean id ="dao" class="com.member.MemberDAO" />


<%
	boolean result = dao.insertMember(vo); 	
	// DAO 빈에 insertMember()를 호출하면서 사용자가 입력한 데이터를 전달한다. 
	// INSERT문의 결과값을 boolean(논리형)으로 받는다.
	
	if(result) {	//INSERT문이 성공하면 result에 true, INSERT문이 실패하면 result에 false가 저장된다.
		
%>
	<script>
		alert("회원가입을 하였습니다.");
		location.href="login.jsp";	 // login.jsp로 이동한다.
	</script>
<%
	}else {
%>
	<script>
		alert("회원가입에 실패하였습니다.");
		history.back(); 	// memberForm.jsp로 되돌아간다.
	</script>
<%
	}
%>

 

 

 

 

 

 

 

'국비지원 JAVA 풀스택 과정 > JAVA' 카테고리의 다른 글

[JSP] 오류발생  (1) 2022.12.15
[JSP] 우편번호검색  (0) 2022.12.14
[JSP] 회원관리 프로그램  (0) 2022.12.12
[JAVA] 파일 업로드 구현  (0) 2022.12.09
[JAVA] 자동 줄바꿈 처리  (0) 2022.12.09