
jsp페이지에 나열되는 자바 처리로직은 디자인 코드와 함께 매우 복잡한 코드를 구성한다. 이로인해 디자인 변경시 자바코드가 영향을 받아 오류가 자주 발생되며, 코드 수정시 코드를 알아볼 수 없어 유지보수가 어렵다. 또한 작업 도중 자바 코드가 JSP 페이지에 반복적으로 사용될 수 있으며, 코드의 노출로 저작권등 보안에 심각한 문제가 발생된다. 이러한 반복되는 자바 코드들을 JAVA파일안에 저장하여 사용하는 형태를 빈즈라고 한다.
데이터를 출력하는 레이어와 데이터를 처리하는 레이어를 분리(Manager, Process class)하여 유지보수 시간을 단축 시키 수 있으며 코드의 가독성을 높일 수 있다.
빈즈는 dll과 같은 원리를 가지고 있다.
빈즈의 종류
- DTO(Data Transfer Object) class
- Manager(Process) class
- DAO(Data Access Object) class
new Test()
beans는 자동으로 생성해주는 객체이다.
오브젝트(객체=인스턴스)의 개념과 같다.
new가 아닌 bean이라는 개념으로도 사용할 수 있다.
자바를 사용할 때 내부에 기본적으로 들어가있는 기능들이 있다. (getter, setter)
※ VO(Value Object)
※ VO와 DTO는 데이터를 객체에 저장 담당 클래스를 말하고 DAO는 DB의 데이터 사용,수정,삭제 기능 담당 클래스를 의미한다.
실제 객체는 데이터와 기능을 같이 가지고 있지만 프로그래밍에서는 분리시켜서 사용하는게 개발에 용이하다.
※ CRUD란?
1) application - 모든 사용자가 공유하는 값
2) session - 각 사용자별로 개별적으로 구분 및 적용
3) request - 서로 요청한 페이지에서 유효
4) page - private속성과 비슷. 해당 페이지에서 유지되는 값. 생략가능






request로 값을 가져온 후 JSP로 함수 만들기


computeForm.jsp 부모페이지 Run해야함.





↳ 임포트해주면 이렇게 compute class가 자동으로 뜬다.



↳ 결과가 똑같이 나온다.





(위처럼 써도되고 아래처럼도 사용가능)



scope는 4가지 종류가 있다. (나중에 배울 것)
(밑에 바로 나옴)

class에 객체를 작성해주면 임포트 때문에 자동으로 생성된다.

요렇게


페이지를 어디까지 공유를 할 것인지에 대한 범위




태그 복사한후 src폴더에 paste누르면 자동으로 class가 생성됨 ;;








이부분은 비밀번호가 바뀌면 하나하나 다 바꿔야한다.
하지만 함수로 만들어서 한군데에서 관리하면 쉽다.






이름을 이런식으로 많이 사용함.

↳ 이제 일일히 작성할 필요 없이 "DBOpen" 함수만 불러서 사용하면 된다.

↳ 함수 이렇게 사용해주면 된다. DBClose.close()
*static 특징 : 빨리쓸수있다, continue 된다. (꼭 기억하기)

Connection만 사용할 때
Connection,PreparedStatement 두개사용할 때
Connection만,PreparedStatement, ResultSet 세개 모두 사용할때
세가지 종류를 만들어준다.



↳ sungjukDAO.jsp 아니고 SungjukDAO.jsp 맨앞 대문자로 바꿔야됨.













↳ sungjukList.jsp파일을 아직 만들지 않았기 때문에 올바르게 나온 것.


괄호안에 있는 변수들을 한번에 묶어서 전송하는 방법이 있다.
getter / setter 멤버변수 활용
set 로 넣고
get 으로 가져온다.


Data Transfer Object 전송객체
★★★ 많이 사용하는 함수 ★★★
sungjuk테이블의 칼럼명을 기준으로 멤버변수(field) 선언
sql문에서 성적테이블의 변수들 복붙해서 가져온다

SungjukDTO 객체에 칼럼명을 기준으로 멤버변수를 선언한다. 기본 생성자까지 생성해줌.

private으로 선언한 변수에 접근하기 -> 함수를 이용해서 접근하면 된다.



toString()



↳ 이걸 사용해주면 private에 있는 변수들이 값이 제대로 들어가있는지 확인할 수 있다.

↳ 이 값들이 제대로 들어가있는지 확인하는 것
sungjukIns.jsp에 jsp:useBean SungjukDTO 삽입해주기

전달값을 모두 DTO 객체에 담기
dto.set을 쓰고 ctrl+space를 누르면 밑에 DTO에 담았던 객체들이 다 나옴

set으로 dto에 담아준 결과

SungjukDAO.java 에서 객체생성

dto의 자료형은 sungjuk이므로 sungjuk 으로 받아야한다.

setter로 감쌌으면 getter로 풀어줘야한다.

여기에 함수를 만들어주는 것이다.

public int create(SungjukDTO dto)함수에 값을 넣어준다.




↳ list페이지는 아직 생성하지 않았기 때문에 404에러가 나오는 것이 정상이다!


dao.list() 함수 호출먼저해준 후 list() 함수 만들기

SungjukDAO.java에서 list() 함수만들기

cmd에보이는 정보를 한번에 다 모아서 list에 담아줄 것이다.

배열이나 vector등으로 담아서 주면되는데 ArrayList로 사용할 것이다.

데이터베이스에서 가져온 정보를 rs(resultSet)에 담아서 ArrayList로 list에 담는다.
ArrayList는 한줄씩(인덱스) 가져와서 list에 차곡차곡 담는다.
데이터베이스에서 셀렉한 정보를 담을 수 있다.

🤔 한사람에 대한 정보를 어디에 담을 것인지? -> DTO
list()에는 모든정보를 담을 상자.
DTO에는 한사람에 대한 정보 한 줄을 담아준다.


마지막 list값을 돌려줘야하는데 list()함수는 void라서 리턴형이없는 함수이다.

ArrayList에 담아놨으므로 void를 ArrayList<SungjukDTO>로 바꿔줘야한다.

sungjukList.jsp 에도 자료형을 ArrayList<SungjukDTO>로 바꿔줘야한다.

sungjukList.jsp if문 작성하기


다른 페이지에서 공통으로 사용하는 코드 죄다 집어넣는 곳 만들기














이제 수정..삭제 페이지를 만들어야함..








