본문 바로가기

IT일반과목/JSP

20180824 집공부1

1.1 웹 프로그래밍이란?

 -> 어플리케이션을 구현하는 행위입니다.

 -> 웹을 기반으로 작동되는 프로그램입니다.

 -> 1개 이상의 사이트가 연결되어있는 인터넷 서비스의 한가지 형태입니다.


------------------------------------------------------------------------------------------------------


프로토콜(Protocol) : 네트워크상에서 약속한 통신규약 (Http, FTP, SMTP, POP, DHCP) 

IP : 네트워크상에서 컴퓨터를 식별할 수 있는 주소

DNS : IP주소를 인간이 쉽게 외우도록 맵핑한 문자열

Port : IP주소가 컴퓨터를 식별할 수 있게 해준다면, Port번호는 해당컴퓨터의 구동되고 있는 프로그램을 구분할 수 있는 번호 


http://www.jongkyu.tistory.com:80/entry


http -> 프로토콜


www.jongkyu.tistory.com -> 컴퓨터 주소(DNS를 통한 IP주소로 변경)


80 -> 포트(port)


/entry -> information path



------------------------------------------------------------------------------------------------------

컴포넌트 : JSP, Servlet, HTML 등의 웹어플리케이션을 구현하기 위한 구성요소



웹서버 : 클라이언트의 요청에 의해 정보를 제공해 주는 서버 (Aphach, IIS).

   별도의 구현이 필요한 로직이 있을 경우 웹어플리케이션 서버에 요청.

웹브라우저 : 웹서버에 정보를 요청하고, 웹서로부터 정보를 받는 매개체. 이때 HTTP 프로토콜을 사용함. 


------------------------------------------------------------------------------------------------------

필요한 학습

1.JAVA : JAVA웹어플리케이션을 구현하기 위한 선행 학습 필요
2.HTML : 웹어플리케이션을 구현하기 위한 기본 언어
3.JavaScript : 클라이언트 기능을 구현하기 위한 언어
4.Jquery : JavaScript의 대표적인 라이브러리로써, 클라이언트 사이드 스크립트 언어를 단순화 할 수 있다.
5.CSS : 웹어플리케이션의 레이아웃 및 스타일을 지정하는 언어

------------------------------------------------------------------------------------------------------

1. 서블릿(Servlet)과 JSP(Java Server Page)
 -> 서블릿은 자바를 이용한 서버 프로그래밍 기술이다.
 -> 초기 웹 프로그래밍 기술인 CGI(Common Gateway Interface)를 대체하기 위해 개발되었으나, 느린 처리 속도, 많은 메모리 요구, 불편한 화면 제어 등의 한계로 PHP, ASP 등 서버 스크립트 언어 등장
 -> JSP는 PHP와 유사한 형태로 HTML을 중심으로 자바 프로그램과의 유기적인 연결을 지원


서블릿 소스

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class HelloWorldServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html; charset=EUC_KR");

PrintWriter out = response.getWriter();

out.println("<HTML><HEAD><TITLE>로그인</TITLE></HEAD>");

out.println("<BODY><H2>종규 : 헬로종규</H2>");

out.println("오늘날짜 : " + new java.util.Date());

out.println("</BODY></HTML>");

}

}


------------------------------------------------------------------------------------------------------

JSP 소스

<%@ page contentType="text/html;charset=utf-8"%>

<HTML>

<HEAD>

<TITLE>로그인</TITLE>

</HEAD>

<BODY>

<H2>종규 : 헬로종규</H2>

오늘날짜 :

<%=new java.util.Date()%>

</BODY>

</HTML>




뒤에도 계속 보다보면 의문이 뜬다.!!!

JSP와 Servlet 같이 쓴다는데 Servlet만으로도 페이지 만들고 JSP만들수 있는데 왜 2개 같이쓰지?


그거에 대한 해답은

Servlet은 톰캣 위에서 동작하는 java 프로그램입니다. 더 정확히 말하자면 servlet이 초기화 되는 과정을 보면 된다.


톰캣과 같은 WAS가 java 파일을 컴파일 해서 Class로 만들고 메모리에 올려 Servlet 객체를 만든 후 이객체는 doPost, doGet을 통해 요청에 응답한다.

초기화 과정을 더 자세히 보면



init, Service, Destory 이런 콜백이 각 시점에 불리는걸 볼 수 있다.


요약하자면 WAS를 통해 컴파일 된 후 메모리에 적재되어 클라이언트의 HTTP Get, Post 등의 요청을 처리하는 자바 프로그램이다.


서블릿 에는 HTML을 넣기 불편하다. 그래서 JSP가 나왔다. 


JSP소스를 보면 HTML내부에 JAVA코드가 있어 작성하기 쉽다. 하지만 로직과 디자인이 한 파일내에 섞여있어 유지보수가 어렵다. 

그리고 JSP같은경우 Tomcat이 Servlet으로 바꾸어서 돌린다.





MODEL 1 방식

