Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

[9주차] 18. JDBC관련 DAO 클래스를 jsp 파일이 아닌 java파일로 작성 + 17번 게시글 개념 (feat. 페이지 이동하며 데이터를 넘겨주는 여러가지 방법적용 ) 본문

K-DigitalTraining 강의/8. JSP

[9주차] 18. JDBC관련 DAO 클래스를 jsp 파일이 아닌 java파일로 작성 + 17번 게시글 개념 (feat. 페이지 이동하며 데이터를 넘겨주는 여러가지 방법적용 )

이대곤 2022. 7. 14. 00:36

JSP에서 다음 페이지로 데이터를 전달시키는 4가지 방법(참고)

https://ldgeao99-developer.tistory.com/438

 

[9주차] 9. JSP에서 다음 페이지로 데이터를 전달시키는 4가지 방법

* 두번째, 세번째 방식은 get 방식으로 보내는 것과 같음 첫번째 방법 태그의 자식으로 이런 요소를 추가하여, 보내고 싶은 값을 value 속성에 넣어주고, 이동한 페이지에서 request 객체를 통해 접근

ldgeao99-developer.tistory.com

예시

Tip!
insert 작업이 끝난뒤 select 결과를 보여주는 페이지로 이동하는데, 여기서는 수정,삭제, 삽입 등을 할 수 있다.
수정 혹은 삭제 클릭시 대상의 번호 값을 <a>태그의 파라미터로 추가하여 보내는 것을 주의깊게 봐두자.
그리고 이동한 페이지에서는 이 파라미터를 request 객체를 통해 꺼내썻다는 것도.

Tip!
여기서는 다음페이지로 넘어갈 때 알고있던 num 값을 다음페이지로 이동하면서 가져가기 위해 

hidden tpye의 input 요소를 사용하였다.

MemberDao 클래스

package myPkg;

import java.sql.*;
import java.util.ArrayList;

public class MemberDao {
	
	String driver = "oracle.jdbc.driver.OracleDriver";
	String url = "jdbc:oracle:thin:@localhost:1521:orcl";
	String id = "jspid";
	String pw = "jsppw";

	Connection conn = null;
	
	// jsp 파일은 서블릿 파일로 변경될 때 예외처리를 자동으로 해주지만,
	// java 파일이라서 예외처리를 일일이 해줘야 함.
	
	public MemberDao(){
		//1. 드라이버로드
		try {
			Class.forName(driver);
			System.out.println("드라이버 로드 성공");
		} catch (ClassNotFoundException e) {
			System.out.println("드라이버 로드 실패");
		} 
	}
	
	public void getConnection(){
		//2. 계정에 접속
		try {
			conn = DriverManager.getConnection(url, id, pw);
			System.out.print("접속성공: ");
			System.out.println(conn);
		} catch (SQLException e) {
			System.out.println("접속에러");
		}
	}
	
