본문 바로가기
웹 프로그래밍(풀스택-->java)/웹프로그래밍(백엔드-->java)

20. Jsp와 데이터베이스 연동 5

by 백엔드개발자0107 2021. 11. 30.

자 오늘은 Jsp와 데이터베이스를 연동시켜볼것이다.

 

우리는 지난시간에 DAO 패턴을 적용해서, jsp에서 데이터베이스 연결하고 insert하고 그런부분을 연습하였다.

 

자, 오늘 select사용법을 익혀볼것이다. 우리는 왜 데이터베이스를 사용할까?

 

대부분은 검색하러 사용한다.

 

대부분은 웹사이트는 검색을 이용하고 ,간혹 게시글 올려놓기도 한다.

 

jsp와 데이터베이스 연동, 즉 70프로  이상이 검색이다.

 

memberList(데이터베이스에 저장되어 있는 회원리스트 전체보기를 할 것이다.)

 

계획은 우리가 입력을 하면 우리가 입력과 동시에 select가 되어서 결과를 리턴받아서 

 

화면에 모든 회원들에 대한 정보를 보여주는 소스를 만들어볼것이다.

 

mysqlworkbench한번 봐보자,

 

 

여기서 아이디,이메일,텔,하비까지만 출력해보자

 

mdao.insertMember(mbean);
//회원가입이되었다면 회원정보를 보여주는 페이지로 이동시킴 
response.sendRedirect("MemberberList.jsp");//단순하게 화면 바뀌는 정도만 이용하자

//response.sendRedirect()는 단순하게 화면 바뀌는 정도만 이용하면 될듯하다.

 

//멤버dao클래스가 오라클에 접속해서 정보를 가지고 올것이다. 하지만 한사람에 대한 정보는 자바빈클래스 MemberBean에다가 넣기로 하였다.

//즉 한사람에 대한 정보는 memberBean에 넣을수가 있다.

//결론은 memberbean에 있는 내용을 저장해줄 클래스를 또 만들어야만 한다.

//배열도 가능하다, object클래스인 배열은 모든 클래스의 최상위 루트이기 떄문에

// 어떠한 값도 대입가능하다.

 

/* 단 배열은 단점이 있다. 배열은 처음부터 길이를 정해주어야한다.

즉 레코드의 갯수를 모를수 있다.

그래서, 사용하는 가변길이 클래스가 바로 Vector클래스이다. */

 

/* 

Vector의 배열과의 차이점은 바로 가변길이라는 정해진길이가 아닌 가변이다. 즉 늘어놨다줄어졌다 라는 점이다..

그래서 Arraylist나Vector를 사용할것인데, 나는 Vector를 추천할것이다. */

 

--> 자 Vector 클래스를 이용해보자.!

 

Vector<MemberBean>자 리턴값으로 MemberBean을 받기 위해서 (Vector<?> -->  ?에다가 아무것도 집어넣지 않으면 object클래스이다. --> 자바의 다형성이라고 한다... 팁! ) MemberBean을 넣는다.

 

memberList.jsp

 

<%@page import="model.MemberBean"%>
<%@page import="java.util.Vector"%>
<%@page import="model.MemberDAO"%>
<%@ 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>

<!-- 1. 데이터베이스에서 모든 회원의 정보를 가져온다. 
		2. 테이블 태그를 이용하여 화면에 회원들의 정보를 출력 
  -->

<%
	MemberDAO mdao = new MemberDAO();

	//멤버dao클래스가 오라클에 접속해서 정보를 가지고 올것이다. 하지만 한사람에 대한 정보는 자바빈클래스 MemberBean에다가 넣기로 하였다.
	//즉 한사람에 대한 정보는 memberBean에 넣을수가 있다.
	//결론은 memberbean에 있는 내용을 저장해줄 클래스를 또 만들어야만 한다.
	//배열도 가능하다, object클래스인 배열은 모든 클래스의 최상위 루트이기 떄문에
	// 어떠한 값도 대입가능하다.
/* 	단 배열은 단점이 있다. 배열은 처음부터 길이를 정해주어야한다.
	즉 레코드의 갯수를 모를수 있다.
	그래서, 사용하는 가변길이 클래스가 바로 Vector클래스이다. */
	/* 
	Vector의 배열과의 차이점은 바로 가변길이라는 정해진길이가 아닌 가변이다. 즉 늘어놨다줄어졌다 라는 점이다..
	그래서 Arraylist나Vector를 사용할것인데, 나는 Vector를 추천할것이다. */
	
	
	//회원들의 정보가 얼마나 저장되어있는지 모르기에 가변길이인 Vector를 이용하여 저장해줌 
	Vector<MemberBean> vec = mdao.allSelectMember();
	
	
%>
</body>
</html>

allSelectMember()메소드를 만들었다.

 

MemberDAO.class

 

package model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;


//오라클 데이터베이스에 연결하고 select,insert,update,delete작업을 실행해주는 메소드이다. 
public class MemberDAO {

	String id = "root";
	String pass = "Dahyon0107!";
	String url = "jdbc:mysql://localhost:3306/sys";//접속 url 

	Connection con; //데이터베이스에 접근할수 있도록 설정 
	PreparedStatement pstmt;//데이터베이스에서 쿼리를 실행시켜주는 객체 
	ResultSet rs; // 데이터베이스의 테이블의 결과 리턴받아 자바에 저장해주는 객체 
	
		
	//데이터베이스(mysql)에 접근할수 있도록 도와주는 메소드
	public void getCon() {
			
		try {
			
			//1.해당 데이터베이스를 사용한다고 선언 (클래스를 등록= 오라클용을 사용 )
			Class.forName("com.mysql.jdbc.Driver");
			//2.해당 데이터베이스에 접속 
			con = DriverManager.getConnection(url,id,pass);
			
			
			
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		
		
	}
	
	//데이터 베이스에 한사람의 회원 정보를 저장해주는 메소드 
	public void insertMember(MemberBean mbean) {
		

try{
	
	getCon();
	
	//3. 접속후 쿼리준비하여 쿼리를 사용하도록 설정 
	String sql = "insert into member values(?,?,?,?,?,?,?,?)";
	//4. 쿼리를 사용하도록 설정 
	PreparedStatement pstmt  = con.prepareStatement(sql);//jsp에서 쿼리를 사용하도록 설정 
	//5. ?에 맞게 데이터를 맵핑 
	pstmt.setString(1,mbean.getId());
	pstmt.setString(2,mbean.getPass1());
	pstmt.setString(3,mbean.getEmail());
	pstmt.setString(4,mbean.getTel());
	pstmt.setString(5,mbean.getHobby());
	pstmt.setString(6,mbean.getJob());
	pstmt.setString(7,mbean.getAge());
	pstmt.setString(8,mbean.getInfo());
	
	pstmt.executeUpdate();//insert,update,delete시 사용하는 메소드 
	
	//5. 자원 반납 
	con.close();
	
}catch(Exception e){
	e.printStackTrace();
	
}
		
	}
	
	//모든 회원의 정보를 리턴해주는 메소드 호출 
	public Vector<MemberBean> allSelectMember(){
		
		
		Vector<MemberBean> v = new Vector<MemberBean>();
		
		return v;
	}
	
	
	
	
	
	
}