Posted by 조은성
,

* Model2 : MVC패턴을 Web Application에 적용한 것

- Model - Java Beans -> Java class.(자바빈즈로 구조를 형상화)
- View - Jsp(화면단을 태그 형식으로 만듬)
- controller - Servlet(자바와 jsp를 제어)

Posted by 조은성
,

* MVC 디자인 패턴

 1. GUI 기반 Application 설계 패턴
 2. 클라이언트의 요청을 받아 처리하여 응답하는 로직을 세개의 로직(Model, View, Controller)로 나누어 개발
 3. Model
   - Business Logic(클라이언트 요청에 대한 업무 처리)을 담당
   - Business ServiceData Access Object 로 분리
     - Business Service
       - Business 로직의 일의 흐름(work flow)을 관리
       - DB 관련된 작업을 제외한 로직을 처리
     - Data Access Object(DAO)
       - Database 관련된 로직만 처리(쿼리만 처리)
       - DB 관련 로직을 제외한 어떠한 업무처리도 가지지 않는다.

 4. View
   - 처리결과를 응답하는 로직을 담당(Presentation Logic)

 5. Controller
   - Client의 요청을 처리하는 전제 흐름을 control 하는 역할을 담당
   - 처리내용
     1. client의 요청을 받는다.
       1-1 client가 요청시 입력한 값을 읽는다.
       1-2 client로 부터 받은 값을 검증한다.
     2. Business 로직을 호출한다. - Model 호출
     3. 응답 처리 로직을 호출 한다. - View 호출

Posted by 조은성
,

* Filter(여러컴포넌트에서 공통적으로 처리해야하는 것을 뽑아내서 처리)

  1. 클라이언트의 요청을 받은 component(Servlet, JSP)가 일하기 전 처리, 일한 후 처리를 담당하는 컴포넌트

  2. 구현
   - java.servlet.Filter를 implements
   - callback(lifecycle) 메소드 재정의
   - init(FilterConfig)
   - destroy()
   - doFilter(ServletRequest, ServletResponse, FilterChain)
* FilterChain : 다음 처리 동작에 대한 정보를 가지고 있다.
 
 3. web.xml에  filter등록
   <filter> 태그 : filter객체 등록
   <filter-mapping>태그 : 필터가 호출될 url 설정

 

▶ example (UTF-8 인코딩)

request.setCharacterEncoding("UTF-8") 대신 필터를 사용

- 한번 지정해 놓으면 project내 어느 곳에서나 자동으로 적용된다.

 

 

 

Posted by 조은성
,

 

member_servlet_jstl.zip

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 - 결과보기

 

 

 

 

 

 

 

 

Posted by 조은성
,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

member_servlet_text.zip

Posted by 조은성
,

* JSTL (JSP Standard Tag Library)

1. custom tag library로 JSP 스펙에는 포함되지 않았지만 자바 진영에서 진행하는 태그 라이브러리.
 - 커스텀 태그(custom tag) : JSP에서 스크립트릿으로 작성해야할 동적 로직을 태그로 처리
 - jstl.java.net에서 api를 다운로드 후 web application의 lib 폴더에 넣어 사용한다.

2. JSP에서 커스텀 태그를 사용하기 위해서는 taglib 지시자 태그 설정 필요
 <%@ taglib prefix="접두어" uri="태그 라이브러리 구분자"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl.core"%>
 사용 : <c:>

3. JSTL 종류
 - core : program의 기본적인 내용들을 지원. 변수, 제어문, 출력 등
   uri : http://java.sun.com/jsp/jstl/core
 - xml : XML 관련 처리
   uri : http://java.sun.com/jsp/jstl/xml
 - 국제화 : ResourceBundle을 이용한 국제화 처리
   uri : http://java.sun.com/jsp/jstl/fmt
 - 데이터베이스 : JSP에서 DB 접근하기 위한 로직 지원
   uri : http://java.sun.com/jsp/jstl/sql

* 주요 Core 라이브러리

1. 변수 지원
 - set : JSP에서 Attribute로 binding된 객체 처리
 - remove : binding된 attribute 제거

2. 제어문 지원
 - if : if문
 - choose : 다중 조건 처리
 - forEach : 반복문 처리

3. 출력지원
 ① out 태그

   - 태그형태의 문자열을 그대로 출력되도록 처리할 수 있다.
 - 속성
   - value : 출력할 내용
   - escapeXml : 태그 출력 여부 처리
                        true : 태그를 해석하지 않고 그대로 출력
                        false : 태그를 해석해서 출력