	public ArrayList<MemberBean> getAllMembers() {
		//2.
		getConnection();
		
		ArrayList<MemberBean> list = new ArrayList<MemberBean>();
		
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			//3. SQL 작상 및 분석
			String sql = "select * from member";	
			ps = conn.prepareStatement(sql);
			
			//4. SQL문 실행
			rs = ps.executeQuery();
			
			while(rs.next()) {
				MemberBean bean = new MemberBean();
				
				bean.setNum(rs.getInt("num"));
				bean.setId(rs.getString("id"));
				bean.setPasswd(rs.getString("passwd"));
				bean.setName(rs.getString("name"));
				//Date 타입의 데이터를 가져와 String으로 변환
				bean.setRegister(String.valueOf(rs.getDate("register")));
				
				list.add(bean);
			}
			
		} catch (SQLException e) {
			System.out.println("SQL문 실행중 오류 발생");
		} finally{
			try {
				// 이렇게 null 비교를 해주고 모두 반환하면 더 완벽하다고 하심
				if (conn != null)
					conn.close();
				
				if (ps != null)
					ps.close();
				
				if (rs != null)
					rs.close();
			} catch (SQLException e) {
				System.out.println("접속 종료 실패");
			}
		}
		return list;
	}//getAllMembers()
	
	public int insertMember(MemberBean bean) {
		// 2.
		getConnection();

		PreparedStatement ps = null;
		int cnt = -1;   // 실패하면-1, 성공하면 1 
		
		try {
			//3. SQL 작상 및 분석
			String sql = "insert into member values(m_seq.nextval, ?, ?, ?, sysdate)";	
			ps = conn.prepareStatement(sql);
			
			ps.setString(1, bean.getId());
			ps.setString(2, bean.getPasswd());
			ps.setString(3, bean.getName());
			
			//4. SQL문 실행
			cnt = ps.executeUpdate();			
			
		} catch (SQLException e) {
			System.out.println("SQL문 실행중 오류 발생");
		} finally{
			try {
				// 이렇게 null 비교를 해주고 모두 반환하면 더 완벽하다고 하심
				if (conn != null)
					conn.close();
				
				if (ps != null)
					ps.close();
			} catch (SQLException e) {
				System.out.println("접속 종료 실패");
			}
		}
		
		return cnt;

	}// insertMember()
	
	public MemberBean getMemberByNum(int num) {
		//2.
		getConnection();
		
		MemberBean bean = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {
			//3. SQL 작상 및 분석
			String sql = "select * from member where num = ?";	
			ps = conn.prepareStatement(sql);
			
			ps.setInt(1, num);
			
			//4. SQL문 실행
			rs = ps.executeQuery();
			
			while(rs.next()) {
				bean = new MemberBean();
		
				bean.setNum(rs.getInt("num"));
				bean.setId(rs.getString("id"));
				bean.setPasswd(rs.getString("passwd"));
				bean.setName(rs.getString("name"));
				//Date 타입의 데이터를 가져와 String으로 변환
				bean.setRegister(String.valueOf(rs.getDate("register")));
			}
			
		} catch (SQLException e) {
			System.out.println("SQL문 실행중 오류 발생");
		} finally{
			try {
				// 이렇게 null 비교를 해주고 모두 반환하면 더 완벽하다고 하심
				if (conn != null)
					conn.close();
				
				if (ps != null)
					ps.close();
				
				if (rs != null)
					rs.close();
			} catch (SQLException e) {
				System.out.println("접속 종료 실패");
			}
		}
		return bean;
	}//getMemberByNum()
	
	public int updateMember(MemberBean bean) {
		// 2.
		getConnection();

		PreparedStatement ps = null;
		int cnt = -1; // 실패하면-1, 성공하면 1 이상

		try {
			// 3. SQL 작상 및 분석
			String sql = "update member set id=?, passwd=?, name=? where num = ?";
			ps = conn.prepareStatement(sql);

			ps.setString(1, bean.getId());
			ps.setString(2, bean.getPasswd());
			ps.setString(3, bean.getName());
			ps.setInt(4, bean.getNum());

			// 4. SQL문 실행
			cnt = ps.executeUpdate();

		} catch (SQLException e) {
			System.out.println("SQL문 실행중 오류 발생");
		} finally {
			try {
				// 이렇게 null 비교를 해주고 모두 반환하면 더 완벽하다고 하심
				if (conn != null)
					conn.close();

				if (ps != null)
					ps.close();
			} catch (SQLException e) {
				System.out.println("접속 종료 실패");
			}
		}

		return cnt;
	}// updateMember()
	
	public int deleteMember(int num) {
		// 2.
		getConnection();

		PreparedStatement ps = null;
		int cnt = -1; // 실패하면-1, 성공하면 1 이상

		try {
			// 3. SQL 작상 및 분석
			String sql = "delete from member where num = ?";
			ps = conn.prepareStatement(sql);

			ps.setInt(1, num);

			// 4. SQL문 실행
			cnt = ps.executeUpdate();

		} catch (SQLException e) {
			System.out.println("SQL문 실행중 오류 발생");
		} finally {
			try {
				// 이렇게 null 비교를 해주고 모두 반환하면 더 완벽하다고 하심
				if (conn != null)
					conn.close();

				if (ps != null)
					ps.close();
			} catch (SQLException e) {
				System.out.println("접속 종료 실패");
			}
		}

		return cnt;
	}
}

MemberBean 클래스

package myPkg;

public class MemberBean {
	private int num;
	private String id;
	private String passwd;
	private String name;
	private String register;
	
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPasswd() {
		return passwd;
	}
	public void setPasswd(String passwd) {
		this.passwd = passwd;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getRegister() {
		return register;
	}
	public void setRegister(String register) {
		this.register = register;
	}
}
Comments