** Java Project 에서 외부 라이브러리 파일을 사용하는 방법
1. 일반 Java Application의 경우
= 사용하고자 하는 jar 파일을 선택하고 build path에 추가해주면 됩니다.
= 프로젝트를 선택하고 마우스 오른쪽을 눌러서 configure build path 메뉴에서 하면 됩니다.
2. Java Web Application의 경우
= WebContent/WEB-INF/lib 디렉토리에 복사해주면 됩니다.
3. Maven 이나 Gradle의 경우는 설정 파일에 사용할 라이브러리의 이름을 설정하면 됩니다.
= 안드로이드가 gradle 방식.
**JSTL
= jsp 파일에서 자주 사용하는 java 기능을 태그로 만들어서 사용하는 것
= apache 재단에서 만들어서 배포
= jstl.jar 파일을 프로젝트에 포함시켜야만 사용 가능
1. Core Library
= 자바의 변수 선언이나 제어문을 사용하기 위한 라이브러리
= 접두어는 일반적으로 c를 사용합니다.
= 태그 라이브러리 URL : http://java.sun.com/jsp/jstl/core
= 사용하기 위한 설정
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
= c: 으로 시작하는 태그는 브라우저가 해석하지 말고 http://java.sun.com/jsp/jstl/core 에서 해석하라는 의미가 담겨있다.
= 웹 주소 형태로 되어 있지만 실제로는 jar 파일에서 해석합니다.
1) set
= 변수를 선언할 때 사용하는 태그
= 속성은 var, value, scope 가 있습니다.
= var는 변수명을 설정
= value는 초기값
= scope는 유효 범위로 page, request, session, application이 있습니다.
2) remove
= set으로 만든 변수를 삭제하기 위한 태그
= var 와 scope 속성이 있습니다.
3) if
= 조건에 맞는 경우에만 작업을 수행하기 위한 태그
= else 와 else if가 없습니다.
= 형식
<c:if test="${조건}">
조건에 맞는 경우 수행할 내용
</c:if>
4) c:choose
= 여러 개의 조건을 나열하고 조건에 맞는 경우에만 내용을 수행하도록 해주는 태그
= 형식
<c:choose>
<c:when test="${조건}">
조건이 true 일 때 수행할 내용
</c:when>
<c:when test="${조건1}">
위의 조건에 해당하지 않고 조건1이 true 일 때 수행할 내용
</c:when>
...<c:when> 여러개 가능
<c:otherwise>
모든 조건이 false 일 때 수행할 내용
</c:otherwise>
</c:choose>
실습
= score를 가지고 A,B,C,D,F 판정하기
= 실행할 때 파일명 뒤에 score 직접 입력
http://localhost:8080/javawebel0830/jstlcore/cchoose.jsp?score=78
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>choose 테스트</title> </head> <body> <c:choose> <c:when test="${param.score >= 90}"> <h1>당신의 점수는 A</h1> </c:when> <c:when test="${param.score >= 80 }"> <h1>당신의 점수는 B</h1> </c:when> <c:when test="${param.score >= 70 }"> <h1>당신의 점수는 C</h1> </c:when>
<c:when test="${param.score >= 60 }"> <h1>당신의 점수는 D</h1> </c:when> <c:otherwise> <h1>당신의 점수는 F</h1> </c:otherwise> </c:choose> </body> </html>
|
2. Format Library
= 날짜나 숫자 출력 서식 설정, 지역 설정, 다국어 지원등의 기능을 수행해주는 태그 라이브러리
= 사용하기 위한 설정
<%@ taglib prefix="fat" uri="http://java.sun.com/jsp/jstl/fmt" %>
1) <tmt:formatNumber>
= 숫자를 출력 서식 지정을 위한 태그
2) <fmt:formatDate>
= 날짜 출력 서식 지정을 위한 태그
= formatNumber의 pattern 은 java.text.NumberFormat 클래스 참조
= formatDate의 parrern 은 java.text.SimpleDateFormat 클래스 참조
3) <fmt:setLocale>
= 지역 설정을 위한 태그
= 날짜나 숫자 서식이 지역설정에 따라 출력됩니다.
언어코드_국가코드
나라 | 언어코드 | 국가코드 |
한국어 | ko | kr |
일본어 | ja | jp |
영어 | en | us |
여러 나라 어디가 어딘지 모르는게 함정 ㅋㅋㅋㅋ
.utf9이나 @~는 무시 | af_ZA ar_AE ar_AE.utf8 ar_BH ar_BH.utf8 ar_DZ ar_DZ.utf8 ar_EG ar_EG.utf8 ar_IN ar_IQ ar_IQ.utf8 ar_JO ar_JO.utf8 ar_KW ar_KW.utf8 ar_LB ar_LB.utf8 ar_LY ar_LY.utf8 ar_MA ar_MA.utf8 ar_OM ar_OM.utf8 ar_QA ar_QA.utf8 ar_SA ar_SA.utf8 ar_SD ar_SD.utf8 ar_SY ar_SY.utf8 ar_TN ar_TN.utf8 ar_YE ar_YE.utf8 be_BY be_BY.utf8 bg_BG bg_BG.utf8 br_FR bs_BA C ca_ES ca_ES@euro ca_ES.utf8 ca_ES.utf8@euro cs_CZ cs_CZ.utf8 cy_GB da_DK da_DK.iso885915 da_DK.utf8 de_AT de_AT@euro de_AT.utf8 de_AT.utf8@euro de_BE de_BE@euro de_BE.utf8 de_BE.utf8@euro de_CH de_CH.utf8 de_DE de_DE@euro de_DE.utf8 de_DE.utf8@euro de_LU de_LU@euro de_LU.utf8 de_LU.utf8@euro el_GR el_GR.utf8 en_AU en_AU.utf8 en_BW en_BW.utf8 en_CA en_CA.utf8 en_DK en_DK.utf8 en_GB en_GB.iso885915 en_GB.utf8 en_HK en_HK.utf8 en_IE en_IE@euro en_IE.utf8 en_IE.utf8@euro en_IN en_NZ en_NZ.utf8 en_PH en_PH.utf8 en_SG en_SG.utf8 en_US en_US.iso885915 en_US.utf8 en_ZA en_ZA.utf8 en_ZW en_ZW.utf8 es_AR es_AR.utf8 es_BO es_BO.utf8 es_CL es_CL.utf8 es_CO es_CO.utf8 es_CR es_CR.utf8 es_DO es_DO.utf8 es_EC es_EC.utf8 es_ES es_ES@euro es_ES.utf8 es_ES.utf8@euro es_GT es_GT.utf8 es_HN es_HN.utf8 es_MX es_MX.utf8 es_NI es_NI.utf8 es_PA es_PA.utf8 es_PE es_PE.utf8 es_PR es_PR.utf8 es_PY es_PY.utf8 es_SV es_SV.utf8 es_US es_US.utf8 es_UY es_UY.utf8 es_VE es_VE.utf8 et_EE et_EE.utf8 eu_ES eu_ES@euro eu_ES.utf8 eu_ES.utf8@euro fa_IR fi_FI fi_FI@euro fi_FI.utf8 fi_FI.utf8@euro fo_FO fo_FO.utf8 fr_BE fr_BE@euro fr_BE.utf8 fr_BE.utf8@euro fr_CA fr_CA.utf8 fr_CH fr_CH.utf8 fr_FR fr_FR@euro fr_FR.utf8 fr_FR.utf8@euro fr_LU fr_LU@euro fr_LU.utf8 fr_LU.utf8@euro ga_IE ga_IE@euro ga_IE.utf8 ga_IE.utf8@euro gl_ES gl_ES@euro gl_ES.utf8 gl_ES.utf8@euro gv_GB gv_GB.utf8 he_IL he_IL.utf8 hi_IN hr_HR hr_HR.utf8 hu_HU hu_HU.utf8 id_ID id_ID.utf8 is_IS is_IS.utf8 it_CH it_CH.utf8 it_IT it_IT@euro it_IT.utf8 it_IT.utf8@euro iw_IL iw_IL.utf8 ja_JP.eucjp ja_JP.utf8 ka_GE kl_GL kl_GL.utf8 ko_KR.euckr ko_KR.utf8 kw_GB kw_GB.utf8 lt_LT lt_LT.utf8 lv_LV lv_LV.utf8 mi_NZ mk_MK mk_MK.utf8 mr_IN ms_MY ms_MY.utf8 mt_MT mt_MT.utf8 nl_BE nl_BE@euro nl_BE.utf8 nl_BE.utf8@euro nl_NL nl_NL@euro nl_NL.utf8 nl_NL.utf8@euro nn_NO nn_NO.utf8 no_NO no_NO.utf8 oc_FR pl_PL pl_PL.utf8 POSIX pt_BR pt_BR.utf8 pt_PT pt_PT@euro pt_PT.utf8 pt_PT.utf8@euro ro_RO ro_RO.utf8 ru_RU ru_RU.koi8r ru_RU.utf8 ru_UA ru_UA.utf8 se_NO sk_SK sk_SK.utf8 sl_SI sl_SI.utf8 sq_AL sq_AL.utf8 sr_YU sr_YU@cyrillic sr_YU.utf8 sr_YU.utf8@cyrillic sv_FI sv_FI@euro sv_FI.utf8 sv_FI.utf8@euro sv_SE sv_SE.iso885915 sv_SE.utf8 ta_IN te_IN tg_TJ th_TH th_TH.utf8 tl_PH tr_TR tr_TR.utf8 uk_UA uk_UA.utf8 ur_PK uz_UZ vi_VN vi_VN.tcvn wa_BE wa_BE@euro yi_US zh_CN zh_CN.gb18030 zh_CN.gbk zh_CN.utf8 zh_HK zh_HK.utf8 zh_TW zh_TW.euctw zh_TW.utf8
|
** JSTL 을 사용하고자 하는 경우에는 먼저 jstl.jar 파일을 프로젝트의 build path에 추가해주어야 합니다.
- 웹프로젝트는 WEB-INF/lib 디렉토리에 복사해주면 됩니다.

