본문 바로가기
Backend

08월 28일 수 | JSP 06 - JSP Java bean

by 구라미 2019. 8. 28.

 

<!-- 액션태그 -->
<!-- 공통된 페이지를 추가하는 방식. -->
공통페이지: <jsp:include page="common.jsp"></jsp:include>
페이지이동: <jsp:forward page="list.jsp"></jsp:forward>
객체생성:   <jsp:useBean id=''></jsp:useBean>



Java Beans 예제 : 계산기

Java Beans는 일종의 특정한 일을 독립적으로 수행하는 컴포넌트이다. 

 

 

 

 

Java Beans로 성적프로그램

DBOpen과 DBClose 클래스를 생성하여 이용하기.

 

디렉토리

 

 

총 6개의 java,jsp파일

 

DB 연결 DBOpen.java
DBClose.java

DAO, DTO (객체)

SungjukDAO.java
SungjukDTO.java
jsp sungjukForm.jsp (폼 작성)
sungjukinst2.jsp (insert하는 jsp)

 

DB연결 - DBOpen.java

package net.utility;
import java.sql.*;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;

public class DBOpen {
	
	public static Connection getConnetion() throws Exception{
		//static -> 클래스명으로 직접 접근 가능하다.
	
		Class.forName("oracle.jdbc.OracleDriver");
		Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@//localhost:1521/xe","java0514","1234");
		return con;		
	}			
}//getConnetion end

 

 

DAO

package net.sungjuk;
import java.sql.Connection;
import java.sql.PreparedStatement;
import net.utility.DBOpen;
import net.sungjuk.SungjukDTO;

public class SungjukDAO {
	//DAO Data Access Object라는 뜻이다.
	public int insert(String uname, int kor, int eng, int mat, int aver, String addr){
		
		int cnt = 0; //초기값 0
		try {			
			//DB연결
			Connection con=DBOpen.getConnetion();
			StringBuilder sql = new StringBuilder();
			//SQL문 작성
			sql.append(" INSERT INTO SUNGJUK(SNO,UNAME,KOR,ENG,MAT,AVER,ADDR,WDATE) "); //칼럼의 순서는 이곳에서.
			sql.append(" VALUES((SELECT NVL(MAX(SNO),0)+1 FROM SUNGJUK) ");
			sql.append(",?,?,?,?,?,?,SYSDATE) "); //직접 쓰는 것은 절대상수 값이다. 
			
			// 4) SQL문 변환
			PreparedStatement pstmt = con.prepareStatement(sql.toString());				
			// ?순서와 ?에 들어갈 자료형 주의
			pstmt.setString(1, uname);
			pstmt.setInt(2, kor);
			pstmt.setInt(3, eng);
			pstmt.setInt(4, mat);
			pstmt.setInt(5, aver);
			pstmt.setString(6, addr);
			
			//실행
			cnt = pstmt.executeUpdate();				
			} catch(Exception e){
				System.out.println("행추가일때: "+e);
		} 
		
		return cnt;
	}//insert end
	
	public int insert(SungjukDTO dto){
		int cnt=0;
		try{
			Connection con=DBOpen.getConnetion();
			StringBuilder sql = new StringBuilder();
			//SQL문 작성
			sql.append(" INSERT INTO SUNGJUK(SNO,UNAME,KOR,ENG,MAT,AVER,ADDR,WDATE) "); //칼럼의 순서는 이곳에서.
			sql.append(" VALUES((SELECT NVL(MAX(SNO),0)+1 FROM SUNGJUK) ");
			sql.append(",?,?,?,?,?,?,SYSDATE) "); //직접 쓰는 것은 절대상수 값이다. 
			
			// 4) SQL문 변환
			PreparedStatement pstmt = con.prepareStatement(sql.toString());				
			// ?순서와 ?에 들어갈 자료형 주의
			pstmt.setString(1, dto.getUname());
			pstmt.setInt(2, dto.getKor());
			pstmt.setInt(3, dto.getEng());
			pstmt.setInt(4, dto.getMat());
			pstmt.setInt(5, dto.getAver());
			pstmt.setString(6, dto.getAddr());
			
			//실행
			cnt = pstmt.executeUpdate();
		}catch(Exception e){
			System.out.println("행추가일때: "+e);
		}
		return cnt;
	}
	
}

 

DTO

package net.sungjuk;
import java.sql.Connection;
import java.sql.PreparedStatement;
import net.utility.DBOpen;

public class SungjukDTO {
	//DAO Data Transfer Object라는 뜻이다. 데이터 전송 객체이다.
	//Value Object
	//SungjukVO, SungjukDataBean
	//1) 테이블의 칼럼과 1:1 매칭되는 필드를 Private 속성으로 접근제어 선언하고 
	//2) getter, setter함수를 작성한다.
	//3) Source -> Generate Getters and Setters로 자동추가 alt+shift+s+r
	
	//1) sungjuk 테이블의 칼럼을 기준으로 field를 선언한다.
	private int sno; //Primary key인 sno
	//함수를 이용해 private 접근.
	private String uname;
	private int kor;
	private int eng;
	private int mat;
	private int aver;
	private String addr;
	private String wdate;
	
	public SungjukDTO(){} //생성자함수
	
	
	//2) 각 field에 접근할 수 있는 getter, setter 함수

	public int getSno() {
		return sno;
	}

	public void setSno(int sno) {
		this.sno = sno;
	}

	public String getUname() {
		return uname;
	}

	public void setUname(String uname) {
		this.uname = uname;
	}

	public int getKor() {
		return kor;
	}

	public void setKor(int kor) {
		this.kor = kor;
	}

	public int getEng() {
		return eng;
	}

	public void setEng(int eng) {
		this.eng = eng;
	}

	public int getMat() {
		return mat;
	}

	public void setMat(int mat) {
		this.mat = mat;
	}

	public int getAver() {
		return aver;
	}

	public void setAver(int aver) {
		this.aver = aver;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getWdate() {
		return wdate;
	}

	public void setWdate(String wdate) {
		this.wdate = wdate;
	}

	//개발자들이 에러 확인용으로 주로 사용
	//Source -> Generate toString()...
	@Override
	public String toString() {		
		return "SungjukDTO [sno="+ sno +", uname="+ uname +" ,kor=" + kor +
				",eng="+ eng +", mat"+ mat +", addr="+ addr +", wdate="+ wdate +"]";
	}	
}

 

 

form양식은 전에 만든것과 같다.

 

 

댓글