웹프로그래밍이란?
- 웹프로그래밍이란? →웹어플리케이션을 만드는 행위
- 웹어플리케이션이란? → 웹을 기반으로 동작하는 프로그램을 의미
- 웹이란? →인터넷 서비스의 형태 의미
- 인터넷이란? → 하나 이상의 네트워크가 연결되어 있는 형태를 의미
웹프로그래밍이란?
- JAVA플랫폼(JavaSE, JavaEE, JavaME)중에서 JavaEE를 이용한 웹프로그래밍 입니다.

웹프로그램의 동작
- 웹서버 : 클라이언트의 요청에 의해 정보를 제공해 주는 서버(Aphache, IIS)
- 별도의 구현이 필요한 로직이 있을 경우 웹어플리케이션 서버에 요청
- 웹브라우저 : 웹서에 정보를 요청하고, 웹서버로 부터 정보를 받는 매개체.
(HTTP 프로토콜을 사용함.)

JSP 개요
- JSP(Java Server Page)는?
- 웹 서비스를 위한 인터넷 프로그래밍 언어
- 원래 서블릿(servlet)과 JSP는 Sun사의 Java 웹 서버 제품의 보조 기술로 등장
- 1998년 첫 번째 JSP API(Application Programming Interface) 스펙(specification) 발표
- 1999년 5월 JSP 1.0 스펙(Servlet 2.2)이 발표되면서 안정적인 개발 플랫폼의 면모를 갖춤
- JSP 기능 역시 서블릿 기술을 사용하여 구현 되었기 때문에 기존의 서블릿 제품들의 JSP 장점을 그대로 충분히 흡수함.
JSP특징
- 플랫폼에 독립적이다.
- “Write Once, Run Anywhere”
- 개발 되면, 다른 환경으로 큰 변경 작업 없이 이식이 가능하다.
- 소프트웨어의 재사용성이 증가된다.
- 미리 개발해 놓은 자원을 다른 곳에서도 새로운 개발 없이 사용이 가능하다.
- 안정적이며 수행 속도가 향상된다.
- JSP는 스크립트지만 브라우저가 읽어 들이기 전에 JSP컨테이너에 의해 컴파일이 되고 서블릿 코드로 변환 된다 는 점에서 속도가 향상된다는 말에 의문이 생길 수 있지만 이 과정은 처음에 한번만 일어나기 때문에 JSP페이지 는 뛰어난 속도를 자랑한다.
- JSP는 하나의 요청마다 쓰레드를 생성하기 때문에 하나의 요청마다 프로세스를 생성하는 CGI나 ASP보다 뛰어나 다.
- 디자인 부분과 프로그램 부분의 분리가 가능하다.
- SP는 컴포넌트 중심적인 디자인이기 때문에 자바빈즈(JavaBeans)로 만들어진 서버측 객체의 기능을 사용할 수 있는 HTML과 비슷한 태그 시스템을 가지고 있다.
- 프로그래머는 자바빈즈로 구현하고 프리젠테이션 팀이 JSP를 통해 자바빈즈를 사용한다.
- J2EE(Java 2 Enterprise Edition)의 진입로이다.
- Oracle사(과거 Sun사)의 기업용 서버 플랫폼임(1998년경부터 현재까지 발전해옴)
- J2EE에는 JSP를 필두로 서블릿(Servlet), XML, EJB(Enterprise JavaBean), JavaMail JNDI(JavaNaming and Directory Interface), CORBA등의 핵심 기술로 이루어져있다.
- JSP는 웹상에서 J2EE핵심 기술들을 모두 연동하고 있다.
동작개요

태그(tag), 지시자(directive)
JSP ? vs 서블릿?
서블릿은
- Java 코드로 만들어 진 겁니다.
- Java코드에는 HTML 코드가 없습니다. 그래서 HTML 코드를 출력하기 위해 PrintWriter 객체를 사용하였습니다.
- 즉 Java 코드 안 에 HTML 이 있는 형태
- MVC 모델에선 (주로) Controller 의 역할을 합니다.
JSP 는
- HTML 코드내에 Java코드가 있는 형태 (스크립트 태그의 형태로)
- MVC 모델에선 View 의 역할을 합니다
- 내부적으로 JSP 는 서블릿으로 변환된뒤에 컴파일, 실행됨.

JSP 의 태그 종류
- 지시자 (Directive) 태그 <%@ %>
: 페이지에 대한 정보 나타내는 태그 - 스크립팅 요소 태그 (스크립트릿, 익스프레션, 선언부)
: 스크립트릿 <% %> 자바코드
: 익스프레션식 <%= %> 결과값(평가값)
: 선언부 <%! %> 변수나 메소드 선언 - 주석태그
<%-- --%> - 액션태그 : JSP에 어떤 동작을 지시, 자바빈을 연결해서 사용함 (나중에 배움)
형식: <prefix:action> … </prefix:action>
- 표준액션 예) <jsp:include> .. </jsp:include>
- 커스텀액션 예) <c: set var="i" value="0"/> .. </c:set>
‘지시자 Directive 태그’ 의 3가지 종류
1. page 지시자 : 페이지의 속성
- info 속성 : 페이지를 설명해주는 문자열 <%@ page info = “copyright of ~” %>
- languege : jsp 에서 사용할 언어 지정 <%@ page language=”java” %>
- contentType: jsp페이지내용을 어떻게 출력할지 브라우저에 알려주는 역할, 문자셋도 알려줌
<%@ page contentType="text/html; charset=UTF-8" %>
- extends 속성 : jsp 파일이 서블릿으로 변환되는 시점에서 자신이 상속받을 클래스를 지정 (일반적으로 jsp 컨테이너가 적절하게 상속시켜주기 때문에, 거의 사용할 일은 없슴)
- import 속성 : 패키지를 불러옴. 자바의 import 와 동일하다고 봐도 됨.
<%@ page import=”java.util.*, java.sql.*” %>
<%@ page import=”java.io.*” %>
** JSP 가 기본으로 import 하는 패키지 : 서블릿 관련 패키지 javax.servlet javax.servlet.jsp javax.servlet.http
- session 속성: HttpSession 속성의 사용여부 ( true / false)
<%@ page session = “false” %>
2. include 지시자
현재의 jsp 페이지에 다른 jsp 페이지나 나 html 파일을 불러와서 현재페이지의 일부로 사용.
불러오는 대상은 파일의 형태. file 속성으로 지정.
ex) <%@ include file="b/aaa.jsp" %
3. taglib (태그 라이브러리) 지시자
‘액션’ 을 사용할때 필요한 지시자.
참고로, 액션을 사용할때는
1. 기본적으로 사용할수도 있고,
2. 액션이 속한 라이브러리를 설치해야만 사용할수 있기도 합니다.
taglib 지시자는 바로 이 경우 필요합니다
<%@ taglib prefix=”c” uri=”http://oracle.com/jsp/jstl/core” %>
JSP 태그, 지시자 정리
| 지시자 (Directive) 태그 <%@ .. %> |
page 지시자 <%@ page .. %> info , contentType, pageEncoding, import, errorPage, isErrorPage, … .... |
| include 지시자 <%@ include file=” .. “ %> | |
| taglib (태그 라이브러리) 지시자 <%@ taglib prefix=”c” .. %> | |
| 스크립팅 요소 태그 | 스크립트릿 <% .. %> : 자바코드 |
| 익스프레션식 <%= .. %> : 결과값, 평가값 | |
| 선언부 <%! .. %> : 변수, 메소드 선언 | |
| 주석태그 | <%-- --%> |
| 액션태그 | 형식: <prefix:action> … </prefix:action>
|