** JSTL의 다국어 설정
<fmt:setBundle> 과 <fmt:message> 태그 이용
- 다국어로 사용할 문자열을 동일한 대표이름_언어코드.properties 파일을 만들어서 key=값의 형태로 작성해서 WEB-INF/classes 디렉토리에 저장합니다.
- 다국어를 사용할 jsp 페이지에서 fmt:setBundle 태그의 basename 속성에 대표이름을 설정합니다.
- 사용할 다국어 메시지를 출력할 때는 fmt:message key=key이름 태그를 이용해서 출력합니다.
실습 - 언어 설정에 따라 title이 다르게 보이는 예제
1. project의 WEB-INF디렉토리에 classes 디렉토리 생성

- 모양이 다른 것은 실행에 필요한 파일이라서 그런것이다.
- 이름이 틀리면 일반 파일 모양으로 만들어지니 잘 확인할 것.
2. classes 디렉토리에 대표이름_언어코드.properties 파일을 생성해서 작성
1) 한국어 파일 : intro_ko.properties

- [환경설정]의 [preferences]의 [general]의 [workspace]에서 'Text file encoding' 설정이 'utf-8'로 되어 있어야지 오른쪽 화면처럼 "다국어지원"이라는 한글을 쓰면 위와 같이 자동으로 번역이 되어 작성된다.
2. 영어 파일 : intro_en.properties
title=Multilingual Support |
3. 다국어를 사용할 페이지를 생성 : fmt/multilang.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- jstl 의 fmt 기능을 위한 태그 라이브러리 설정 --> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!-- 다국어 설정 파일의 대표 이름 설정 --> <fmt:setBundle basename="intro"/> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>다국어지원</title> </head> <body> <h1><fmt:message key="title"/></h1> </body> </html> |