- default : value의 값이 null일 경우 출력할 기본 값

*
WebContent
이름 : jstl/out.jsp

- 결과



② if 태그

 - 단일 조건 조건문 처리. -if문과 동일
 - 다중 조건 처리에는 사용할 수 없다. (if-else)
 - 속성
    - test : 조건 설정
 - 구문
    <c:if test="조건">
    조건 만족시 실행할 내용
    </c:if>

*
WebContent
이름 : jstl/if.jsp

* 로그인한 사람이 19세 이하일 경우 결과보기

* 로그인한 사람이 19세 이상일 경우 결과보기

③ choose 태그

 - 다중 조건을 처리하는 태그 - if else, switch case
 - choose 태그는 조건들을 묶어주는 역할
 - 하위태그
 - when 태그
 - 선택할 조건을 표시하기 위한 태그
 - 속성 : test - 조건 설정
 - otherwise
 - else의 역할(switch case의 default 역할)
 - 구문
    <c:choose>
    <c:when test="조건1">
    조건1이 true일 경우 실핼할 내용
    </c:when>
    <c:otherwise>
    when의 모든 조건이 만족 하지 않을 경우 실행할 내용
    </c:otherwise>
    </c:choose>

* 결과

 

 

④ forEach 태그

 - 컬랙션이나 배열을 반복해서 element들을 조회
   - 속성
      - items : 반복할 컬랙션이나 배열 설정
      - var : 반복시 조회할 element를 참조할 변수 선언
   - 구문
<c:forEach var="var" items="배열">
${var}
</c:forEach>

 - 특정 횟수만큼 반복을 처리
   - 속성
      - begin : 시작 값
      - end : 종료 값
      - step : 증감 값
      - var : 변화되는 값을 저장할 변수 선언
<c:forEach begin="1" end="10" step="1" var="i">
${i} - 안녕
</forEach>

 

- 결과

⑤ set 태그

 1. 4개 속성영역에 값(Attribute)를 binding
  - 속성
      var : binding할 이름
      scope : binding할 속성영역. 값 : page, request, session, application
      value : binding할 속성 객체
      - 예) <c:set var="name" scope="request" value="홍길동"/>

 2. binding된 Attribute의 property에 값을 설정
   - 속성
      target : property를 설정할 attribute
      value : property에 설정할 값
      property : 값을 설정할 property
   - 예 <c:set target="${requestScope.cto}" property="id" value="aaa"/>
 
⑥ remove 태그

 - 4개 속성영역에 binding된 attribute객체를 제거하는 태그
 - 속성
   var : 제거할 속성의 이름
   scope : 제거할 속성이 binding된 영역(page, request, session, application)
 - 예) <c:remove scope="request" var="cto"/>

 

 

 

 

Posted by 조은성
,

javax.servlet.jsp.jstl-api-1.2.1.jar
javax.servlet.jsp.jstl-1.2.1.jar

* jstl(자바표준 태그 라이브러리)

* jstl.java.net접속

* jstl custom tag library다운(표준 엑션태그가 아닌 우리가 만들어 쓰는 태그)
1. javax.servlet.jsp.jstl-api-1.2.1.jar
2. javax.servlet.jsp.jstl-1.2.1.jar

* 비지니스 로직을 태그화 시키기 위한 jar 파일.

 

 

 

 

 

* 이클립스에서 사용하기 위해서는 다운 받을 것을 lib에 마우스로 끌어다가 넣거나 컨트롤 C, V로 lib에 붙여넣는다.

 

 

 

Posted by 조은성
,

* EL(Expression Language) - 표현식 언어

1. JSP 2.0에서 새로 추가된 스크립트 언어
2. 기존의 expression tag의 업그레이드 버전

3. 주요기능
   - 리터럴 데이터 출력
   - 각종 연산자를 제공하여 연산결과 출력을 지원
   - 4개 속성 scope(page, reqeust, session, application)에 binding된 Attribute(객체)나 그 Attribute의 property값 출력
   - JSTL과 연동

4. 구문
   - ${출력내용} - ${10}, ${"안녕"}, ${10+20}
   - ${value1.value2[.value3 ..]}
      - 특정 객체의 property 접근 할 때 사용


   - ${value1[value2]}
      - 컬랙션(list 계열)의 값을 출력할 때 주로 사용


   - value1에는 EL 내장객체나 attribute 명이 들어와야 한다.
   - 구문을 실행 도중 null이 나오면 더이상 진행하지 않고 출력도 하지 않는다.
   - 예)
      ${requestScope.mto.id}
      ${cto.address.zipcode}
      ${sessionScope.list[0]}

