System.out.println("Hello, World");

'프로그래밍/JSP & Servlet'에 해당되는 글 36건

  1. 2012.05.16 게시판 만들기 -SQL 작성
  2. 2012.05.10 Model1방식의 ID 검색하기
  3. 2012.05.10 Model2 방식의 계산기 만들기
  4. 2012.05.10 MVC model1과 MVC model2
  5. 2012.05.09 MVC 패턴
  6. 2012.05.09 Filter
  7. 2012.05.08 JSTL(JSP Standard Tag Library)
  8. 2012.05.08 JSTL 플러그인 다운 및 적용하기
  9. 2012.05.07 EL(Expression Language) 표현식 언어
  10. 2012.05.07 JSP : include

테이블 생성 - 게시판(board)

속성

no : number - primary key : 글번호

title : varchar2(150) - not null : 글제목

writer : varchar2(30) - not null : 글 작성자

content : varchar2(4000) - not null : 글 내용 

writedate : varchar2(14) - not null : 글 작성(수정) 일시 yyyyMMddHHmmss 총 14자리

viewcount : number - not null : 조회수(최초 입력 : 0, 조회시 마다 1씩 증가)

=============답변과 관련된 속성들=========

refamilly : number = not null : 원본글 기분으로 그 답변 글들을 묶은 그룹 번호

기준글(최초 원본글) - 새로운 값(글번호)

답변글 : 답변하는 글의 refamilly값

restep : number - not null : 같은 refamilly 묶인 글들 사이에서의 정렬 순서

 기준글 : 0

 답변글 : 답변하는 글의 restep값 +1

relevel : number - not null : 답변 레벨

  기준글 : 0

  답변글 : 답변하는 글의 relevel값에 +1

 

  

시퀀스 - 게시판 글 번호를 위한 자동증가 시퀸스

이름 : board_no_sql : 0~무한대, 1씩 증가한다.


create table board(

no number,

title varchar2(150) not null,

writer varchar2(30) not null,

content varchar2(4000) not null,

writedate varchar2(14) not null,

viewcount number not null,

refamilly number not null,

restep number not null,

relevel number not null,

constraint board_no primary key(no)

)


create sequence board_no_seq

Posted by 김마농

Model1방식의 ID 검색하기

 - DAO는 DB관련 업무처리를 하는 놈들이다. 


<Test_select.jsp>


<Test_result.jsp>


<TestDAO>







Posted by 김마농

Model2 방식의 계산기 만들기

<calc_form.jsp>


<CalculatorServlet>


<CalculatorService>


<error.jsp>


<calc_result.jsp>





Posted by 김마농

Model1

 - JSP 파일내에서 뷰와 컨트롤러 모두 실행되어 지는 구조



○ 장점

- 개발 기간 단축(단순한 페이지 흐름)

- 팀원의 수준이 높이 않아도 된다. 즉 초보자도 쉽게 배울 수 있다.

- 중소형 프로젝트에 적합


○ 단점

- 웹 어플리케이션이 복잡해질수록 유지보수가 어렵다.

- 디자이너와 개발자간의 의사소통이 필요하다.(비니니스 로직과 뷰 사이의 구분이 미비하다.)


Model2

 - Controller(servlet)을 통해 비지니스 로직과 뷰가 분리된 형태

 - JSP에서는 뷰를 담당하고, 자바 클래스에서 비지니스 로직을 담당한다.



○ 장점

- 비지니스 로직과 뷰의 분리로 유지보수와 확장이 용이하다.

- 개발자와 디자이너의 작업이 분리되어 분업이 편리하다.


○ 단점

- 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가한다.

- 개발자들이 구조에 대한 이해가 필요하기 때문에 팀원의 높은 수준이 요구된다.


원문 : http://kiringun.egloos.com/660489


Posted by 김마농

MVC 패턴

○ GUI기반 Application 설계 패턴

○ 클라이언트의 요청을 받아 처리하여 응답하는 로직을 세개의 로직(Model, View, Controller)로 나누어 개발


-Model

  >Business Logic(클라이언트 요청에 대한 업무 처리)을 담당

  >Business Service와 Data Access Object로 분리

   >Business Service

    ◇ Business 로직의 일의 흐름을 관리

    ◇ #DB 관련된 작업을 제외한 로직을 처리

   >Data Access Object(DAO)

    ◇ Database 관련된 로직만 처리

    ◇ DB 관련 로직을 제외한 어떠한 업무처리도 가지지 않는다.


