: 숫자, 날짜 및 시간 데이터의 출력 형식을 지정할 때 사용하는 문법 제공
taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"
: 숫자 데이터의 출력형식(포맷) 지정
<c:set var="num1" value="123456789" />
그냥 출력 : ${ num1 } <br>
세자리마다 구분하여 출력 : <fmt:formatNumber value="${ num1 }" /> <br>
숫자 그대로 출력 : <fmt:formatNumber value="${ num1 }" groupingUsed="false" /> <br>
<!-- groupingUsed : 숫자단위의 구분자(,) 표시 여부 지정 -->
<c:set var="num2" value="0.75" />
<c:set var="num3" value="50000" />
percent : <fmt:formatNumber value="${ num2 }" type="percent" /> <br>
currency : <fmt:formatNumber value="${ num3 }" type="currency" /> <br>
currency : <fmt:formatNumber value="${ num3 }" type="currency" currencySymbol="$" groupingUsed="false"/>
<!--
type : 백분율(percent), 통화기호(currency) 지정
currencySymbol : 통화기호 문자 지정
-->
: 날짜 및 시간 데이터의 출력형식(포맷) 지정
-java.util.Date 객체를 사용해야 됨
<c:set var="today" value="<%= new java.util.Date() %>" />
<ul>
<li>그냥 출력 : ${ today }</li>
<li>현재 날짜 : <fmt:formatDate value="${ today }" type="date" /></li>
<!-- type 생략가능 (기본값: date) -->
<li>현재 시간 : <fmt:formatDate value="${ today }" type="time" /></li>
<li>둘 다 : <fmt:formatDate value="${ today }" type="both" /></li>
<li>[Full] : <fmt:formatDate value="${ today }" type="both" dateStyle="full" timeStyle="full" /></li>
<li>[Long] : <fmt:formatDate value="${ today }" type="both" dateStyle="Long" timeStyle="Long" /></li>
<li>[Medium] : <fmt:formatDate value="${ today }" type="both" dateStyle="Medium" timeStyle="Medium" /></li>
<li>[Short] : <fmt:formatDate value="${ today }" type="both" dateStyle="Short" timeStyle="Short" /></li>
<li>내 패턴 : <fmt:formatDate value="${ today }" type="both" pattern="yyyy-MM-dd (E) HH:mm:ss()" /></li>
</ul>
: EL 안에서 사용할 수 있는 메소드를 제공
<예시>
<c:set var="str" value="How are you?" />
str: ${ str } <br>
문자열의 길이 : ${ str.length() } <br>
문자열의 길이 : ${ fn:length(str) } <br>
모두 대문자로 출력 : ${ fn:toUpperCase(str) } <br>
모두 소문자로 출력 : ${ fn:toLowerCase(str) } <br>
are의 시작위치 : ${ fn:indexOf(str, 'are') } <br>
are=> were로 변경하기 : ${ fn:replace(str, 'are', 'were') } <br>
replace 후 str : ${ str } <!-- 아예 변경되지는 않음 --> <br>
<c:if test="${ fn:contains(str, 'are') }">
포함되어 있음
</c:if>
- 개발자가 보다 편리한 환경에서 개발 할 수 있도록 제공하는 틀, 뼈대라고 생각하면 됨
- 사전적 정의로는 '복잡한 문제를 해결하거나 서술하는데 사용하는 기본 개념 구조'
- 소프트웨어 개발의 입장으로는 '공통으로 사용하는 라이브러리/개발도구/인터페이스 등등을 의미'
- 현재 웹프로그래밍의 추세는 엄청난 규모의 프로젝트가 많음
=> 거대하고 복잡도 높은 프로젝트를 하기 위해서 많은 개발자들이 필요함
=> 개발자들이 "통일성"있게 "빠르고" "안정적"으로 개발하기 위해 프레임워크란 매우 좋은 성과를 내고 있음
=> 생산성 향상
- 자유롭게 설계하고 코딩하는 것이 아니라 프레임워크가 제공하는 가이드대로 설계하고 코딩을 해야됨
- 개발자를 위한 다양한 도구들이 지원됨
- 개발할 수 있는 범위가 정해져있음
- 개발자들이 따라야 하는 가이드라인 제공 --> 그 가이드 라인대로 작업해야됨, 세팅해야됨
- 개발자가 지정한 sql, 저장 프로시저 그리고 몇가지 고급 매핑, 동적 sql문 등을 지원하는 영속성 프레임워크
- JDBC로 처리하는 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해줌
- 기존에 Apache에서 ibatis를 운영하던 팀이 2010년도에 Google로 팀 이동하면서 mybatis로 이름을 변경 ( ibatis는 현재 비활성화 상태, 단지 라이브러리만 제공하고 있는 상태)
=> ibatis는 JDK 1.4이상, mybatis는 JDK 1.5이상 사용 가능
: Filter 기본 구조
package com.kh.mybatis.common;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* Servlet Filter implementation class EncodingFilter
*/
@WebFilter("/EncodingFilter")
public class EncodingFilter implements Filter {
/**
* Default constructor.
*/
public EncodingFilter() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// Servlet 구동 전에 실행시키고자 하는 코드 작성
chain.doFilter(request, response); // 다음 필터가 있다면 그 다음필터 호출, 다음 필터 없다면 Servlet 호출
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}