[JSP] JSP의 개요, JSP 페이지의 구성 요소
programming/jsp

[JSP] JSP의 개요, JSP 페이지의 구성 요소

1. JSP의 개요, JSP 페이지의 구성 요소

 

1.1 웹 프로그래밍의 개요

 

 

 

'''note.

웹 프로그래밍은 항상 요청과 응답으로 이루어진다.

 

ex. 은행창구;    front-end: 고객과의 접점

 

1.2 웹 프로그래밍 언어의 종류

 

CGI(Common Gateway Interface) : Unix 기반의 Perl 언어로 처리

'요즘에 쓰지 않음

 

ASP(Active Server Pages) : 마이크로소프트의 비주얼 베이직 언어 기반

PHP(Personal HomePage tools, Professional Hypertext Preprocessor)

JSP(Java Server Pages) : 자바 언어 기반

ASP.net : vb.net, C#.net 기반

 

'''note. 시장 점유율로 보면 국내에는 JSP가 제일 많다. 정부에서 표준으로 지정하기도 했다.

 

1.3 서블릿과 JSP

 

자바를 만든 Sun에서 정한 웹 개발 표준

 

1) 서블릿(Servlet) : 서버에서 실행되는 자바 코드

- 서블릿의 호출 방식

get 방식 → doGet() 실행

post 방식 → doPost() 실행

<form method="post">

 

- web.xml을 이용한 서블릿 매핑 방법

web.xml : 배치 기술서(deploy descriptor), JSP 프로젝트의 중요 정보들이 기록됨

<servlet>

 

<servlet-name>서블릿의 별칭</servlet-name>

<servlet-class>서블릿 클래스 이름</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>서블릿의 별칭</servlet-name>

<url-pattern>서블릿을 호출할 url</url-pattern>

</servlet-mapping>

 

2) JSP(Java Server Pages) : server에서 실행되는 자바 웹 페이지

- 자바 기반 스크립트 언어

- 자바의 기능을 그대로 사용 가능

- HTTP에 대한 클라이언트의 요청 처리/응답

- 웹 애플리케이션에서 결과 화면을 생성할 때 주로 사용

- jsp는 내부적으로 servlet으로 변환되어 실행됨

- jsp의 배포 디렉토리 : 이클립스에서 작업하는 폴더(개발용 폴더)와 다름

workspace 디렉토리\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\프로젝트\org\apache\jsp

 

'''note.

New Dynamic Web Project ...

Context root? 서버는 1개인데 다양한 웹 프로젝트, 이런 상황에서 웹 프로젝트를 구분하는 식별자

 

1.4 웹 컨테이너

 

웹 애플리케이션을 실행할 수 있는 컨테이너

WAS(Web Application Server)

JSP와 서블릿을 실행해 줌

 

 

주요 웹 컨테이너 : 톰캣(Tomcat, http://tomcat.apache.org), WebLogic 등

 

1.5 JSP의 기본 문법

 

scriptlet(스크립틀릿)    '''코드

<% 자바코드 영역 %>

expression(표현식) : 웹 브라우저에 출력

<%= 식 or 값 %>

<% out.println(식 or 값); %>        ''과 같은 코드

JSP 선언부

<%! 전역변수, method 선언 %>

 

1.6 주석(comment)

 

java 주석

// 한 줄 주석

/*    여러 줄 주석    */

html 주석 : <!--        -->

sql script file 주석 : --

 

'''언어를 여러 개 쓰다보니 주석이 헷갈릴 수도 있다

 

1.7 JSP page에서의 import 방법

 

1행에 1개씩 import

<%@ page import="java.text.SimpleDateFormat" %>

<%@ page import="java.util.Calendar" %>

 

1행에 여러 개 import

<%@ page import="java.text.SimpleDateFormat, java.util.Calendar %>

 

1.8 page 모듈화

 

Front end (사용자 화면, JSP 페이지-View)

Back end (톰캣 콘솔 창, Model & Controller)

 

'''MVC pattern

Model : 데이터 처리

View : 화면 처리

