[JSP] JSP 기초

|

JSP는 결국 웹 애플리케이션에서 돌아가는 서블릿으로 거듭나게된다.

컨테이너가 서블릿을 작성하는 과정은 JSP파일을 서블릿 소스코드(.java)파일로 바꾼ㄷ 뒤, 서블릿 클래스로 컴파일한다.

돌아왔는 바로왔든, 결국은 서블릿이된다. 컨테이너가 서블릿 클래스를 로딩하여 인스턴스화한 다음, 초기화 루틴을 호출하고,

요청이 들어올 때마다 스레드를 만들어, service() 메소드를 호출하는 과정이 정확히 일치한다.

JSP 안에서 자바코드는 <%...%> 태그안에 스크립틀릿(scriptlet)으로 작성한다.

JSP에서도 import문을 쓸수있는데 이걸 쓰려면 지시자를 알아야한다

패키지를 import하기 위해서는 page 지시자를 사용한다.

지시자(directive)는 컨테이너가 페이지를 자바 코드로 변환할 때 특별한 지시를 내릴 수 있도록 고안된 것이다.

지시자에는 3가지가 있는데 page, include, taglib이 그것이다.

일단 page 지시자만 알아보면 page지시자가 import를 가능하게 하는 녀석이다.

<%@ page import="foo.*" %>
//패키지를 여러개 import할경우 <%@ page import="foo.*",java.util.*" %>
//지시자 끝에는 세미콜론이 없다.

<html>
<body>
the page count is:
<%
out.println(Counter.getCount());
//스크립틀릿에는 일반자바소스코드를 그대로 코딩하기떄문에 끝에 반드시 세미콜론이 있어야한다.
%>
</body>
</html>
자바코드는 퍼센트(%) 기호로 묶여있지만 지시자는 시작 부분에 다른문자가 포함되어있다.
JSP코드를보다가 <%@ 로 시작하는 구문을보면 지시자라는 것을 알아 차려야한다.

표현식

-스크립틀릿 코드-
<%@ page import="foo.*" %>
<html>
<body>
the page count is:
<% out.println(Counter.getCount()); %>
</body>
</html>

-표현식코드-
<%@ page import="foo.*" %>
<html>
<body>
the page count is:
<%= Counter.getCount() %>
</body>
</html>
//표현식은 훨씬 간결하다. 여기서는 더이상 출력에 관련된 코딩을 할 필요가 없다.

<%= Counter.getCount() %> 에서 세미콜론이 빠진것이 이상하지않은가?

그이유는 표현식의 내용은 out.println()의 매개변수가 되기 떄문이다. 다시말하면 <%= 와 %> 사이에 입력한 내용을

내부 Response객체의 PrintWriter 객체인 out으로 출력하기 위한 매개변수로 넘긴다는 말이다.

컨테이너가 이런코드를 만나면

<%= Counter.getCount() %>

아래와같이 변환한다

out.print(Counter.getCount());

그러므로 표현식에 세미콜론을 입력했다면

<%= Counter.getCount(); %>

다음 같이 된다

out.print( Counter.getCount(); );

절대 표현식 끝에 세미콜론을 넣지 말자!



선언문

모든 스크립틀릿 코드와 표현식 코드는 service()메소드 안으로 들어간다

이는 스크립틀릿 안에 선언된 모든 변수는 모두 지역변수를 의미하는데,

선언문을사용해 인스턴스변수로 만들수도있다.

<%! int count =0; %>
//퍼센트 뒤에 ! 를 붙이면된다
//표현식이아니므로 세미콜론을 붙인다.

<%! 와 %> 안에 들어가는 문장은 서비스 메소드 바깥으로 빠진다. 따라서 정적인 변수나 메소드 또는 인스턴스 변수나 메소드들
모두 여기에 코딩할수 있다.

JSP선언문을 기술하면 클래스 내부에, 서비스 메소드나 여타 메소드의 바깥 쪽에 위치하게 된다. 여기에 간단한 정적인 변수나 메소드
아니면 인스턴스 변수나 메소드를 만들수있다.

컨테이너가 JSP를 어떻게 바꾸는가...

JSP 컨테이너가 결국 서블릿으로 변환시킨다 이때 각각이 서블릿 코드로 어떻게 매핑되는지 알면 JSP 구조를 이해하는 데 도움이된다.

▶ 먼저 지시자(directives)가 있는지 보고선, 변환 작업할때 필요한 정보를 읽는다.

▶HttpServlet의 하위 클래스를 생성

▶import 속성을 가진 page 지시자가 있으면, 클래스 파일의 정의 위에, 패키지 선언 아래에 import문을 넣는다

▶선언문이 있으면, 클래스 파일안에, 서비스 메소드위에, 서블릿 선언 아래에 코딩한다.

▶service()메소드를 만든다. 서비스 메소드의 실제 이름은 _jspService()이다.
이메소드는 서블릿의 부모 클래스에 정의된 service() 메소드를 이녀석이 호출한다.
물론 매개변수 HttpServletRequest와 HttpServletResponse를 받는다. 서비스 메소드 처리를 위임받았다고 생각하면된다
바로밑에 모든 내장객체를 선언하고, 초기화 하는 문장이나온다(밑에 내장객체설명)