-View

 >처리 결과를 응답하는 로직을 담당(Presentation Logic)


-Controller

 > Client의 요청을 처리하는 전체 흐름을 control하는 역할을 담당


 처리내용

 1. client의 요청을 받는다.

  1-1 client가 요청시 입력한 내용을 읽는다.

  1-2 client로 부터 받은 값을 검증한다.

 2. Business 로직을 호출한다. - Model 호출

 3. 응답처리 로직을 호출한다. - View 호출


Model2 -> Web Application에 MVC 패턴 적용

Model - java bean -> java class

view - JSP

Controller - Servlet


<calculator를 MVC 패턴으로 만들기>

controller는 servlet으로 만들며, View는 JSP, Model은 Java를 이용하여 만들도록 한다. 


[컨트롤러]CalculatorServlet


[Model]CalculatorService


[클라이언트가 입력하는 페이지]Calculator_form.jsp


[View]Calculator_Servlet.jsp




Posted by 김마농

Filter

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

 - 구현

> javax.servlet.Filter를 implments

> callback(liftcycle) 메소드 재정의

-init(FilterConfig)

-destroy()

-doFileter(ServletRequest, ServletResponse, FilterChain)

> web.xml에 filter 등록

<filter>태그 : filter 객체 등록

<filter-mapping>태그 : 필터가 호출될 url 설정



<예제>

EncodingFilter

web.xml

웹서버가 실행되면 클라이언트의 요청 전에 Filter를 거친다음에 응답한다. 그래서 클라이언트의 요청전에 

한글처리가 되어 서블릿에 한글처리르를 안해도 한글처리되어 값이 넘어간다.


Posted by 김마농

JSTL(JSP Standard Tag Library)

-custom tag library로 JSP 스펙에는 포함되지 않았지만 자바 진영에서 진행하는 태그 라이브러리

-커스텀 태그 : JSP에서 스크립트릿으로 작성해야할 동적 로직을 태그로 처리

-jstl.java.net에서 api를 다운로드 후 web application의 lib 폴더에 넣어 사용한다.

-JSP에서 커스텀 태그를 사용하기 위해서는 taglib 지시자 태그 설정 필요

 <%@ taglib prefix="접두어" uri="태그 라이브러리 구분자"%>


○ 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



○ 주요 코어 라이브러리

-변수지원

-set : JSP에서 Attribute로 binding된 객체 처리

-set 태그

1. 4개 속성영역에 값(Attribute)를 binding

                 - 속성

var : binding할 객체 이름

scope : binding할 속성영역. 값 : page, request, session, application

value : binding할 속성 객체

ex)<c:set var="name" scope="request" value="홍길동"/>

<c:set var="errorMessage" scope="request" value="치명적인 오류"/> 

이것을 get할때는 똑같이 ${requestScope.errorMessage}하면 된다.


2. binding된 Attribute의 property에 값을 설정

- 속성

target : property를 설정한 attribute

value : property에 설정할 값

property : 값을 설정할 property

ex) <c:set target="${requestScope.cto}" property="id" value="aaa"/>


-remove 태그

-remove : binding된 attribute 제거

-4개 속성영역에 binding된 attribute 객체를 제거하는 태그

-속성

var : 제거할 속성의 이름

scope : 제거할 속성이 binding된 영역(page, request, session, application)

ex) <c:remove scope="request" var="cto"/>


-제어문 지원

-if : if문

-if 태그

-단일 조건 조건문 처리 -if문과 동일

-다중 조건 처리에는 사용할 수 없다.(if-else)

-속성

-test : 조건 설정 true/false

-구문

<c:if test="조건">조건 만족시 실행할 내용</c:if>

<c:if test="<%=x<10">조건 만족시 실행할 내용</c:if>


-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를 참조할 변수 선언

ex)<c:forEach var="var" items="배열">

${var.id}

    </c:forEach>


> 특정 횟수만큼 반복을 처리

-begin : 시작 값

-end : 종료 값

-step : 증감 값

-var : 변화되는 값을 저장할 변수 선언

ex)<c:forEach begin="1" end="10" step="1" var="i">

${ i } - 안녕

</c:forEach>



ex) if문 적용하기


-출력지원

-out 태그

-태그형태의 문자열을 그대로 출력되도록 처리할 수 있다.

-속성

