
dto=dao.proc(sno);
SungjukDAO에 새로운 클래스를 만들어(proc) 적용시켰다.
기존에 작성해놨던 read class를 불러와야했다.
action="sungjukIns.jsp"
action 에는 수정 사항을 반영해야하는데, 기존 sungjukForm.jsp에 있는 걸 복사해오면서 action을 수정하지 않았다.
수정 후 결과 페이지인 sungjukUpdateProc.jsp파일을 작성해주어야한다.

프라이머리키를 연결고리 삼아서 페이지를 연결하는 것 (=DB 테이블끼리 엮을때처럼)
dao,dto(bean이라는 형태의 객체)는 ssi.jsp 파일 안에 include되어있음 = 페이지를 나누기 시작하면서 여러 .jsp를 왔다 갔다 해야하므로 헷갈리지 말자
~factory 라는 말이 들어간 class나 interface : 값을 넘겨주면 알아서 만들어 주겠다(=공장) = DAO, DTO



→ 목록 페이지에서 해당 인물의 snum(PK)를 상세 페이지에 가져온다. (= int snum=req.get~("snum"))
→ read함수에 snum값을 넘긴다 (= dao.read(snum))
→ 해당 snum값에 맞는 테이블들(select한 값들)만 불러온다 (= public SungjukDTO read(int snum))
(※ 함수 맨 앞에 dto=null으로 이미 들어있는 값을 초기화 필수)
→ 그걸 dto에 담는다 (= dto = dao.read(snum))
→ dto가 null이면 "내용 없음"을 띄운다 (= if(dto == null))
→ 그렇지 않다면(else) <table>에다가 값을 출력한다
New-> Dynamic Web Project -> Project name: myweb
Dynamic web module version: 4.0
/src/main/webapp/
-> css 스타일
-> js 자바스크립트
-> images 이미지
-> sql SQL문
WebContent/WEB-INF/lib/ojdbc8.jar
servlet-api.jar
※ C:\나만의경로\product\18.0.0\dbhomeXE\jdbc\lib\ojdbc8.jar
※ C:\나만의경로\apache-tomcat-9.0.67\lib\servlet-api.jar

→ 위에있는 basic04안에 있는 파일 복사 붙여넣기 하면 된다.
→ moment-with-localse.js는 jquery폴더 안에 있는 파일 가져와서 복사하면 된다.
net.utility.DBOpen
net.utility.DBClose


→ 위에 있는 파일 복사 붙여넣기





※ Frontend 작업 폴더명 : /src/main/webapp/bbs
※ Backend 작업 팩키지명 : net.bbs
상세보기 페이지
bbsRead.jsp -> 조회수 증가
삭제 페이지
비밀번호 4글자 이상 입력했는지 자바스크립트에서 유효성 검사후
글번호와 비밀번호가 일치하면 행 삭제
https://www.w3schools.com/bootstrap/tryit.asp?filename=trybs_theme_me_complete&stacked=h

사용자 정의 스타일과 자바스크립트
주의사항 : CSS와 JS는 각 웹브라우저에서 쿠키삭제하고 확인할것

- home을 누르면 myweb 메인페이지로 갈수 있도록 하는 것.
※ 배포할 땐 myweb이라는 이름으로 사용하면 안된다.
명령어를 사용해서 클라이언트 이름으로 바꾸어주어야 한다.

이렇게 명령어로 바꿔주어야 한다.


↳ 이부분은 바뀌어선 안되기 때문에 공통으로 들어가는 부분은 따로 잘라내어 빼야한다.

↳ 이렇게 templete 파일을 복사해서 다른 페이지에도 사용할 것이다.
↳ jsp 파일로 잘라내어 사용하면 다른 페이지를 만들때마다 저 부분을 모두 작성해주지않아도 된다.
↳ template이라는 파일로 마치 틀을 제작하여 안에 내용물만 바뀌도록 두번 작업할 필요없이 편리하게 만들어 준 것이다.
➡️ 공통으로 들어가는 부분은 이런식으로 항상 jsp파일로 따로 빼서 템플릿을 만드는 것이 유지보수에도 좋고 코드를 짤때도 굉장히 편리하다.







header.jsp + footer.jsp 파일을 합친 것을 template.jsp에 넣는다.





↳ 제대로 안나옴 ㅡㅡ
경로가 잘 못 되었다.
맨앞 경로 점 두개 찍어야 한다.



↳ 완료!

↳ header.jsp footer.jsp에 있는 내용이 그대로 들어가있다.



<div class="container">
<form name="bbsfrm" id="bbsfrm">
<table class="table">
<tr>
<th class="success">작성자</th>
<td><input type="text" name="wname" id="wname" class="form-control" maxlength="20" required></td>
</tr>
<tr>
<th class="success">제목</th>
<td><input type="text" name="subject" id="subject" class="form-control" maxlength="100" required></td>
</tr>
<tr>
<th class="success">내용</th>
<td><textarea rows="5" class="form-control" name="content" id="content"></textarea></td>
</tr>
<tr>
<th class="success">비밀번호</th>
<td><input type="password" name="passwd" id="passwd" class="form-control" maxlength="10" required></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="쓰기" class="btn btn-success">
<input type="reset" value="취소" class="btn btn-danger">
</td>
</table>
</form>
</div>






select max(bbsno) from tb_bbs;

↳ 테이블을 생성하지 않아 빈 값이 나온다.
select nvl(max(bbsno),0) from tb_bbs;

↳ null값에 0으로 바꿔주는 함수를 이용해 숫자0을 대입해준다.
select nvl(max(bbsno),0)+1 from tb_bbs;

↳ 0을 넣어준 후 +1을 해주면 값이 추가된다.



➡️ 한사람의 정보를 온전히 담을 수 있는 class








이 부분은 spring에 템플릿이 있으므로 spring을 사용하면 작성하지않아도 된다.












↳ wname을 3글자만, passwd를 최소 4글자 이상만 이런 조건을 걸고 싶다면, javascript를 이용해야한다.
↳ javascript에서 만든 함수를 가져오려면 event를 주면 된다.
↳ name에 event를 걸어주면 조건을 걸면 된다.


myscript.js는 내일부터 시작