▶템플릿 텍스트라고 불리는 HTML과, 스크립틀릿, 표현식을 서비스 메소드 안에 차례대로 Response객체의 출력 스트림인
PrintWriter의 출력 형식에 맞게 코딩한다.


내장객체


컨테이너가 JSP를 서블릿으로 변환하는 과정 중, 서비스 메소드 선언 다음에 한 묶음의 내장 객체를 선언하고 값을 할당하는 부분이 있다.

JSP를 작성하면서 JSP가 서블릿이 된다는 것을 알기 떄문에, 내장객체를 사용할수있는것이다. 개발자가 서블릿 객체를 직접 코딩하진 않지만,

서블릿이 가지고 있는 특징, 즉 서블릿적인 것(Servletness)을 사용 할수 있다는 말이다.

모든 내장 객체들은 서블릿/JSP API에 일대일로 매핑된다.

예를들면 내장 객체인 request는 컨테이너가 서비스 메소드 매개변수로 넘겨준 HttpServletRequest 객체에 매핑된다.

API 내장객체

JspWriter ----------------- out
HttpServletRequest --------------- request
HttpServletResponse -------------- response
HttpSession --------------- session
ServletContext ---------------- application
JspException ---------------- exception //이 내장객체는 "오류 페이지"에 쓸 요량으로만든것이다 (나중설명)
PageContext ---------------- pageContext
//PageContext는 다른 내장 객체들을 포함(은닉)하고 있기떄문에 도우미 클래스로 PageContext만 넘겨도
필요한 다른 내장 객체 및 모든 생존범위 속성을 사용할수 있다.

Object ---------------- page

출처 : http://finerss.tistory.com

'IT > JSP' 카테고리의 다른 글

[JSP] JSP 기초  (0) 2011.12.08
[JSP] 개발 환경 구축  (0) 2011.11.21
[JSP] 개발환경 구축  (0) 2011.10.14
[JSP] 이론  (0) 2011.10.14
트랙백0 And 댓글0

[JSP] 개발 환경 구축

|

http://www.oracle.com에서 java se를 다운로드 받는다.
http://tomcat.apache.org/에서 톰캣을 다운로드 받는다.
http://www.eclipse.org/에서 이클립스를 다운로드 받는다.


톰캣과 이클립스는 자신이 원하는 곳에 설치한다.

그 후 톰캣에 lib 폴더에 servlet-api를 복사해서

Java -> jre7 -> lib -> ext를 가서 붙여넣기를 한다.

이클립스 실행 후

Window -> Preferences를 클릭

Server -> Runtime Environments에서 add를 클릭 Apache에서 자신에 버젼에 맞는 것을 클릭 폴더 지정해주고 확인

언어를 전부 FTP-8로 설정

끝.

'IT > JSP' 카테고리의 다른 글

[JSP] JSP 기초  (0) 2011.12.08
[JSP] 개발 환경 구축  (0) 2011.11.21
[JSP] 개발환경 구축  (0) 2011.10.14
[JSP] 이론  (0) 2011.10.14
트랙백0 And 댓글0

[JSP] 개발환경 구축

|

JSP 개발환경구축

1) jdk(자바 컴파일러 - 자바언어를 기계어로) // c:\java\
2) tomcat // c:\apach - tomcat(*jdk 설치경로와 동일)
3) eclipse / tomcat plug-in, QuantummDB plug-in EX) // c:\elipse
웹개발 관련기능 ( WTP : Web Tool Project) - 일반 eclipse(편집툴)에 웹개발 관련 기능 추가
plug-in : eclipse 편집툴 하나만으로 제어(여러가지 기능 추가)

JDK 환경변수
1) JAVA_HOME : JDK가 설치된 경로
2) CLASSPATH : %classpath%
3) Path : C:\Java\bin;

Tomcat 환경변수
1) CATALINA_HOME : Tomcat이 설치된 경로 // 값 : C:\apache-tomcat\bin;
2) Path : ;C:\apache-tomcat\bin;
3) CLASSPATH : ;C:\apache-tomcat\commmon\lib\servlet-api.jar;

톰캣 플로그인 파일을 c:\apache-tomcat\plugins 에 넣는다.
eclipse 실행 - 윈도우 - 설정 - tomcat 메뉴로 간다.
톰캣 버젼 5.x 체크 - tomcat home // c:\apache-tomcat 으로 설정
advanced - tomcat base // c:\apache-tomcat 으로 설정
Tomcat Manager // username, password 를 admin 으로 설정

new - other - java - tomcat.project 파일 생성
프로젝트 파일 - 마우스 오른쪽 버튼 - new - other - web - jsp 파일 생성
http://localhost:8080/프로젝트이름/jsp파일이름

한글깨짐을 방지하기 위해 설정
윈도우 - 설정 general - content types - jsp , java source file , java script - Default encoding : EUC-KR - Update

출처 : http://blog.naver.com/taeho8310

'IT > JSP' 카테고리의 다른 글