JSP에서 사용자가 요청을 해서 Java Bean(DAO,DTO)을 호출해 처리한다. 이런방식을 MODEL1방식이라한다.


장단점

 -> 개발 속도가 빠르다.

 -> 배우기 쉽다.

 -> JSP코드가 복잡해져 유지보수가 어려워진다.





MODEL 2 방식

View는 JSP로, Controller는 Servlet을 사용한 것이 바로 Model2이다.

HTML중심이 되는 JSP, 다른 자바 클래스에게 데이터를 넘겨주는 부분은 Java코드가 중심이 되는 Servlet이 담당하게 된다.


참고 사이트 

: http://anster.tistory.com/128


JSP의 특징

1. 자바의 모든 기능을 사용할 수 있어 발전 가능성이 무한하다.

2. 서블릿으로 컴파일된 후 메모리에서 처리되기 때문에 많은 사용자의 접속도 원활하게 처리 할 수 있다.

3. JSP 또는 다른 서블릿 간의 데이터를 쉽게 공유 할 수 있다.

4. 빈즈(Beans)라고 하는 자바 컴포넌트를 사용할 수 있다.

5. 커스텀 태그를 만들어 사용할 수 있으며, JSTL(JSP Standard Tag Library)과 같은 태그 라이브러리를 이용할 수 있다.

6. 스트러츠, 스프링 @MVC 등 다양한 프레임워크와 결합하여 개발할 수 있다.



JSP 학습에 필요한 기술


JSP는 자바언어 기반이며 개발 시 순수 자바 코드가 50% 이상으로 탄탄한 자바 기본기가 요구된다.


기술

설명

요구 수준

HTML

클라이언트 기술로서, 웹 프로그램의 기본이 되며 시각적인 부분을 담당한다.

HTML 문서 구조와 기본 태그

FORM 관련 태그

HTML5 기본 구조

자바스크립트

웹 화면에 사용자와의 상호작용 및 동적 웹 페이지를 구현할 때 필요한 기술이다.

기초문법

객체와 메서드

내장객체

이벤트 핸들링

CSS

웹 화면의 레이아웃과 디자인 요소를 구현할 때 필요한 기술이다.

스타일시트 정의 및 셀렉터 이해

DOM 연동에 의한 동적 스타일 제어

자바

소스코드를 작성하기 위한 프로그래밍 기본 언어로서, Java SE를 기준으로 한다.

자바기본, 객체지향개념, 상속,오버로딩,오버라이딩, 인터페이스 구현, java.util,java.io패키지, 스레드, 예외 핸들링

JDBC

Java DataBase Connectivity의 약자로서, 자바에서 데이터베이스 프로그래밍을 하기 위한 기술이다.

JDBC 드라이버 세팅, ResultSet, PreparedStatement, 데이터 핸들링, 기초SQL문

서블릿

JSP의 기본이 되는 자바 기반의 웹 프로그래밍 핵심 기술이다.

서블릿 구조이해, 간단한 서블릿 프로그래밍, request,response 처리, GET/POST 처리

추가적으로 다음기술들에 대한 경험이 있다면 고급 웹 프로그래밍 학습에 도움이 된다.

 데이터베이스

프로그램의 데이터를 처리하려고 할 때 반드시 필요하다.

다양한 SQL문의 사용

데이터베이스 연계 프로그래밍 경험

데이터베이스 함수 및 내장 프로시저

XML

eXtensible Markup Language의 약자로서, 확장 가능한 구조적 문서 표현을 제공한다. 많은 프로그램에서 데이터 구조를 XML 기반으로 처리한다.

XML 스키마 및 DTD 이해

XML DOM 개요

모바일 프로그래밍

최근에는 스마트폰을 중심으로 하는 모바일 기반의 개발이 증가하고 있는 추세다.

안드로이드 혹은 아이폰 앱 개발 경험

하이브리드 앱 개발 경험

프레임워크

개발자로 하여금 더욱 좋은 프로그램을 만들 수 있도록 미리 제공되는 틀을 말한다.

소프트웨어 아키텍쳐 이해

스프링 프레임워크

스프링3 @MVC



JSP에 관해서 이것만은 알고 있자.

1. JSP는 일반 텍스트 파일로 되어있다. (텍스트 파일은 컴퓨터가 이해할 수 없다. 즉 실행 가능한 프로그램이 아니며 특정 동작을 할 수 없다.

2. JSP는 HTML 코드와 몇몇 특수한 태그, 그리고 자바 코드가 섞여 있다.

3. 사용자가 요청할 경우 JSP는 컨테이너(톰캣)에 의해 서블릿 형태의 .java 소스로 변환되고 컴파일된다.

4. 컴파일된 .class는 컴퓨터에서 실행할 수 있는 형태로 특정한 기능을 수행할 수 있게 된다. 이후 소스 변경 전까지 해당 파일은 메모리에 상주하면서 다시 컴파일 되지 않고 서비스 된다.