처음 실행하면 한국어로 보인다.(설정이 그렇기 때문)

구글의 [설정]의 [고급]에서 [언어]를 클릭해서 출력하고자 하는 언어를 '제일 위'에 위치시킨다.

페이지를 새로고침하면 영어로 바뀐다.
timeZone 사용
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*" %> <!-- jstl 의 fmt 기능을 위한 태그 라이브러리 설정 --> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <!-- 다국어 설정 파일의 대표 이름 설정 --> <fmt:setBundle basename="intro"/> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <c:set var="date" value="<%=new Date() %>"></c:set> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>다국어지원</title> </head> <body> <h1><fmt:message key="title"/></h1> 서울: <fmt:formatDate value="${date }" type="both"/> <br/> <fmt:timeZone value="Europe/London"> 런던:<fmt:formatDate value="${date }" type="both"/> </fmt:timeZone> </body> </html> |
** Custom Action 태그
자주 사용하는 태그나 jsp 파일의 내용을 별도의 파일로 만들어 두고 태그 형식으로 호출하는 기능
작업방법
1. 별도의 디렉토리 생성
2. 디렉토리에 ?.tag라는 파일을 만들어서 자주 사용하는 코드를 작성
3. 가져다 사용하고자 하는 파일에서는
<%@ taglib tagdir="태그 파일의 데렉토리 경로" prefix="태그의 접두어를 설정"/>
<접두어:파일명/>을 입력하면 ?.tag의 내용이 삽입됩니다.
실습
1. WEB-INF 디렉토리에 tags(내 맘데로 정해도 됨)디렉토리 생성