상세 컨텐츠

본문 제목

[JSP] 자바빈(JavaBean)?/ 자바빈 사용이유/ 자바DTO(Data Transfer Object)

JSP_

by 쫑메이 2020. 7. 31. 00:00

본문

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[jsp]자바빈(JavaBean)?


 

 

자바빈은 jsp에서 객체를 가져오기 위한 기법으로

데이터 전달 오브젝트 파일

DTO(Data Transfer Object)

라고도 한다

 

 

 

 

 

 

 

 

 

 

 


[jsp] 자바빈(JavaBean)이란?


 

 

자바로 작성된 컴포넌트들 즉, 클래스(Class)를 일반적으로 말한다.

JSP 프로그래밍에는 DTO(Data Transfer Object)나 DAO(Data Access Object)클래스의

객체를 JSP페이지에서 사용하기 위해 사용한다.

 

 

자바빈은 클래스이므로 기존의 자바 클래스를 작성하는 방법과 동일하다.

자바빈의 경우 데이터를 담을 프로퍼티(맴버변수)와 데이터를 가져오거나

세팅하는 기능을 하는 메서드로 구성된다.

 

자바빈은 데이터 전달 오브젝트 파일DTO(Data Transfer Object)라고도 한다

 

 

 

 

 

 

 

 

 

 

 

 


[jsp] 자바빈(JavaBean)VS 서블릿


 

jsp에서 객체를 가져다 사용하지 못하니 기능이 아주 제한적이다

그래서 jsp의 이 단점을 보충하기 위해서 사용하는 기법이 바로 자바빈이다

 

 

서블릿과 자바빈이 유사하게 보이지만 많이 다른데

jsp페이지는 내부적으로 톰캣이 jsp를 java로 변환하여

그것을 다시 컴파일해서 class파일로 바꾼다음 실행한다

 

하지만 서블릿은 그 자체가 java로 되어 있어 그것을 clas로 컴파일 한 것이다

그래서 jsp는 서블릿보다 앞에 한 단계가 더 있는 것이다

한마디로 자바빈은 jsp에서 객체를 가져오기 위한 기법이다

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[jsp] 자바빈(JavaBean)_

beanForm.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>jsp6/beanForm1.jsp</h1>

<form action="beanPro1.jsp" method="post">

이름 : <input type="text" name="name">

<input type="submit" value="전송">

</form>

</body>

</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[jsp] 자바빈(JavaBean)_

bean 패키지안에서 자바 파일 만들기


 

 

자바빈은? 전달할 데이터를 담아서 다른 파일에 전달시켜줌

시작점은 jsp그래서 main체크안함

먼저 bean 패키지 파일하나를 만든다

그 안에 bean 패키지안에서 자바 파일 만들기:BeanTest1.java

 

 

 

 

모든 클래스는 주제가 있다. 바로 객체, 학생 관리를 하던지, 회사관리를 하던지

멤버변수에 값을 저장한다

String name;

 

이 변수에 데이터를 담는다

이 데이터는 소중해서 보호하는 차원해서 다른 곳에서 접근하지 못하도록 은닉한다

private

 

그래서 멤버변수를 private로 지정한다

private를 하면 다른 곳에서 접근이 안되서 접근 통로가 필요하다

그게 바로 set()메서드, get()메서드 =비밀통로

그래서 외부에서 이 통로를 알면 접근 가능하도록 한다

자동생성하자 Alt+Shift+S하고 나서 창이 뜨면 r을 선택한다

 

 

 

 

 

 

 

 

public class BeanTest1 {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[jsp] 자바빈(JavaBean)_

데이터베이스 작업을 하는 자바 파일_ BeanDAO


 

 

패키지 bean 파일 이름 BeanDAO1.java

디비에 INSERT를 하는 기능을 만들고 싶다면 메서드를 만들어야 한다

bt1이라는 형의 변수에 저장. 참조변수에는 주소값이 저장되어 있다

그래야 그 안에 있는 데이터를 받을수 있다.

 

 

 

1. 한글 처리

2. int num String name파라미터 가져오기

 

3. 자바파일에 전달할 데이터를 하나의 공간에 담아서 하나만 전달 => 자바빈 p245

패키지 bean 파일이름 BeanTest1.java

BeanTest1 사용하기위해서 기억장소 할당 => 객체생성 참조변수 bt1

메서드 호출 setNum() num값 저장

메서드 호출 setName() name값 저장

 

여기까지가 바로 바구니를 만든 것

 

4.

디비 1드라이버,2디비연결,3insert ,4실행 name => 자바파일 분리

데이터베이스 작업을 하는 자바 파일

패키지 bean 파일이름 BeanDAO1.java

BeanDAO1 사용하기위해서 기억장소 할당 => 객체생성 참조변수 bdao1

 

.점으로 접근한다

 

 

 

 

 

 

 

 

<h1>jsp6/beanPro1.jsp</h1>

<%

 

request.setCharacterEncoding("utf-8");

 

String name=request.getParameter("name");

 

BeanTest1 bt1=new BeanTest1();

 

 

 

bt1.setName(name);

out.println("BeanTest1자바빈에 저장된 name값 :"+bt1.getName());

 

BeanDAO1 bdao1=new BeanDAO1();

 

bdao1.insertMember(bt1); <--- 메서드 호출 insertMember()

%>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


[jsp] 자바빈(JavaBean)_

데이터베이스 insert 하는 기능


 

 

 

public class BeanDAO1 {

 

public void insertMember(BeanTest1 bt1) {

 

System.out.println("BeanDAO1 insertMember()");

 

System.out.println("BeanTest1주소를 전달 받아서 name출력 : "+bt1.getName());

 

 

try {

 

Class.forName("com.mysql.jdbc.Driver");

 

String dbUrl ="jdbc:mysql://localhost:3306/jspdb5";

 

String dbUser="jspid";

 

String dbPass="jsppass";

 

Connection con=DriverManager.getConnection(dbUrl,dbUser,dbPass);

 

 

String sql="insert into student(name) values(?)";

 

PreparedStatement pstmt=con.prepareStatement(sql);

 

 

pstmt.setString(1, bt1.getName());

 

pstmt.executeUpdate();

} catch (Exception e) {

e.printStackTrace();

}finally {

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

ㅣ읽느라 수고 많으셨어요~ㅣ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

부족한 글을 읽어주셔서 감사드립니다

아직 부족한게 많으니

틀린 곳이 있다면

조언의 말씀 꼭 부탁드립니다!!!!

 

 

 

 

 

 

 


 

 

반응형

관련글 더보기