[IT국비지원] 개발자 교육 15일 차 : JSP(2023.08.16)fit.구디아카데미,김지훈 강사님

Nicole Gold·2023년 8월 15일
0

K-digital training

목록 보기
16/60

이하 구디아카데미 김지훈 강사님의 수업자료와 강의 내용 정리, 실습한 내용을 정리함!

광복절 하루 쉬고 왔는데 과연 머리는 얼마나 리셋되어 있을 것인가
빌드 패스 > 콘피큐어 빌드 패스 > 자바 빌드 패스 > 라이브러리 > 에디트

cookie 객체

  • 웹에서 만들어지는 특정한 데이터를 저장하고 싶을 경우가 있다.
  • 이 경우 우리는 cookie 와 session 이라는 저장 객체를 사용한다.
  • 저장 위치가 서로 다르므로 사용법과 보안 수준이 다르다.
  • client 에 저장
  • 클라이언트가 달라지면 저장 해당 안 됨
  • String 타입만 저장 가능
  • Java script 로도 제어 가능
  • 보안에 취약
  • 브라우저를 닫거나 서비스를 종료해도 정보가 남는다.
  • 공공 장소에서 사용하는 PC 의 경우 쿠키에 저장된 내용을 누구든지 사용할 수 있게 된다.
  • index
  1. Cookie 객체를 cookie 로 복사해 오며 name 속성에 kim_nicole 값을 넣는다.
  2. cookie의 최대 저장 시간은 10분이다.
  3. cookie 를 pc에 저장한다.
  4. 쿠키값 불러오기 버튼을 누르면 cookieResult.jsp 로 이동한다.
  5. 쿠키 예제 버튼을 누르면 example 폴더 infoInput.jsp 로 이동한다.
  • cookieResult
  1. 쿠키를 가져와 cookies 배열에 넣는다.
  2. name 문자열 변수 선언, value 문자열 변수 선언
  3. cookies 배열 안의 값을 c에 넣는 것을 반복한다.
  4. name 값과 value 값을 가져온다.
  • infoInput
  1. h3 태그 안에 "언어를 설정해 주세요" 라고 넣는다.
  2. cookieSet.jsp로 이동한다.
  3. radio 타입을 넣는다. name은 lang 이고 해당 radio를 선택하면 값은 kor로 전송한다. 버튼 옆 출력은 한국어
  4. radio 타입을 넣는다. name은 lang 이고 해당 radio를 선택하면 값은 eng로 전송한다. 버튼 옆 출력은 English
  5. 설정 버튼을 누른다.
  • cookieSet
  1. "lang" 의 값을 요청하여 lang 에 저장한다.
  2. Cookie 클래스의 "lang" 라는 이름으로 value 값을 cookie에 저장한다.
  3. cookie의 최대 유지 시간은 24 시간이다.
  4. cookie 값을 PC에 저장한다.
  5. cookieGet.jsp 로 보낸다.
  • cookieGet
  1. cookies를 가져와서 배열 cookies에 담는다.
  2. 문자열 val 변수 선언
  3. cookies 값들을 c에 저장한다 > 만약 c의 name이 "lang"이라면 > val 변수에 c의 value를 담는다.
  4. 만약 val 값이 kor 이라면 "한글 페이지에 오신 것을 환영합니다." 출력
    아니면 "Welcome to English Page!!" 출력

