5/17(월) JSTL Library(2)

24251 단어 jspjsp

2. JSTL Formatting Library

: 숫자, 날짜 및 시간 데이터의 출력 형식을 지정할 때 사용하는 문법 제공

taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"

1) formatNumber

: 숫자 데이터의 출력형식(포맷) 지정

  • 표현하고자 하는 숫자 데이터 형식을 통화기호, % 등 원하는 쓰임에 맞게 지정하는 태그
	<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 : 통화기호 문자 지정
	 -->

2) formatDate

: 날짜 및 시간 데이터의 출력형식(포맷) 지정

-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>

3. JSTL Function Library

: 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>

myBatis

Framework

프레임워크(FrameWork)

  • 개발자가 보다 편리한 환경에서 개발 할 수 있도록 제공하는 틀, 뼈대라고 생각하면 됨
  • 사전적 정의로는 '복잡한 문제를 해결하거나 서술하는데 사용하는 기본 개념 구조'
  • 소프트웨어 개발의 입장으로는 '공통으로 사용하는 라이브러리/개발도구/인터페이스 등등을 의미'

프레임워크를 왜 써야 되는지 (필요성)

  • 현재 웹프로그래밍의 추세는 엄청난 규모의 프로젝트가 많음
    => 거대하고 복잡도 높은 프로젝트를 하기 위해서 많은 개발자들이 필요함
    => 개발자들이 "통일성"있게 "빠르고" "안정적"으로 개발하기 위해 프레임워크란 매우 좋은 성과를 내고 있음
    => 생산성 향상

프레임워크의 특징

  • 자유롭게 설계하고 코딩하는 것이 아니라 프레임워크가 제공하는 가이드대로 설계하고 코딩을 해야됨
  • 개발자를 위한 다양한 도구들이 지원됨
  • 개발할 수 있는 범위가 정해져있음
  • 개발자들이 따라야 하는 가이드라인 제공 --> 그 가이드 라인대로 작업해야됨, 세팅해야됨

* 프레임워크의 장점

  • 개발시간을 줄일 수 있음
  • 오류로부터 자유로울 수 있음
  • 유지보수에 용이

* 프레임워크의 단점

  • 프레임워크에 너무 의존하면 개발자들의 능력이 떨어질 수 있다
  • 습득하는데 오랜 시간 걸릴 수 있음

* 프레임워크 종류

  • 영속성 : 데이터 관련한 CRUD 기능들을 보다 편리하게 작업할 수 있도록 제공해주는 프레임워크 ex)MyBatis, Hibernate...
  • 자바 : 웹애플리케이션에 초점을 맞춰 필요한 요소들을 모듈화해서 제공해주는 프레임워크 ex) Spring, Struts
  • 화면단 : Front-End를 보다 쉽게 구현할 수 있게 틀을 제공해주는 프레임워크 ex)부트스트랩,,
  • 기능 및 지원 : 특정 기능이나 업무 수행에 도움을 줄 수 있는 기능을 제공하는 프레임워크 ex) Log4j, JUnit,...

mybatis 개요

  • 개발자가 지정한 sql, 저장 프로시저 그리고 몇가지 고급 매핑, 동적 sql문 등을 지원하는 영속성 프레임워크
  • JDBC로 처리하는 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해줌
  • 기존에 Apache에서 ibatis를 운영하던 팀이 2010년도에 Google로 팀 이동하면서 mybatis로 이름을 변경 ( ibatis는 현재 비활성화 상태, 단지 라이브러리만 제공하고 있는 상태)
    => ibatis는 JDK 1.4이상, mybatis는 JDK 1.5이상 사용 가능

기본 구조

Filter 만들기

: 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
	}

}

좋은 웹페이지 즐겨찾기