모델 1, 2 정의 - for Programer :: findRowExpr

Download Report

Transcript 모델 1, 2 정의 - for Programer :: findRowExpr

Model 1
웹 서버
Web Browser
①요청
②HTML인 경우
HTML
httpd
③JSP인경우
웹컨테이너
웹컨테이너
JSP
(빈즈호출)
④<JSP:useBean../>
DB
⑤DB처리
⑥다음 JSP호출
JSP
(결과뷰어)
BANS
⑦<JSP:useBean../>
구조: 클라이언트에서 웹 서버에 호출을 하게 되면 웹서버에서 요청한 파일을 분석(JSP와html)을 한다.
JSP 부분이 있는경우 웹컨테이너(JSPservlet,WAS)호출하여 빈즈를 이용해 DB에 접속하고 처리결과를 조합하여
JSP호출부에 전송하여 HTML형으로 컴파일하여 클라이언트에게 다시 보여준다.
장/단점:기능추가에 따라 요청처리에 필요한 JSP파일들이 중복적으로 많이 생성되고 각각의 JSP 파일들이 관리가
어려워지게된다.
소규모에는 적합하나 대규모에는 유지보수에 어려움이 있다
Model 2
웹 서버
Web Browser
①요청
②HTML인 경우
httpd
HTML
③JSP인경우
웹컨테이너
<<Controller>>
Servlet or JSP
④<JSP:useBean../>
DB
<<Model>>
웹컨테이너
빈즈
⑦적절한 View로 포워딩
<<View>>
<<View>>
JSP
JSP
⑤DAO 클래스 사용
<<DAO>>
클래스
⑥ DB 접속
및 처리
구조: 클라이언트 요청에 대해 컨트롤러라고 부르는 서블릿 또는 SJP에서 빈즈를 이용하고 다시 빈즈는 DAO(Data Access
Object) 클래스를 통해 데이터베이스 관련 처리를 한 다음 컨트롤러에게 전달한다. 컨트롤러는 빈즈 클래스의 처리결과를
request 객체에 담아 결과로 보여질 뷰(view)에 해당하는 JSP로 전달한다. 응답 결과로 보여질 JSP 파일은 request 객체에
서 빈즈 클래스 인스턴스를 얻어와서 화면에 보여준다.
장/단점:MVC패턴(Model,View,Controller)이라 하여 사용자에게 보여질 페이지(view)와 데이터처리(Model) 그리고 이들
상호간 흐름을 제어(Controller)하는 모듈을 분리해서 좀더 쉽게 웹 애플리케이션을 확장할고 유지보수를 할수 있도록 해준
다.
JSP 기본문법
1.[주석]
└┌① HTML주석:클라이언트에게 전달되는 주석
│
<!—주석입니다.-->
│
└② JSP주석:클라이언트로 전달되지 않는 주석
<%--주석입니다.--%>
2. [지시어]
1. [page지시어]
EX)
①page 지시어::현재의 JSP페이지를 컨테이너에서 처리하는데 필요한 각종속성을 기술하는 부분
<%@ page 속성1=“속성 값1” 속성2=“속성 값2” . . . . %>
속성
language
기본값
Java
import
<% page contentType=“text/html;
charset=euc-kr”
import=“javax.sql.*, java.util.*
errorPage=“error.jsp”
%>
설명
스크립트 언어를 지정한다.
Jsp파일 내에서 사용할 외부 자바 패키지나 클래스를 지정한다.
Session
True
세션 생성 여부를 지정한다.
Buffer
8kgb
버퍼 크기를 지정한다.
autoFlush
True
버퍼 내용 자동 비움을 중지한다.
isTrhreadSage
True
단일 스레드 모덷ㄹ을 사용하여 동시성 제어 여부를 지정한다.
Info
JSP 페이지를 성명한다.
erroPage
오퓨가 발생할때 호출할 페이지를 지정한다.
isErrorPage
False
오류만 처리하는 페이지로 지정한다.
contentType
Text/html; charest
=ISO-8859-1
MIME 혀익과 캐리터셋을 서정한다
JSP 기본문법
2.[include 지시어]
└ 현재 JSP 파일에 다른 HTML이나 JSP문서를 포함하기 위한 기능을 제공한다.
※ include는 여러 페이지에 공통으로 들어가는 내용을 관리할 때 매우 유용하게 사용된다.
<%@ include file=“포함할 파일 이름” %>
Ex) [include_test.jsp]
<%@ page contentType=“text/html; charset=euc-kr” %>
<html>
<head><title></title></head>
<body>
<h2> include 지시어 테스트1</h2>
<hr>
<% include file=“footer.jsp” %>
</body>
</html>
[footer.jsp]
<%@ page contentType=“text/html; charset=euc-kr” %>
<html>
<head><title></title></head>
<body>
Copyright & copy; 2006-2007 JSP BOOK. All rights reserved
</body>
</html>
[실행결과]
JSP 기본문법
3.[taglib 지시어]
└ JSP 기능을 조금더 확장하는 개념으로 사용자 정의 태그를 사용할수 있다.
<%@ taglib uri=“/META-INF/mytag.tld” prefix=“mytag” %>
[사용자 정의 태그 예제]
<%@ page contentType=“text/html; charset=euc-kr” %>
<%@ taglib uri=“/WEB-INF/tld/mytag.tld” prefix=“mytag” %>
<html>
<body>
<mytag:GetInfo name=“dinfree”/>
</body>
</html>
<mytag:GetInfo name=“dinfree”/> 부분은 mytag.tld에 정의된 사용자 정의 태그 중 GetInfo 태그를 사용하는 것이며 name 속성에 “dinfree”
라는 값을 전달하는 내용이다.
JSP 기본문법
3.[액션]
└┌① JSP 페이지 간 흐름제어
├② 자바 애플릿 지원
└③ 자바 빈즈 컴포넌트와 JSP 상호작용 지원
액션
사용방법
기능
Include
<jsp:include page=”xx.jsp”/>
다른 페이지를 현재 페이지에 포함시킨다.
Forward
<jsp:forward page=“xx.jsp”/>
현재 페이지의 제어를 다른 페이지로 전달한
다.
useBean
<jsp:useBean scope=“page” id=“cls”
class=“xx.MyBean” />
xx패키지의 MyBean 클래스를 cls라는 이름
으로 page 범위에서 사용할 것을 선언한다.
<jsp:setProperty naem=“cls” property=“xxx” />
userBean으로 선언된 빈즈 클래스의
setXxx()메서드를 호출한다.
<jsp:getProperty name=“cls” property=“xxx” />
userBean으로 선언된 빈즈 클래스의
getXxx()메서드를 호출한다.
1.[include 액션]
└include액션은 다른 파일을 불러온다는 측면에서는 include 지시어랑 개념이 유사하다.
하지만 include 지시어는 해당 파일을 포함시킨 다음 컴파일 하는 데 비해 include 액션은 실행 시점에서 해당 파일을
호출하여 그 결과를 포함한다는 점에서 차이가 있다
장/단점: include 지이어와 마찬가지로 유용한 기능을 제공하지만 페이지 변경 사항이 생길 때마다 매번 컴파일해야 하기때문에
서능 저하를 가져올수 있으므로 사용을 자제하는 것이 좋다.
<jsp:include page=“포함할 파일 이름”>
JSP 기본문법
[include_action.jsp]
[footer2.jsp]
<%@ page contentType=“text/html; charset=euc-kr” %>
<%@ page contentType=“text/html; charset=euc-kr” %>
<html>
<html>
<head><title></title></head>
<head><title></title></head>
<body>
<body>
<h2>include_action.jsp에서 footer2.jsp 호출</h2>
Copyright (C) 2005-2007 JSP BOOl. All rights reserved
<HR>
<HR>
<jsp:include page=“footer2.jsp>
<%= request.getParameter(“eamil”) %>
<jsp:param name=“email” value=“[email protected]”/>
<%= request.getParameter(“tel”)%>
<jsp:param name=“tel” value=“000-000-0000>
</body>
</jsp: include>
</body>
</html>
※ include 액션의 특징 중 하나가 예제처럼 변수를 전달할 수 있다는 점이다.
include 액션에서 jsp파일을 포함하거나 forward 액션을 통해 다른 jsp로
포워딩할 때 param 태그를 이용해서 속성 값을 전달할 수 있다.
전달된 파라미터 값은 request.getParameter()메서드를 통해 접근할 수 있다.
</html>
JSP 기본문법
2.[forward 액션]
└include액션과 유사하지만 현재 페이지를 완전히 다른 페이지로 전환할 때 사용한다.
즉, include 액션은 제어권을 다른 jsp로 보냈다가 다시 가져오지만 forward는 제어권을 완전히 넘겨 버린다.
<jsp:forward page=“포워딩할 파일 이
름”>
[forward_action.jsp]
<%@ page contentType="text/html;charset=euc-kr" %>
[footer2.jsp]
<%@ page contentType=“text/html; charset=euc-kr” %>
<html>
<HTML>
<HEAD><TITLE> </TITLE></HEAD>
<BODY>
<H2>forward_action.jsp 에서 footer2.jsp 호출</H2>
<HR>
<head><title></title></head>
<body>
Copyright (C) 2005-2007 JSP BOOl. All rights reserved
<HR>
<jsp:forward page="footer2.jsp">
<jsp:param name="email" value="[email protected]" />
<jsp:param name="tel" value="000-000-0000" />
</jsp:forward>
</BODY>
</HTML>
※ forward도 include 액션처럼 param을 이용해서 인자를 전달할 수있다.
※실행 결과는 같지만 include_action는 파일의 중간에 footer2.jsp를
불러들여 함께 보여 주었자만 forward는 제어 자체가 footer2.jsp로
바뀐 것을 알수있다.
<%= request.getParameter(“eamil”) %>
<%= request.getParameter(“tel”)%>
</body>
</html>
JSP 기본문법
3.[plugin 액션]
└웹 브라우저에서 자바 플러그인을 사용하여 자바 애플릿이나 자바 빈즈 컴포넌트를 실행할 수 있게 한다.
웹 브라우저 대부분 자바2를 지원하지 않기 때문에 브라우저에 내장된 자바 가상머신으로는 스윙(Swing)
애플릿 등을 실행 할 수 없는 점을 보안하기 위해 나온 개념이다.
4.[useBean 액션]
└┌ <jsp:useBean id=“변수이름” class=“빈즈클래스이름” />
: 빈즈를 사용하겠다고 선언
├ <jsp:setProperty naem=“변수이름” property=“속성이름” /> : 빈즈의 값을 가져올대 사용
└ <jsp:getProperty name=“변수이름” property=“속성이름” /> : 빈즈의 값을 설정할때 사용
useBean 액션
userBean
setProperty
getProperty
속성
설명
id
빈즈 클래스의 인스턴스 이름으로 사용할 변수다.
class
빈즈 클래스의 클래스 이름으로 패키지 경로를 포함된다.
name
빈즈 클래스의 인스턴스 이르으로 id 값에 설정했던 변수 이름이다.
property
속성 값으로 빈즈 클래스의 setXxx (Xxx는 속성 이름) 메서드와 매칭 될 속성값이다.
“*”를 지정하면 모든 setXxx에 자동으로 매칭된다.
name
빈즈 클래스의 인스턴스 이름으로 id 값에 설정했던 변수 이름이다.
property
빈즈 클래스의 getXxx(Xxx는 속성 이름) 메서드와 매칭될 속성 값이다.
JSP 기본문법
4.[선언]
└JSP 내에서 메서드나 멤버변수를 사용
<%!
//멤버변수 선언이나 메서드 선언이 올 수 있다.
String str = “test”;
public boolean check(){
return false;
}
%>
※ 선언 태그는<%! 내용 %> !(느낌표) 빠지면 스크립느가 되기띠분에
주의해야한다.
선언부에서는 사용자 정의 메스드 이외에는 jspInit(), jspDestroy()와
같은 생명주기 운영을 위한 메서드를 오버라이드할 수 있다.
5.[표현식]
└산단한 데이터 출력이나 메서드 호출 등에 이용한다.
메서드 호출 : <%=calculator() %>
변수 출력 : <%=result %>
사칙 연산과 문자열 결합 : <%=“i+2=“ + (i+2)+”스크립트릿입니다.” %>
※ 선언 태그는<%= 내용 %> ;(세미콜론) 사용하지 않는다는 점에
주의해야한다.
표현식은 결국 out.println()으로 변환디는 것과 마친가지므로 구문은
out.println()인자로서 적합한 형태를 유지해야한다.
6.[스크립트릿]
└JSP 문서 내에 자바 코드를 기술하는 부분이다. 본문 어느 곳에서도 자유롭게 사용할 수 있다.
<%!
//로컬변수 선언이나 프로그램 조직이 올 수 있다.
String str = “test”;
for(int i=0; i < 10 ; i++){
out.println(i);
}
%>
주의할 점은 스크립트릿 부분은 순수 자바 코드만 올 수 있다는 점이다.