본문 바로가기
멀티캠퍼스/Spring

230901 (금)

by 세크레투스 2023. 9. 1.
반응형
SMALL

<<복습>>

DB Connection Pool (DBCP)

커넥션을 미리 만들어두자는 뜻..!

우리는 Pool 보다는 Data Source라는 용어를 더 자주 씀.

 

- JSP : HTML 작업을 쉽게하자. -> 결국 최종적인 모습은 Servlet 임.

 

최초요청 -> JSP (aa.jsp) -> aa.jsp.class가 존재하면 응답, 존재하지 않으면 변환작업을 함.

JSP의 기본형태 : <% %>

- <%@ ... %> : 지시자 -> C언어의 #define과 동일함. @는 지시자.

- <% 자바코드 %>

 

원래는 JSP + JDK class 만 가지고 프로그래밍을 했었음. => Model1 방식

가장 큰 문제 : 관리가 어려워짐.

 

왜 관리가 어려운지를 배우게 될 것임.

 

 

<<본수업>>

 

- 우리가 현재 배우고 있는 JSP는 거의 대부분 현재는 쓰이지 않는다.

- 유일하게 쓰이는 기술 : include

<JSP 표준 액션 태그>

1. <jsp:include/> 액션태그

<jsp:include page="삽입될 페이지" flush="true"/>

- 동적으로 삽입이 이루어짐.

- 내용물이 소스 차원에 포함되는 것이 아니고 지정한 페이지의 실행 결과가 포함됨

(메서드 호출과 유사)

<%@ ~~~ %> 에서 @의 의미 : 지시자, 먼저 처리된다는 의미.

- <%= %> : 변수 호출(출력) -> 값을 결정 표현

- 상수, 변수, 메서드 호출

- 표현식(expression)

- EL : Expression Language

 

<EL (Expression Language)>

1. EL 개요

- EL은 데이터를 출력하기 위한 언어

- 문법이 직관적, 사용이 용이

- JSP에서 변수를 출력할 때 사용

- 처리 가능한 데이터형

* 프리미티브

* Map, List, 배열, 자바빈 등

 

2. EL 내장 객체 (가장 많이 쓰이는 4가지)

- pageScope

- requestScope

- sessionScope

- applicationScope

 

3. EL 기본문법

${표현식}  ===  <%=표현식%>

- 내장객체이거나 scope에 저장된 속성을 지정

- <%=표현식%> : JSP의 지역변수

- ${표현식} : Scope의 속성명

- 정확하게 쓰는 법

${requestScope.name}

==> 하지만 우리는 ${name}으로 했는데도 찾아줌.

===> 왜? : 좁은 범위의 스코프에서 넓은 범위의 스코프대로 차례대로 찾아주기 때문.

====> 찾는 순서

1) pageScope

2) requestScope

3) sessionScope

4) applicationScope

=====> 지정된 변수를 찾고 싶다면 ${pageScope.name} 이런식으로 찾아주면 됨.

======> 만약에 변수가 null 이라면..? : 아무것도 출력하지 않는다. (하지만 <%= 변수명%>은 null을 출력함)

 

servlet -> jsp로 넘어가면서 화면단에서 데이터가 보이는 것임.

 

- getter/setter를 통해서 접근하는 정보 = property

 

<JSTL(JSP Standard Tag Library)>

1. JSTL 개요와 환경 설정

- 액션 태그를 사용자가 직접 제작 가능 -> 커스텀 태그

- 커스텀 태그들 중에서 자주 사용되는 태그들을 묶어서 아파치 그룹에서 제공하는 것 -> JSTL

- EL과 JSTL을 함꼐 사용

<tag> ... </tag> 행위 (action)

2. JSTL 라이브러리

3. <c:set> 태그 (가끔 쓰임)

- 지정된 scope에 데이터를 바인딩하는 태그

- JSP setAttribute(name, value) 메서드와 동일한 기능 제공

<c:set var="변수명" value="변수값"

target="객체" property="객체의 프로퍼티"

scope="scope값" />

