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

Nicole Gold·2023년 8월 16일
0

K-digital training

목록 보기
17/60

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

노트북에 TOMCAT 깔려다가 실패한 어젯밤... 기록에 뭐가 빠진 걸까.
프로젝트 팩츠 > JAVA > Version 11로 변경


JAVA Bean

  • Scriptlet 을 최소화시키려 하는 이유는 JAVA LOGIC 과 HTML 을 분리시키기 위해서 이다.

  • JAVA Bean 을 이용하면 JAVA CODE 의 일부를 분리할 수 있다.

  • 우리는 이것을 MODEL I 이라고 지칭한다.(현재 사용하지 않음)

    • 자바에서 데이터를 담당하는 부분만 따로 떨어트린 부분을 모델1이라고 함
  • Bean 은 여러 JSP 에서 생성되는 데이터의 창고 역할을 수행한다.

  • Bean 에서 data 를 공통으로 저장하고 사용한다.

  • Bean 자체가 JAVA CODE 이므로 scriptlet 으로도 접근이 가능하다.

  • 하지만 Action Tag 를 활용하는 방법도 있다.(추천)

FirstBean

  • Beans 규약 : 빈을 생성할 때 데이터를 담을 멤버 변수는 private 으로 만든다.
  1. FirstBean 클래스에 kim,in=hye라는 값의 멤버변수 name을 private로 선언
  2. public으로 변환(name을 return 값으로 반환하는 getName 함수)
  3. public으로 변환(매개변수 name-어딘가에서 얻을-을 넣어서 클래스의 name 값을 name으로 넣는 void 함수 setName)

index

1. com.beans.FirstBean 클래스를 firstBean 이라는 id가 이름이 됨, 저장 범위은 page 이다.
2. firstBean의 getName 함수 값 가져옴
3. exam/beanForm.jsp 로 이동하는 사용 예제 링크 생성

beanForm

1. beanProc.jsp 로 전달하는 form 생성
2. 이름 : 텍스트 타입의 인풋박스 생성/ 호출 이름은 userName
3. 전송 버튼

beanProc

1. com.beans.FirstBean 클래스를 firstBean id 호출하며 저장 범위는 session
2. firstBean 을 사용하여 멤버변수 name 에, 값은 userName을 넣어준다.
3. result.jsp 페이지로 전송

result

1. 스크립틀릿 사용 : firstBean의 getName 출력
2. 액션태그 사용 : firstBean의 멤버변수 property name 출력



EL TAG

  • Action Tag 만으로는 SCRIPTLET 을 대체하기가 어렵다.
  • 그래서 Expression Language Tag 가 등장하게 된다.
  • EL TAG 는 말 그대로 <%= %> 을 간단하게 표현하려는 것이 그 목적이다.
  • EL 태그에서 사용하는 내장객체와 속성의 명칭은 조금 다르다.
  • 또한 EL TAG 는 간단한 연산 및 비교 연산도 가능하다.


index

1. session에 저장할 값 login 속성 은 admin
2. result.jsp로 전달하는 form
3. text 입력창, 호출 이름은 userName
4. 전송 버튼
5. operator.jsp로 보내는 el hag 예제 링크

result

1. ID : 세션에 있는 login 속성 값 가져와라(스크립틀릿 버전)/세션스코프(영역)에 있는 login 속성 값 가져와라(EL태그 버전)
2. NAME : userName 값 가져와라(스크립틀릿 버전) / 값.userName 가져와라(EL태그 버전)


operator

  • 연산자 예제
  1. 사칙연산 : ${}를 통해 연산 가능
  2. 비교연산 : ${} 안에 부등호를 사용하지 않는 것이 좋음(위 표와 같이 대체해서 사용)
  3. 삼항 연산자 : == 그대로 사용



Jsp Standard Tag Library

  • 설치

    https://tomcat.apache.org/taglibs/standard/
    하단

    • jsp 파일 최상단에 아래와 같은 내용을 추가해 준다.
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    • 위 세개의 파일을 압축 상태로 WEB-INF/lib 폴더에 복사한다.
  • Scriptlet 을 줄이기 위해 action tag 를 사용하였다.

  • 개발자들은 이외에도 필요한 Custom Tag 를 제작할 수 있다.

  • 이러한 Custom TAG 중 자주 사용되고 유용한 것만을 모아 만든 라이브러리가 바로 JSTL 이다.

  • EL 은 주로 간단한 표현에 사용된다면 JSTL 은 좀 더 다양하게 사용된다.

JSTL TAG 종류



index

1. set.jsp 로 이동하는 c:set 이라고 쓰여진 링크
2. if.jsp 로 이동하는 c:if 라고 쓰여진 링크
3. choose.jsp 로 이동하는 text 입력폼/속성 이름 num
4. forEach.jsp 로 이동하는 c:forEach 라고 쓰여진 링크
5. url.jsp 로 이동하는 c:url 이라고 쓰여진 링크
6. forTokens.jsp 로 이동하는 c:forTokens 라고 쓰여진 링크
7. import.jsp 로 이동하는 c:import 라고 쓰여진 링크
8. redirect.jsp 로 이동하는 c:redirect 라고 쓰여진 링크
9. function.jsp 로 이동하는 c:function tag 라고 쓰여진 링크


set

  • JSP에서 사용될 변수를 설정한다.
  • var : el 태그에서 부를 변수명
  • value : 해당 변수에 넣을 값
  • scope : 저장 영역(page, request, session, application) 기본 값은 page


1. 세션에 myID 속성에 admin 저장
2. 세션에 uId 속성에 105784 저장