session

  • server 에 저장된다.
  • 오브젝트로 저장하기 때문에 자바의 모든 코드를 저장할 수 있다.
  • Server side program 으로만 제어 가능하다.
  • 보안성 우수
  • 서비스에서 나가거나 브라우저가 변경될 경우 끊어지게 된다.
  • session 은 cookie 보다 다루기 편하다.
  • index
  1. 세션에 저장된 name 값을 name 변수에 저장

  2. msg 에 "세선에 해당 값이 존재하지 않습니다" 저장

  3. 만약 name 변수가 null이 아니면 msg 변수는 "세션에 저장된 값 :" name 으로 저장

  4. 세션 테스트 H2로 출력

  5. 세션 id h3로 출력

  6. msg h3로 출력

  7. sessionSet.jsp로 연결되는 링크의 문자열 "세션 속성값 저장" 출력

  8. sessionDel.jsp로 연결되는 링크의 문자열 "세션 속성값 삭제" 출력

  9. sessionInit.jsp로 연결되는 링크의 문자열 "세션 초기화" 출력

  10. example 폴더의 login.jsp로 연결되는 링크의 문자열 "로그인 예제" 출력

  • sessionSet
  1. 세션 name 속성의 value 를 new name change! 로 한다.
  2. 세션 최대 유지 시간은 60 초로 한다
  3. index.jsp 로 돌려보낸다.
  • sessionDel
  1. 세션 네임 속성을 지움
  2. index.jsp로 돌려보냄
  • sessionInit
  1. 세션 초기화
  2. index.jsp로 돌려보냄
  • example/login
  1. 테이블 sytle 설정
  2. loginResult로 보내는 액션
  3. ID 입력창 name 속성 "id"
  4. PW 입력창 name 속성 "pw"
  5. 로그인 버튼과 reset 버튼
  • example/loginResult
  1. admin 문자열을 id 변수에 저장/pass 문자열을 pw 변수에 저장

  2. "id " 값을 ids 변수에 저장/ "pw" 값을 pws 변수에 저장

  3. syso ids/pws 출력

  4. 만약 ids 의 값이 id 변수에 저장된 값과 같고 pws의 값이 pw 에 저장된 값과 같다면
    세션에 "loginID"라는 이름으로 id 값을 넣음

  5. 아니면 login.jsp 로 보냄

  6. 로그인 성공 h2 영역에 출력
    안녕하세요 loginID id 값 님 출력

  7. logout.jsp 링크가 걸린 로그아웃 문자열 출력

  • example/logout
  1. 세션의 loginID 삭제
  2. login.jsp 로 보냄
  • example/mypage
  1. "loginID" 값을 가져와 loginID 변수에 저장
  2. 만약 loginID가 null 이면 ligin.jsp 로 보내기
  3. 안녕하세요 loginID 값 님
  4. logout.jsp 링크가 걸린 로그아웃 문자열 출력
  5. 로그인하지 않으면 못 들어옵니다. 출력

Scope

  • JSP 에서는 데이터 저장 시 공유하는 영역들이 있다.

  • 이 영역들은 데이터를 “언제까지 가지고 있는지” 를 중심으로 구분할 수 있다.

  • index

  1. application.jsp 로 값을 보내는 폼
  2. ID text 박스에 입력되는 것의 이름은 "userId"
  3. Name text 박스에 입력되는 것의 이름은 "userName"
  4. 전송 버튼
  • application
  1. 한글 입력 가능으로 변경(post 타입 전송 시 한글이 깨짐)

  2. "userId" 에 저장된 값을 userId 변수에 저장

  3. "userName" 에 저장된 값을 userName 변수에 저장

  4. syso userId/userName

  5. 어플리케이션 "name" 속성에 userName이 들어감

  6. 어플리케이션 "id" 속성에 userId가 들어감

  7. session.jsp로 이동하는 폼

  8. email text 박스에 입력되는 값은 "email"

  9. phone text 박스에 입력되는 값은 "phone"

  10. 전송 버튼

  • session
  1. 한글 입력 가능
  2. "email"에 저장되는 값을 변수 email 에 저장
  3. "phone"에 저장되는 값을 변수 phone 에 저장
  4. syso email/phone 출력
  5. 세션에 "email"에 값은 email
  6. 세션에 "phone"의 값은 phone
  7. result.jsp 로 보내기
  • result
  1. 아이디 = 어플리케이션 영역의 id 속성
  2. 이름 = 어플리케이션 영역의 name 속성
  3. 전화번호 = 세션 영역의 phone 속성
  4. 이메일 = 세션 영역의 email 속성

Action Tag

  • scriptlet은 유용하긴 하지만 페이지가 복잡해 보인다.

  • 개발자들은 scriptlet 을 최소한으로 쓰지 않기 위한 노력들을 하게 된다.

  • index

  1. forward/forward.jsp 로 연결하는 forward 링크 / include/index.jsp로 연결하는 include 링크 / useBean 링크
  • forward/forward
  1. stopPage.jsp 로 연결하는 폼
  2. name 라는 이름 속성의 이름 입력창
  3. age 라는 이름 속성의 나이 입력창
  4. address 라는 이름 속성의 주소 입력 창
  5. 전송 버튼
  • forward/stopPage
  1. 한글 사용 가능
  2. result.jsp 로 forward (tel 이라는 이름 속성의 값 010-1234-1223 전달)
  • forward/result
  1. "name" 에 입력된 값 출력
  2. "age" 에 입력된 값 출력
  3. "address" 에 입력된 값 출력
  4. "tel" 에 입력된 값 출력
  • include/index
  1. 액션태그 <jsp:include> 를 사용하여 header.jsp 로 이동
  2. 액션태그 <jsp:include> 를 사용하여 footer.jsp 로 이동하고 my content 라는 값 추가

session 에 비해 cookie 사용이 다소 복잡해서 session 을 주로 사용하면 된다고 생각했는데, cookie에 비해 서버에 무리가 가는 방식인가 보다.
어려워도 사용하는 데는 다 이유가 있는 법...

profile
JAVA 개발자로 가는 길

0개의 댓글