- 보통 <c:set> 에 저장되는 value 값은 primitive/string 타입이다.

- property명은 setXxx 와 동일하다.

 

4. <c:out> 태그

- 지정된 값을 웹 브라우저에 출력하는 태그

<c:out value="출력값" default="기본값" escapeXml="true|false" />

- el을 써서 출력하면 되기 때문에 그렇게 많이 사용되지 않음.

 

5. <c:remove> 태그

- 지정된 scope에 설정한 변수 값을 제거하는 태그

<c:remove var="변수명" scope="scope값"/>

 

- package의 목적 : 이름충돌 방지

 

6. <c:if> 태그 (가장 많이 쓰임, 꼭 기억할 것)

- 조건 처리를 할 때 사용하는 태그

- 자바의 if 문과 동일

<c:if test="조건식" var="변수명" scope="scope값">

문장

</c:if>

* 조건식이 참인 경우 출력

* var가 지정되어 있다면 조건식 검사 결과를 변수에 저장

* else는 없음 -> 부정표현으로 if 추가

 

==> empty가 true면 로그인 안됨, empty가 false면 로그인 됨.

 

7. <c:forEach> 태그 (항상 쓰이는 태그임)

- 반복 처리시 사용하는 태그, for문과 비슷

//1번 아니면 2번 형태로 쓰임.
<c:forEach var="변수명" items="객체명" //1번 for(var:collection)
	begin="시작인덱스" end="끝인덱스" step="증가값" //2번 for(int i=시작; i<=끝; i+=증가)와 동일
    varStatus="other변수">
    문장
</c:forEach>

- items 속성 : 배열이나 List 형태의 반복할 객체 지정

- var : 반복문에서 사용할 아이템 변수

for(PhoneInfo pi:list) 형태와 동일

- varStatus: 반복문의 상태에 대한 참조 변수

- 예제

☆ 반드시 기억 ☆

- c:if

- c:forEach

+) 아주 가끔 쓰이는 것 : c:set

 

8. JSTL formatting 라이브러리

- 국제화/지역화 및 데이터 포맷과 관련된 기능 제공

- 국제화/지역화 -> 다국어 처리

- 데이터 포맷 -> 날짜와 숫자와 관련된 기능

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

- 가장 많이 쓰이는 것 : formatDate

 

9. <fmt:formatNumber> 태그

- 수치 데이터를 특정 포맷으로 설정 시 사용되는 태그

<fmt:formatNumber value="값" type="타입" pattern="패턴" //여기서 마무리 : 출력, 대부분 여기서 끝남.

currencySymbol="값" maxIntegerDigits="값" minIntegerDigits="값"

maxFractionDigits="값" minFractionDigits="값" var="변수명" scope="값"/> //문자열로 입력해서 scope에 저장 후 el로 출력하겠다는 뜻.

- 날짜 데이터를 특정 포맷으로 설정 시 사용

<tmt:formatDate value="값" type="타입" dateStyle="날짜스타일"

timeStyle="시간스타일" pattern="패턴" var="변수명" scope="scope영역" />

* value: 실제 날짜와 시간을 설정

* type: time, date, both 중 하나

* dateStyle: 미리 정의된 날짜 스타일 형식

* timeStyle: 미리 정의된 시간 스타일 형식

* pattern : 사용자가 지정한 스타일 형식

 

 

10. 마지막 강사님 설명

Model2

서블릿으로 넘겨서 logic처리 결과가 JSP로 넘겨져서 응답하는 방식..?

포트폴리오에서 강조해야 할 부분 : 진짜 그냥 작품만 딸랑 만들었다가 아닌, 스킬업을 어떻게 했는지를 보여주는 것이 중요하다.

반응형
LIST

'멀티캠퍼스 > Spring' 카테고리의 다른 글

230905 (화)  (0) 2023.09.05
230904 (월)  (0) 2023.09.04
230831(목)  (0) 2023.09.01
20230830 (수)  (0) 2023.08.30
20230829 (화)  (0) 2023.08.29