value 속성 사용
3. 변수명은 name1로 선언, 값은 test, 영역은 page
4. 변수명은 name2로 선언, 값은 (세션영역의 myId) admin, duddurdms request
5. 변수명은 name3으로 선언, 값은 (세션영역의 myId_세션영역의 uId) admin_105784

태그 몸체 사용
6. 변수명 name4로 선언, 영역은 page, 값은 test2
7. 변수명은 name5로 선언, 영역은 request, 값은 (세션영역의 myId) admin
8. 변수명은 name6 으로 선언, 영역은 생략(page), 값은 (세션영역의 myId_세션영역의 uId) admin_105784

변수 삭제
<c:remove var="변수명"/>

  • name3/name5 삭제 후 출력됨

if

  • java 의 if 문과 비슷한 기능을 제공
  • c:if test="condition"
  • test 속성에 조건이 들어가고 조건의 true 면 몸체가 실행된다.
  • var 속성에는 조건의 결과값을 저장할 수 있다.
  • if 문은 else 를 사용할 수 없기 때문에 choose/otherwise 문을 사용한다.

  • 스크립틀릿 if 문
  1. c:if 문 test가 true 면 무조건 실행된다.
  2. 변수 myId 선언, 값은 admin
  3. myId 가 admin과 같으면 'myId 는 admin이 맞습니다.' 출력. 변수는 if문의 값(true)
  4. result : result에 저장된 값 출력

choose

  • java 에서 switch 와 비슷한 형태이다.(조건식이 들어간다.)
  • c:when 태그의 test 속성의 조건이 참이면 실행된다.
  • else 역할을 하는 c:otherwise 가 존재한다.


1. num 의 값 가져옴
2. num 의 값 출력
3. num 의 값이 0과 같으면 파라메터의 값은 0 입니다. 출력
3. num 의 값이 1과 같으면 파라메터의 값은 1 입니다. 출력
3. num 의 값이 2과 같으면 파라메터의 값은 2 입니다. 출력
3. 그 외의 경우 0~2 사이의 값을 입력하세요. 출력


forEach

  • array, collection 등에 저장되어 있는 값들을 순차 처리할 때 활용된다.
  • 일반적인 for 처럼 사용할 수 있지만 주로 덩어리로 내려오는 데이터를 하나씩 뽑는 데 사용한다.
  • c:forEach var="변수명" items="덩어리" begin="시작번호" end="끝번호" step="증가값"
  1. 변수명 i, 1부터 시작, 10까지, 1씩 늘어남/i 출력

  2. 배열 변수 sports 선언, 안에 배열 값은 "축구","야구","농구","골프","수영","볼링"

  3. HashMap 클래스를 map 이라고 가져옴

  4. map에 "name" 속성에 "kim"을 넣음 / "age"에 "33"를 넣음/ "phone"에 "010-1234-1234"를 넣음

  5. sports 라는 배열의 변수는 item 이라고 선언하고 추가 정보를 획득하자

  6. index 스텟 : 각 아이템을 하나씩 꺼내기

  7. map 배열에 item 변수 선언

  8. 아이템의 key 값 : value 값 하나씩 꺼내기

url

  • URL 을 생성해 주는 기능을 한다.
  • var 와 scope 속성이 있으나 거의 사용하지 않는다.
  • c:param 태그를 이용해 파라메터를 추가할 수 있다.
  • value 속성에 절대 URL 및 상대 URL을 입력할 수 있다.
    • 절대 경로 : 내 위치 변한다고 변하지 않는 경로 또는 주소(보안상 좋지 않다.)
    • 상대 경로 : 내 위치가 변하면 같이 변하는 경로 또는 주소

  1. ./url.jsp = 현재 위치로 이동

  2. ./sub/link.jsp = 현재 위치에서 sub 폴더 하위의 link.jsp로 이동
    (앞에 . 하나를 찍음)

  3. /11_JST/url.jsp 상위 경로까지 표시+ 앞에 / 들어가면 절대 경로


4. ../url.jsp 현재 위치에서 한 칸 올라가서 url.jsp (앞에 .. 점 두 개 찍음)


forTokens

  • JAVA 의 Tokeniser 와 비슷하다.(특정 구분자를 기준으로 끊어준다.)
  1. text 변수 선언. 값은 /축구,야구,농구,배구,골프.수영/
  2. 구분할 덩어리(item)는 text의 값, 끊어줄 문자는 ',' 값은 val
  3. val 출력
  4. 구분할 덩어리는 토마토^귤^포도^오렌지^복숭아, 끊어줄 문자는 ^ 값은 val
  5. val 출력

import

  • 특정 페이지 또는 외부 url 을 가져와 페이지에 넣거나 변수에 저장시킨다.
  • URL을 사용하여 다른 자원의 결과를 삽입한다.
  • c:import url="URL" var="변수명" scope="영역" charEncoding="UTF-8" 으로 표현
  1. url https://www.youtube.com/results 로 이동, 속성 search_query, 값은 jsp

redirect

  • redirect 는 현재 페이지를 이동하는 기능이기 때문에 가장 마지막에 넣어줘야 한다.
  • 내부 페이지로 이동되며, 외부 url 로 이동도 가능하다.
  • 지정한 경로로 리다이렉트 한다.
  • url https://www.youtube.com/results 로 이동, 속성 search_query, 값은 jsp



JSTL 함수

  • <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>


다음 주부터 스터디 달료🤣

profile
JAVA 개발자로 가는 길

0개의 댓글

관련 채용 정보