[JSP] JSP 기초  (0) 2011.12.08
[JSP] 개발 환경 구축  (0) 2011.11.21
[JSP] 개발환경 구축  (0) 2011.10.14
[JSP] 이론  (0) 2011.10.14
트랙백0 And 댓글0

[JSP] 이론

|
-?- , -/?- : 내용의 뜻이 정확하지 않을 때 사용.

DBMS( Database Management System) 데이터 베이스 관리자 시스템
일반적인 형태 DBMS
- 관계형 데이터베이스 관리 시스템 (RDBMS)인데, RDBMS의 표준화된 사용자 밑 프로그램 인터페이스를
SQL(Structured Query Language)라고 한다.

관계형 DBMS로는 오라클(Oracle), 사이베이스(Sybase), 인포믹스(Infomix)등이 널리 쓰인다.

웹 프로그래밍 언어

1. CGI
2. ASP(Active Server Page)
3. PHP(Personal Homepage Tools)
4. JSP(Java Server Page)

브라우저

- 기본적으로 HTML 형식의 문서만 표시

사용자가 JSP 페이지 요청 -> HTML 코드가 아닌 부분 해석(JSP 컨테이너) --> JVM(Java Virtual Machine)을 통해서 자바 코드를 실행
-> 그 결과를 브라우저가 인식할 수 있는 HTML 코드 형식으로 변환해서 웹피이지를 만들어 사용자 측으로 전송


스크립트 언어

- C언어, Visual Basic언어등, 일반적인 프로그래밍언어는 컴파일러에 의해 컴파일 되어 2진수로 되어있는
기계어로 변환되어야지만 컴퓨터상에 실행될 수 있다.

이와는 달리 컴파일이 필요없이 해석기(인터프린터)에 의해 즉시 실행될 수 있는 프로그램 언어를 스트립트 언어라고 한다.
대표적으로 브라우저에 의해 해석되어 실행되는 Java script, VBScript등이 있으며, Unix의 쉘스크립트, Window의 Batch
파일도 스크립트 언어라고 할 수 있다.


JSP, Servlet - URL 주소 해석                   -> HTTP Server
                  - JSP, Servlet 파일 실행 요청 -> (Web Container) 웹 컨테이너


웹프로그래밍 언어의 정의 / 종류

Web programming Language
ASP[Visual Basic]
PHP[C]
JSP[JAVA] - 자바 통신언어를 특화 시킨 웹 프로그래밍 언어
HTML언어 안에 JAVA언어가 속해있는 웹 프로그래밍 언어

Client Side Script Language - 서버없이 실행가능한 언어
EX) javascript - 브라우저 안에 컴파일러가 내장 (최소한의 자바를 실행할 수 있는 컴파일러가 들어있음)

Server Side Script Language - 서버가 있어야 실행 가능한 언어 EX) jsp, asp, php
서버안에 컴파일러가 있어야 한다.

Client - 서비스를 요청하는 컴퓨터
Server - 서비스 요청을 받아서 응답해주는 컴퓨터

Script Language - A언어 안에 B언어가 속해있는 언어 EX) HTML언어 안에 java가 속해 있는 언어
종류 - asp, php, jsp, java script
HTML은 브라우저에서 보여주기 위해서 사용하는 언어

java - jdk(자바 컴파일러 - 기계어로 통역)

컴파일러는 서버에 설치

java 기반 웹언어

1. javascript - client side script language (html - java) - 브라우저에 컴파일러 내장(java 특정부분만 사용)
2. jsp - server side script language (html - java)
3. servlet - java안에 html이 들어있음(java가 더 의존적이다.) / jsp와 표현되는 형태가 다름

웹 어플리케이션(WAS) 작동 원리

client 요정 -> 웹서버가 요청 받음 -> 웹 어플리케이션 서버가 컴파일해서 결과값 생성(<->데이터베이스 서버) -> 웹서버 -> client받음

웹서버 - UNIX기반의 Apache, WINDOW의 IIS, 넷스케이프의 엔터프라이즈 서버
WAS(Web Application Server) - Tomcat, WebLogic, WebShpare, jeus
-?-  웹서버에서 기본적으로 WAS기능을 하는 것도 있고(IIS, ASP), WAS에서 웹서버의 기능을 담당하는 것도 있다. (Tomcat) -/?-

JSP 작동원리

client -> Tomcat(Web Server + WAS : JDK 컴파일러) <-> DB : oracle -> client

EX)
1) a.jsp요청
2) a.jsp -> a.java(Tomcat이 java로 변경시킴)
3)컴파일(a.java -> a.class)
4)실행(WAS, DB)
5)a.html의 형태로 client에 응답(HTML 코드로만 구성된 파일)

출처 : http://blog.naver.com/taeho8310

'IT > JSP' 카테고리의 다른 글

[JSP] JSP 기초  (0) 2011.12.08
[JSP] 개발 환경 구축  (0) 2011.11.21
[JSP] 개발환경 구축  (0) 2011.10.14
[JSP] 이론  (0) 2011.10.14
트랙백0 And 댓글0
prev | 1 | next