-value : 출력할 내용

-escapeXml : 태그 출력 여부 처리

-true : 태그를 해석하지 않고 그대로 출력

-false : 태그를 해석해서 출력

-default : value의 값이 null일 경우 출력할 기본 값

ex) 그냥 출력하기


ex) EL과 연동


ex) 출력할때 태그 연동하기


ex) null값 출력 및 기본 값 


위 그림처럼 requestScope에 아무것도 없으면 null값이 출력된다. 또한 default="값"에다가 값을 넣으면 기본값이 출력된다.



또한 default에 안넣는다고 해도 <c:out> 값 </c:out>에 값을 넣어도 기본값으로 나온다.


Posted by 김마농

1. http://jstl.java.net/로 들어가서 다운로드를 클릭한다.



2. JSTL API를 클릭한다.


3. javax.servlet.jsp.jstl-api-1.2.1.jar을 다운 받는다.


4. 다시 뒤로 돌아와서 JSTL Implementation을 선택한다.


5. javax.servlet.jsp.jstl-1.2.1.jar을 다운받는다.


6. 다운받은 2파일을 lib 폴더에 넣으면 자동으로 적용된다.



Posted by 김마농

EL(Expression Language) 표현식 언어

-JSP 2.0에서 새로 추가된 스크립트 언어

- 기존의 expression tag의 업그레이드 버전

-주요기능

-리터럴 데이터 출력

-각종 연산자를 제공하여 연산결과 출력을 지원'

-4개 속성 scope(page, request, session, application)에 binding된 Attribute(객체)나 그 Attribute의 property 값 출력

-JSTL과 연동


-구문

- ${출력내용} - ${10}, ${"안녕"}, ${10+20}

- ${value1.value2[.value3 ..]}

특정 객체의 property 접근 할 때 사용

- ${value1[value2]}

컬렉션(list 계열)의 값을 출력할 때 주로 사용

- value1에는 EL 내장 객체나 attribute명이 들어온다.

- 구문을 실행 도중 null이 나오면 더 이상 진행하지 않고 출력도 하지 않는다.

- 예)

${requestScope.mto.id}

${cto.address.zipcode}

${sessionScope.lost[0]}

- JSP의 script(스크립트 릿, 표현식, 선언식, 지시자) 태그에는 사용 못한다.

- action 태그내에는 사용 가능

-<jsp:include page="${dir}/a.jsp"/>


-EL의 내장 객체(기본객체)

-EL은 11개의 내장객체를 제공하여 별다른 추가 코드 없이 특정 객체에 접근 하여 사용할 수 있도록 한다.

-JSP의 내장객체와는 다르다.

-EL 내장객체중 pageContext를 제외하고는 모두 name-value 형태의 값을 관리한다.

- ${}내에서만 사용가능하며 첫번재 값으로만 올 수 있다.

-Scope와 관련된 내장객체

-pageScope : page Scope에 접근

-requestScope : request Scope에 접근 

-sessionScope : session Scope에 접근

-applicationScope : application Scope에 접근


-요청 파라미터 관련 내장 객체

-param : 요청 파라미터 조회시 사용(하나의 이름으로 넘어온 경우)

-paraValues - 요청 파라미터 조회시 사용(하나의 이름으로 여러값이 넘어온 경우)


-Header값 관련

-header

-headerValues


-쿠키값 조회

-cookie : ${cookie.이름.value}


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

-initParam


-pageContext 객체 관련 내장 객체

-pageContext

Posted by 김마농

include 

-JSP 페이지 내에 다른 컴포넌트(JSP,HTML,Servlet)를 포함시키는 기술

- 주로 JSP나 HTML을 포함시킨다.

- include 지시자 태그를 이용, 표준 action 태그 이용

- 기타 : JSTL의 import 태그 이용, tiles 프레임 워크

-<%@ include %> 지시자 태그 이용

- copy and paste 방식

-jsp를 servlet으로 변환하기 전에 포함시킬 파일의 내용을 카피하여 붙인다.

-구문 : <%@include file="포함 시킬 파일명 "%>

-<jsp:include> 액션 태그 이용

- 요청 디스패치 방식

- 수행을 포함시킬 컴포넌트로 이동한 뒤 출력 내용을 포함시키는 방식

- 구문

<jsp:include page="url"/>

<jsp:include page="url">

<jsp:param name="name" value="value"/>

</jsp:include>



Posted by 김마농