본문 바로가기
코리아 IT아카데미/grid·flex·mySql·jsp

19일차 | Jsp3

by Sharon kim 2022. 2. 28.


ch13


RegisterBean

package ch13;

public class RegisterBean {
	 
	private String id;
	private String pwd;
	private String name;
	private String num1;
	private String num2;
	private String email;
	private String phone;
	private String zipcode;
	private String address;
	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 getNum1() {
		return num1;
	}
	public void setNum1(String num1) {
		this.num1 = num1;
	}
	public String getNum2() {
		return num2;
	}
	public void setNum2(String num2) {
		this.num2 = num2;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	public String getZipcode() {
		return zipcode;
	}
	public void setZipcode(String zipcode) {
		this.zipcode = zipcode;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getJob() {
		return job;
	}
	public void setJob(String job) {
		this.job = job;
	}
}

RegisterDao

package ch13;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

public class RegisterDao {

	private final String JDBC_DRIVER ="com.mysql.cj.jdbc.Driver";
	private final String JDB_URL ="jdbc:mysql://localhost:3306/shopdb?serverTimezone=Asia/Seoul&characterEncoding=UTF-8";
	private final String USER ="root";
	private final String PASS ="asd1234";
	
	public RegisterDao() {

		try {
			Class.forName(JDBC_DRIVER);
		} catch (Exception e) {
			System.out.println("Error : JDBC 드라이버 로딩 실패");
		}
	}

	//메서드 회원정보 리스트를 가져오는 기능 
	public Vector<RegisterBean> getRegisterList(){
		
		Connection connection = null;
		Statement stmt = null;
		ResultSet rs = null;
		Vector<RegisterBean> vList = new Vector <RegisterBean>();
		
		try {
			connection = DriverManager.getConnection(JDB_URL, USER, PASS);
			stmt = connection.createStatement();
			rs = stmt.executeQuery("select * from tblregister");
			
			while(rs.next()) {
				
				RegisterBean bean = new RegisterBean();
				bean.setId(rs.getString("id"));
				bean.setPwd(rs.getString("pwd"));
				bean.setName(rs.getString("name"));
				bean.setNum1(rs.getString("num1"));
				bean.setNum2(rs.getString("num2"));
				bean.setEmail(rs.getString("email"));
				bean.setPhone(rs.getString("phone"));
				bean.setZipcode(rs.getString("zipcode"));
				bean.setAddress(rs.getString("address"));
				bean.setJob(rs.getString("job"));
				
				vList.addElement(bean);
			}
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
			if(rs != null) {
				try {
					rs.close();
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
			if(stmt != null) {
				try {
					stmt.close();
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
			if(connection != null) {
				try {
					connection.close();
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
		}
		
		return vList;
	}
}

DriverTest

package com.company.aboutking.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DriverTest {

	public static void main(String[] args) {
		
		Connection connection;
		String url = 
				"jdbc:mysql://localhost:3306/shopdb?serverTimezone=Asia/Seoul&characterEncoding=UTF-8";
		String userId = "root";
		String pwd = "asd1234";
		
		try {
			//동적 바인딩을 위한 자바 기술
			//컴파일 시점에 문자열로 저장을 해 두고 런타임 시점에 객체로 만들어 버리는 기술
			//mySQL JDBC Driver 이름입니다. (오라클, MSSQL)
			Class.forName("com.mysql.cj.jdbc.Driver"); // 지금 단계에서는 외울 것
			connection = DriverManager.getConnection(url, userId, pwd);
			System.out.println("Success~~~");
			
		} catch (ClassNotFoundException e) {
			
			e.printStackTrace();
			
		} catch (SQLException e) {

			e.printStackTrace();
		}
		
	}

}

order_list

JDBC란

데이터 베이스를 다루기 위한 자바 API(Application programming Interface)
-> 자바 기반으로 프로그램을 작성할 때 개발자에게 데이터베이스를 쉽게 다룰 수 있도록 해주는 것
DBMS-> 마리아 DB, mySQL...을 간편화하기 위해 만들어진 것

: 그래서 하나의 도구를 만들어 놓고 개발자는 도구만 사용하면 각각의 DBMS 내부까지 신경을 쓰지 않고
어떤 DBMS든 쉽게 사용할 수 있게 한다.(리모콘)

JDBC 구성 
JDBC 인터페이스 + JDBC 드라이버

인터페이스
자료구조 set , map , list
                           ㄴadd
                           ㄴremove

1. JDBC Driver 설치(MYSQL)
2. 연동 테스트
3. usingJDBC.jsp

JDBC를 통한 데이터 베이스 연결 핵심 단계

1. JDBC 드라이버의 인스턴스 생성
--> Class.forName("Driver_name");
2. JDBC 드라이버 인스턴스를 통해 DBMS에 대한 연결 매니저 생성
--> Connection con = DriverManager.getConnection("DBURL", "AccountID", "PWD");

3. Statement 생성
--> Statement stmt = con.createStatement();

4. 쿼리문 실행 / ResultSet으로 결과 받음
--> ResultSet rs = stmt.executeQuery("select*from tbl where id = 1");

5. ResultSet 해지
--> rs.close();

6. Statement 해지
--> stmt.close();

7. 데이터베이스와 연결 해지
--> con.close();

usingJDBC.jsp

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.Connection" %>
<%@page import="java.sql.Statement" %>
<%@page import="java.sql.ResultSet" %>
<%@page import="java.util.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%
   		Class.forName("com.mysql.cj.jdbc.Driver");
    	String url = "jdbc:mysql://localhost:3306/shopdb?serverTimezone=Asia/Seoul&characterEncoding=UTF-8";
    	
    	Connection conn = null;
    	Statement stmt = null;
    	ResultSet rs = null;
    	
    	String id="",
    			pwd="",
    			name="",
    			num1 = "",
    			num2 = "",
    			email = "",
    			phone="",
    			zipcode="",
    			address="",
    			job="";
    	
    	int counter = 0;
    	
    	try{
    	conn = DriverManager.getConnection(url,"root","asd1234");
    	stmt = conn.createStatement();
    	rs = stmt.executeQuery("select*from tblregister");
    	
    %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP에서 데이터베이스 연동</title>
</head>
<body bgcolor="#ffffcc">
	<h2>JSP 스크립트릿에서 데이터베이스 연동 예제</h2>
	<h3>회원정보</h3>
	<table bordercolor="#0000ff" border="1">
		<tr>
			<td><strong>ID</strong></td>
			<td><strong>PWD</strong></td>
			<td><strong>NAME</strong></td>
			<td><strong>NUM1</strong></td>
			<td><strong>NUM2</strong></td>
			<td><strong>EMAIL</strong></td>
			<td><strong>PHONE</strong></td>
			<td><strong>ZIPCODE/ADDRESS</strong></td>
			<td><strong>JOB</strong></td>
		</tr>
		<%
			if (rs != null){
				
			while(rs.next()){
			
					id = rs.getString("id");
					pwd = rs.getString("pwd");
					name = rs.getString("name");
					num1 = rs.getString("num1");
					num2 = rs.getString("num2");
					email = rs.getString("email");
					phone = rs.getString("phone");
					zipcode = rs.getString("zipcode");
					address = rs.getString("address");
					job = rs.getString("job");
					
					counter++;
					
		%>
		<tr>
			<td><%=id %></td>
			<td><%=pwd %></td>
			<td><%=name %></td>
			<td><%=num1 %></td>
			<td><%=num2 %></td>
			<td><%=email %></td>
			<td><%=phone %></td>
			<td><%= zipcode %>/<%= address %></td>
			<td><%=job %></td>
		</tr>
		<%
				} //end of while
			}// end of if
		%>
	</table>
	
	total records : <%=counter%>
	<br/>
	<%
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(rs != null){
				rs.close();
			}
			if(stmt != null){
				stmt.close();
			}
			if(conn != null){
				conn.close();
			}
		}
	%>
</body>
</html>

ch14


order_list

자바 빈즈를 이용한 데이터 베이스 연동

1. RegisterBean.java
2. RegisterDao.java --> 패키지 생성


연습 

1. MemberBean.java
2. MemberDao.java 
3. member.jsp

1. MemberBean.java

package ch14;

public class MemberBean {

	private String id;
	private String pwd;
	private String name;
	
	
	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;
	}
	
	
}

2. MemberDao.java 

package ch14;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Vector;

import ch13.RegisterBean;

public class MemberDao {

	private final String JDBC_DRIVER="com.mysql.cj.jdbc.Driver";
	private final String JDB_URL ="jdbc:mysql://localhost:3306/shopdb?serverTimezone=Asia/Seoul&characterEncoding=UTF-8";
	private final String USER = "root";
	private final String PASS = "asd1234";
	
	public MemberDao() {
		
		try {
			Class.forName(JDBC_DRIVER);
		} catch (Exception e) {
			System.out.println("Error : JDBC 드라이버 로딩 실패");
		}
	}
	
	//메서드 회원 정보 리스트를 가져오는 기능
	public Vector<RegisterBean> geRegisterBeans(){
		
		Connection connection = null;
		Statement stmt = null;
		ResultSet rs = null;
		Vector<RegisterBean> vlist = new Vector<RegisterBean>();
		
		try {
			connection = DriverManager.getConnection(JDB_URL, USER, PASS);
			stmt = connection.createStatement();
			rs = stmt.executeQuery("select * from tblregister");
			
			RegisterBean bean = new RegisterBean();
			bean.setId(rs.getString("id"));
			bean.setPwd(rs.getString("pwd"));
			bean.setName(rs.getString("name"));
			
			vlist.addElement(bean);
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}finally {
			if(rs != null) {
				try {
					rs.close();
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
			if(stmt != null) {
				try {
					stmt.close();
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
			if(connection != null) {
				try {
					connection.close();
				} catch (Exception e) {
					// TODO: handle exception
				}
			}
		}
		
		return vlist;
	}
}

3. member.jsp

<%@page import="ch13.RegisterBean"%>
<%@page import="java.util.Vector"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
   <jsp:useBean id="regDao" class="ch13.RegisterDao"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="#ffffcc">
	<h2>Bean을 사용한 데이터베이스 연동 예제</h2>
	<h3>회원정보</h3>
	<table bordercolor="#0000ff" border="1">
		<tr>
			<td><strong>ID</strong></td>
			<td><strong>PWD</strong></td>
			<td><strong>NAME</strong></td>
			<td><strong>NUM1</strong></td>
			<td><strong>NUM2</strong></td>
			<td><strong>EMAIL</strong></td>
			<td><strong>PHONE</strong></td>
			<td><strong>ZIPCODE/ADDRESS</strong></td>
			<td><strong>JOB</strong></td>
		</tr>
		<%
			Vector<RegisterBean> vlist = regDao.getRegisterList();
			int counter = vlist.size();
			System.out.print(counter);
			for(int i =0; i < vlist.size(); i++) {
				RegisterBean bean = vlist.get(i);	
		%>
		<tr>
			<td><%=vlist.get(i).getId() %></td>
			<td><%=bean.getPwd()%></td>	
			<td><%=bean.getName() %></td>	
			<td><%=bean.getNum1() %></td>
			<td><%=bean.getNum2() %></td>
			<td><%=bean.getEmail() %></td>
			<td><%=bean.getPhone() %></td>
			<td><%=bean.getZipcode()%> / <%= bean.getAddress() %></td>
			<td><%=bean.getJob() %></td>
		</tr>
		<%} %>
	</table>
	<br/>
</body>
</html>

ch15


order_list

세션과 쿠키

차이점 : 여러분들 컴퓨터에 저장되는 서버 측 정보가 쿠키입니다.

네이버 로그인 시 (아이디 저장, 자동 로그인)


cookCookie.jsp

여기로를 클릭하면 아래 이미지와 같이 됨

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String cookieName = "myCookie";
		
		Cookie cookie = new Cookie(cookieName, "Apple");
		
		cookie.setMaxAge(60); //60초동안 쿠키를 저장시켜 놓겠다.
		
		response.addCookie(cookie);
		
	%>
	<h1>Example Cookie</h1>
	쿠키를 만듭니다. <br/>
	쿠키 내용은 <a href="tasteCookie.jsp">여기로!!!!!</a>
</body>
</html>

tasteCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>쿠키 확인 하기</h1>
	<%
		Cookie[] cookies = request.getCookies();
		if(cookies != null){
			for(int i = 0; i < cookies.length; i++){
				if(cookies[i].getName().equals("myCookie")){
					System.out.print("쿠키 이름 : " + cookies[i].getName());
					System.out.print("쿠키 값 : " + cookies[i].getValue());
				}
			}
		} 
	%>
</body>
</html>


a14_인터페이스


Interface

package a14_interface;

public class Interface {
	public static void main(String[] args) {
		Switch a = new kitchen_switch();
		Switch b = new livingRoom_switch();
		
		a.on();
		a.off();
		
		b.on();
		b.off();
	}
}

kitchen_switch

package a14_interface;

public class kitchen_switch implements Switch  {
	@Override
	public void on() {
		System.out.println("주방 불을 켭니다.");
		
	}
 	@Override
 	public void off() {
 		System.out.println("주방 불을 끕니다.");
 		
 	}
		



}

livingRoom_switch

package a14_interface;

public class livingRoom_switch implements Switch {

	@Override
	public void on() {
		System.out.println("거실 불을 켭니다.");
		
	}
 	@Override
 	public void off() {
 		System.out.println("거실 불을 끕니다.");
 		
 	}
	

}

Switch

package a14_interface;

public interface Switch {
	public void on();
	public void off();
}

a14_인터페이스2


package a14_인터페이스2;

import java.util.Scanner;

public class Main {
	private Scanner scanner;
	private UserService userService;
	
	public Main(Scanner scanner, UserService userService) {
		this.scanner = scanner;
		this.userService = userService;
	}
	
	public Main(Scanner scanner2) {
		// TODO Auto-generated constructor stub
	}

	public void showMainMenu( ) {
		System.out.println("사용자 관리 프로그램");
		System.out.println("1. 사용자 추가");
		System.out.println("2. 사용자 조회");
		System.out.println("3. 사용자 수정");
		System.out.println("4. 사용자 삭제");
	}
	
	public int inputSelect() {
		System.out.println("명령을 선택해주세요: ");
		int select = scanner.nextInt();
		scanner.nextInt();
		return select;
	}
	
	public boolean mainLogic(int select) {
		boolean flag = true;
		
		if(select == 1) {
			System.out.println("사용자 추가");
			userService.insertUser();
			
		} else if(select == 2) {
			System.out.println("사용자 조회");
			userService.getUser();
			
		} else if(select == 3) {
			System.out.println("사용자 수정");
			userService.updaterUser();
			
		} else if(select == 4) {
			System.out.println("사용자 삭제");
			userService.deleteUser();
			
		} else if(select == 0) {
			System.out.println("프로그램 종료중...");
			flag = false;
			
		} else {
			System.out.println("잘못된 명령입니다.");
		}
		return flag;
	}
		
	
	public void mainLoop( ) {
//		while() {}
			
		
	}
	
	public static void main(String[] args) {
		UserService userService = new UserServiceImplV01();
		
		Main main = new Main(new Scanner(System.in));
	}

	

}

UserService.java

package a14_인터페이스2;

public interface UserService {
	
	/*
	 * CRUD
	 * C : Create 조회
	 * R:  Read 조회
	 * U: Update 수정
	 * D: Delete 삭제
	 *
	 */
	public void insertUser();
	public void getUser();
	public void updaterUser();
	public void deleteUser();
	
}

UserServiceImplV01.java

package a14_인터페이스2;

public class UserServiceImplV01 implements UserService {
	
	@Override
	public void insertUser() {
		System.out.println("사용자를 추가합니다.");
	}
	
	@Override
	public void getUser() {
		System.out.println("사용자 정보를 가져옵니다.");
		
	}
	
	@Override
	public void updaterUser() {
		System.out.println("사용자 정보를 수정합니다.");
		
	}
	
	@Override
	public void deleteUser() {
		System.out.println("사용자 정보를 삭제합니다.");
		
	}

}

UserServicelmplV2.java

package a14_인터페이스2;

public class UserServicelmplV2 implements UserService {
	
	@Override
	public void insertUser() {
	
		
	}
	
	@Override
	public void getUser() {
		
		
	}
	
	@Override
	public void updaterUser() {
		
		
	}
	
	@Override
	public void deleteUser() {
		
		
	}
	
}