Controller : 프로그램의 흐름을 제어

'''

 

<%@ include file="불러올 페이지 주소" %>

1개의 클래스로 컴파일 됨(변수 공유 가능)

<jsp:include page="불러올 페이지 주소" />

2개의 클래스로 컴파일 됨(변수 공유 x, 정적인 페이지)

 

1.9 http status code(http 상태 코드)

 

200 - success

403 - 권한 문제

404 - 잘못된 url

500 - internal server error(서버의 논리적인 오류)

톰캣의 console 확인

 

1.10 웹페이지의 호출 방식

 

- post 방식

body를 통해 정보 전송

정보가 주소창에 노출되지 않음

대용량 자료 전송 가능

 

- get 방식

데이터를 header에 붙여서 전송(주소창에 표시)

기본적인 방식, 보안에 취약

 

1.11 페이지 이동 방식

 

1. 자바스크립트 : location.href="이동할 주소";

2. JSP

forward : 화면 전환(주소는 고정), 대용량 데이터 전송 가능, 이동할 주소에 context path 기본 포함

ex. String page="/memo/memo_view.jsp";

RequestDispatcher rd = request.getRequestDispatcher(page);

rd.forward(request, response);

redirect : 화면 전환 + 주소 변경, 소용량 데이터 전송

이동할 주소에 context path 포함해야 함

ex. String page = request.getContextPath() + "/memo.do";

response.sendRedirect(page);

 

1.12 charset(Java의 인코딩 방식)

 

iso-8859=1 : Java의 기본 인코딩(서유럽 언어)

ms949 or euc-kr : 한국어(다국어 지원 x)        '''Eclipse에서 이게 기본 설정이 이걸로 되어 있음

utf-8 : 한국어(다국어 지원)    - 권장

 

1.13 Query String 변수 사용 방법

 

String type만 넘길 수 있음

보낼 때 : url?변수=값&변수=값

ex. ParamServlet?id=kim&age=20

받을 때 : request.getParameter("변수")

ex. request.getParameter("id") → kim

request.getParameter("age") → 20

 

1.14 실습예제

 

01) date.jsp

 

'''note

html: 정적인 컨텐츠를 제공

jsp: 동적인 컨텐츠를 제공 (서버에서 실행됨)

 

javascript: 동적인 컨텐츠 (클라이언트에서 실행됨)

 

02) pageDirective.jsp

 

'''

WORKSPACE\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\jsp01\org\apache\jsp

 

 

03) color.jsp 51;25    페이지 모듈화

04) config.Constants.java 51;25

05) test.jsp 51;57

06) includeDirective.jsp 53;07

 

데이터베이스 연동 작업

08) book.sql 01;17;51

09) book.BookDTO.java 01;26;03

10) config.DB.java 01;27;11

11) book.BookDAO.java

12) declarationTest.jsp    01;12;03

13) expressionTest.jsp    02.28;21

 

14) ifTestForm.jsp

15) ifTest.jsp    32;39    39;28

 

C:\Program Files\Apache Software Foundation\Tomcat 8.0\conf\server.xml을 에디터로 오픈Notepad++ 강추
JDK : Java Development Kit 자바 개발도구(컴파일러 + JRE)JRE : Java Runtime Environment 자바 실행 환경

 

16) web.xml에 코드 추가

<servlet>

          <servlet-name>while</servlet-name>

          <servlet-class>ch03.WhileController</servlet-class>

</servlet>

<servlet-mapping>

          <servlet-name>while</servlet-name>

          <url-pattern>/ch03_servlet/*</url-pattern>

</servlet-mapping>

'''note.

클래스를 웹에서 호출하려면 이름으로 직접 호출할 수 없으므로 매핑을 해줘야 한다.

 

주소의 구성: http://호스트:포트/컨텍스트패스/디렉토리/페이지

 

RequestDispatcher: 요청 정보를 분석하는 클래스

 

17) whileTestForm.jsp 52;44

18) ch03.WhileController.java 52;49

19) while_result.jsp    01;09;22