5. JSP의 scropt(스크립트 릿, 표현식, 선언식, 지시자) 태그에는 사용 못한다.
6. action 태그내에는 사용 가능
   - <jsp:include page="${dir}/a.jsp"/>


7. EL의 내장객체(기본객체)
 - EL은 11개의 내장객체를 제공하여 별다른 추가 코드 없이 특정 객체에 접근하여 사용할 수 있도록 한다.
   - JSP의 내장객체와는 다르다.(pageContext는 jsp와 같지만 쓸일이 없다)
   - EL 내장객체 중 pageContext를 제외하고는 모두 name - value 형태의 값을 관리한다.
   - ${} 내에서만 사용가능 하며 첫번째 값으로만 올 수 있다.

 - scope와 관련된 내장객체
   - pageScope : pageScope에 접근
   - requestScope : request Scope에 접근
   - sessionScope : session scope에 접근

   - applicationScope : application scope에 접근

 - 요청파라미터 관련 내장객체
   - param : 요청파라미터 조회시 사용(하나의 이름 하나의 값이 넘어온 경우)
   - paramValues - 요청파라미터 조회시 사용(하나의 이름으로 여러값이 넘어온 경우)

 - Header 값 관련
   - header
   - headerValues

 - 쿠키 값 조회
   - cookie : ${cookie.이름.value}

 - 초기 파라미터 조회(context-param으로 설정된 것)
   - initParam

 - PageContext 객체 관련 내장객체
   - pageContext

                           

* [실습]

*

 

* 결과보기

 

*

 

* 결과보기

 

*

 

 

 * 결과보기

 

 * 위에 <%@ page isELIgnored="true" %>을 사용하면 el을 문자 그대로 표현할 수 있다.

Posted by 조은성
,

* include

1. JSP 페이지 내에 다른 컴포넌트(JSP, HTML, Servlet)를 포함 시키는 기술
   - 주로 jsp나 html을 포함시킨다.
   - include 지시자 태그를 이용, 표준 action 태그 이용
   - 기타 : JSTL(jsp standard tag library)의 import 태그 이용, tiles 프레임 워크

2. <%@ include%> 지시자 태그 이용
   - copy and paste 방식
      - jsp를 servlet으로 변환하기 전에 포함시킬 파일의 내용을 카피하여 붙인다. 
      - 구문 : <%@include file="포함시킬 파일명"%>

* [실습]

jsp
WebContent
이름 : include/a.jsp, b.jsp

 

 

 

- 실행결과(지시자 태그를 사용하면 소스를 그대로 붙여서 사용하기 때문에 a.jsp에 선언된 k를 b.jsp에서 인식해서 에러가 나지 않지만 아래 액션태그를 사용하면 k를 인식하지 못해서 에러를 낸다.(액션 태그는 RequestDispatcher 방식으로 요청을 하고 결과만을 받아서 중간에 있는 k를 인식하지 못한다. )

 

 

3. <jsp:include> 액션 태그 이용
- 요청 디스패치 방식
- 수행을 포함시킬 컴포넌트로 이동한 뒤 출력내용을 포함시키는 방식
- 구문
<jsp:include page="url"/>
<jsp:include page="url">
<jsp:param name="name" value="value"/>
</jsp:include>

 

* [실습]

 

 

 

* 결과

 

 

* <jsp:param id="" value=""> 사용하기

 

 

 

 

- 실행결과

 

 

* 일반적으로 include는 지시자 태그를 이용하는 것이랑 액션태그를 사용하는 것은 다를 바 없게 사용한다. 위와 같이 k를 변수로 선언하고 k를 사용하는 식으로 사용하지는 않는다. include 태그 안에는 그 파일에 꼭 필요한 소스만 넣는 것을 원칙으로 한다. 

'프로그래밍 > JSP Programming' 카테고리의 다른 글

2012-5-8 JSTL정의 및 태그 실습  (0) 2012.05.08
2012-5-7 EL(Expression Language) - 표현식 언어  (0) 2012.05.07
2012-5-4 <jsp:forward>  (0) 2012.05.04
2012-5-4 <jsp:getProperty> 태그  (0) 2012.05.04
2012-5-4 setProperty  (0) 2012.05.04
Posted by 조은성
,