<<복습>>
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로 넘겨져서 응답하는 방식..?
포트폴리오에서 강조해야 할 부분 : 진짜 그냥 작품만 딸랑 만들었다가 아닌, 스킬업을 어떻게 했는지를 보여주는 것이 중요하다.
'멀티캠퍼스 > 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 |