이번엔 CRUD를 이용해서 싱글톤패턴의 또다른 예제를 보자.
학생들의 성적정보를 데이터베이스에 테이블 추가했다고 가정함 (테이블명 : SUNGTB) 추가방법은 이전글 JDBC_1 참고
+) 학생번호는 자동으로 생성될 수 있게끔 시퀀스를 이용해보자.
CREATE SEQUENCE SEQ_SUNGTB_NO;
데이터를 INSERT할 때 시퀀스적용은 시퀀스명.NEXTVAL 으로 한다.
INSERT INTO SUNGTB VALUES(SEQ_SUNGTB_NO.NEXTVAL,'홍길동',77,88,99);
[DB] 시퀀스(SEQUENCE)
시퀀스(SEQUENCE) CREATE SEQUENCE 시퀀스명; 오라클 데이터베이스에서 특정 규칙에 맞는 연속숫자를 생성하는 객체 예를들면, 회원가입시 가입자들에게 또는 게시판의 게시글에 순차적으로 번호를 부
studywithjw.tistory.com
+) 총점과 평균을 같이 조회하고싶다면 VIEW로 만들자 (VIEW는 조회전용임)
CREATE VIEW SUNGTB_VIEW AS (
SELECT S.*,
(KOR+ENG+MATH) "TOT",
ROUND((KOR+ENG+MATH)/3,1) "AVG",
RANK() OVER(ORDER BY (KOR+ENG+MATH) DESC) "RANK"
FROM SUNGTB S
);
[DB] VIEW
VIEW CREATE VIEW 뷰이름 AS( 쿼리문 ) 기존의 테이블은 그대로 놔둔 채 필요한 컬럼 및 새로운 컬럼을 만드는 가상의 테이블 실제 데이터가 저장되는 것은 아니지만 VIEW를 통해 데이터를 관리할 수 있
studywithjw.tistory.com
DBServer.java파일은 그대로 사용가능 (캡쳐생략)
VO / DAO
JSP
student.jsp
결과
학생정보 추가하기 기능만들기
JSP
student.jsp 내용추가
<input type ="button" value = "학생정보 추가하기" onclick="location.href='sung_register.jsp'">
👉 '학생정보 추가하기'라는 버튼을 눌렀을 때 sung_register.jsp 파일로 페이지 이동
결과
sung_register.jsp
10~13행 let □= f.□.value.trim(); 는 유효성체크를 위한 부분으로 유효성체크를 하지 않는다면 없어도 된다.
35행 f.action = "register.jsp"; 는 파라미터를 받아주기 위해 필요한 파일로써 화면에서 보여지는건 없다. 넘길때 자바스크립트, 받을때 jsp이므로 필요한 파일일뿐임
21행 정규표현식 참고
register.jsp와 DAO
jsp로 받아서(8~11행) 객체로 포장(14~18행)
결과
학생정보 삭제 기능만들기
JSP
student.jsp 내용추가
<input type="button" value="삭제" onclick="del('<%=sv.getNo()%>')">
👉 삭제버튼을 눌렀을 때 del() 메서드 실행하는데 누구를 삭제해야할지 모르므로 del() 메서드 안에 파라미터로 '<%=sv.getNo()%>' 학번을 전달함
**버튼을 반복문 안에서 생성하면 자동으로 반복문만큼 버튼생성됨
결과

del()은 자바스크립트 메서드이므로
student.jsp 내용추가
del() 메서드 안에 파라미터로 학번을 받았으므로 function del(no)
29행 location.href="sung_del.jsp?no="+no; 는 데이터를 받기위해 필요한 파일로써 화면에서 보여지는건 없다.
sung_del.jsp와 DAO
결과
학생정보 수정 기능만들기
JSP
student.jsp 내용추가
<input type="button" value="수정" onclick="modify(...)" >
👉 수정버튼을 눌렀을 때 modify() 메서드 실행하는데 기존 값들을 그대로 가져오기위해 modify() 메서드 안에 파라미터로 학번, 이름 등을 전달함
**버튼을 반복문 안에서 생성하면 자동으로 반복문만큼 버튼생성됨
결과

modify()는 자바스크립트 메서드이므로
student.jsp 내용추가

modify() 메서드 안에 파라미터로 학번 등 5개의 정보를 받았으므로 function modify(no,name,kor,eng,math)
33행 location.href="sung_update.jsp?no="+no+"&name="+name+"&kor="+kor+"&eng="+eng+"&math="+math;
👉 물음표는 URL에서 쿼리 문자열의 시작을 나타낸다.
쿼리 문자열은 웹 페이지로 데이터를 전달하는 데 사용되고 일반적으로 키-값 쌍의 형태로 구성되며, 각 키-값 쌍은 &으로 구분한다.
sung_update.jsp
7행 int no = Integer.parseInt(request.getParameter("no"));
각 행을 구별할 수 있는 기준인 넘버도 파라미터로 받았지만,
정보수정시 넘버(학번)을 넣을 필요는 없으므로 폼태그 내부에
28행 <input type="hidden" name ="no" value="<%=no%>"> 으로 숨겨놓는다.
this.form
👉 input태그를 감싸고있는 폼태그를 의미하는데, 그 폼태그를 자바스크립트의 파라미터(19행) 로 보내서 폼태그의 내용을 전부 보낸다! (폼태그안의 input태그가 갖고있는 내용들을 보낸다)
sung_modify.jsp와 DAO

결과
'JSP' 카테고리의 다른 글
[JSP] EL 표기법 (0) | 2023.10.29 |
---|---|
[JSP] JDBC_5 (싱글톤 패턴 + VO, DAO + CRUD) (0) | 2023.10.29 |
[JSP] JDBC_3 (싱글톤 패턴 + VO, DAO) (1) | 2023.10.26 |
[JSP] JDBC_2 (1) | 2023.10.25 |
[JSP] JDBC_1 (0) | 2023.10.23 |