반응형
프로그램 입문자를 위한 여러가지 지식
학원 교육받을 적 정리해둔 여러가지 지식들
공부순서 진행사항 : Java -> Oracle 11g -> Mysql -> JDBC -> HTML&CSS -> JavaScript -> Jquery(Ajax) -> JSP(servlet) -> Spring
라이브러리(Library) : 프로그램 제작시 필요한 기능 (비교하자면 자동차 바퀴, 자동차 헤드라이트, 자동차 에어백 등등)
-> ex) JavaScript의 라이브러리 : Jquery
프레임워크(Framework) : 프로그램 기본구조(뼈대) -> 비교하자면 자동차 프레임
Java개발자 : Spring, Python 개발자 : Django, JavaScript 개발자 : Angularjs, PHP 개발자 : Laravel
아키텍처(Architecture) : 프로그램 주요 구조 설계 -> 비교하자면 자동차 도면
-> ex) PC를 조립하기 위해 하드웨어 부분을 확인하고 선택한 리스트가 아키텍쳐이다.
플랫폼(Platform) : 프로그램 실행 환경 -> 비교하자면 자동차 주행환경(일반 고속도로용, 사막전용, 경주용 등)
ex) Windows, Linux, macOS 등 모든 O/S, 어플 다운받는 앱스토어, 구글플레이 등
Java 프로그램은 OS제약이 없으나 실행하기 위해 해당 OS에 JVM(자바 가상 머신)위에서 실행되므로 Java 플랫폼이 필요하다.
헷갈리는 내용
JVM( Java Virtural Machine) : 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)을 실행한다. 아래는 JVM의 역할을 나열한 것이다.
- 바이너리 코드를 읽는다.
- 바이너리 코드를 검증한다.
- 바이너리 코드를 실행한다.
- 실행환경(Runtime Environment)의 규격을 제공한다. (필요한 라이브러리 및 기타파일)
JRE(Java Runtime Environment ) : 자바 실행환경을 뜻하며, JRE는 JVM의 실행환경을 구현한다고 할 수 있다.
JDK(Java Development Kit) : 자바 개발도구로서 JRE + 개발을 위해 필요한 도구(javac, java 등)들을 포함한다.
JDBC (Java Database Connectivity) : Java에서 DataBase에 접속할 수 있도록 하는 Java API이다.
-> DataBase에서 자료를 쿼리하거나 업데이트하는 방법을 제공한다.
Web 서버
소프트웨어와 하드웨어로 구분되며, 하드웨어는 말 그대로 Web 서버가 설치되어 있는 컴퓨터를 말한다.
그리고 소프트웨어 Web 서버란 브라우저 클라이언트로 부터 HTTP 요청을 받아들이고 HTML 등의 웹 페이지 문서에 반응하는 컴퓨터 프로그램이다. HTTP 프로토콜을 기반으로 하여 브라우저의 요청을 서비스 하는 기능을 담당한다.
WAS 서버 (Web Application Server, 컨테이너)
HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다. 동적 서버 콘텐츠를 수행한다는 것으로 일반 WEB 서버와 구별되며, 주로 데이터베이스 서버와 같이 수행된다. 한국에서는 WAS 서버로 통칭하지만 영어권에서는 Application Server로 불린다.
WEB 서버의 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시된것, 크게 WEB 서버의 기능과 컨테이너의 기능으로 구성한다.
WEB 서버는 HTML 문서같은 정적 컨텐츠를 처리하는 것이고 (HTTP 프로토콜을 통해 읽힐 수 있는 문서)
WAS 서버는 asp, php, jsp 등 개발 언어를 읽고 처리하여 동적 컨텐츠, 웹 응용 프로그램 서비스를 처리하는 것이다.
처리하는 기능은 나누어져있지만 요새 WAS 서버에는 WEB서버 기능을 포함하고 있다고 한다.
WAS를 사용하는 이유는 WEB서버에서는 웹 문서만 처리하도록 기능을 분배하여 서버의 부담을 줄이기 위한 것이라 할 수 있다.
MVC(Model - View - Controller)
MVC란 Model View Controller의 약자로 에플리케이션을 세가지의 역할로 구분한 개발 방법론이다.
아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
Web과 MVC
1. 사용자가 웹사이트에 접속한다. (Uses)
2. Controller는 사용자가 요청한 웹페이지를 서비스 하기 위해서 모델을 호출한다. (Manipulates)
3. 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
4. Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)
5. 데이터가 반영된 View는 사용자에게 보여진다. (Sees)
인프런 강의를 통해 웹 프로그래밍 공부한 내용 정리
- 인터넷 : 1개 이상의 네트워크가 연결되어 있는 형태
- 웹 : 1개 이상의 사이트가 연결되어 있는 인터넷 서비스의 한가지 형태
- 웹 어플리케이션 : 웹을 기반으로 작동되는 프로그램
- 웹 프로그래밍 : 웹 어플리케이션을 구현하는 행위
- HTML : 웹 어플리케이션을 구현하기 위한 기본 언어
- JavaScript : 클라이언트의 기능을 구현하기 위한 언어
- Jquery : JavaScript의 대표적인 라이브러리로써, 클라이언트 사이트 스크립트 언어를 단순화한다.
- CSS : 웹 어플리케이션의 레이아웃 및 스타일을 지정하는 언어
JSP(Java Server Page) : HTML 파일에 Java언어를 삽입한 문서
우리가 흔히 사용하는 웹 환경에서 작동되는 웹 어플리케이션(WAS)을 개발할 수 있는 도구
servlet 기반의 동적 웹 어플리케이션을 구현하기 위한 언어
Servlet(Server Applet)
Java 언어로 이루어진 웹 프로그래밍 문서
서블릿 컨테이너
- 통신 지원
서블릿과 웹 서버가 통신할 수 있는 손쉬운 방법을 제공한다. 우리가 통신을 한다고 생각할 때 소켓을 만들고, 특정 포트를 리스닝하고, 연결 요청이 들어오면 스트림을 생성해서 요청을 받는다고 알고있는데 이 과정을 서블릿 컨테이너가 대신 해주는 것이다. 서블릿 컨테이너는 이런 통신 과정을 API 로 제공하고 있기 때문에 우리가 쉽게 사용할 수 있다.
- 생명주기 관리
서블릿 컨테이너가 기동되는 순간 서블릿 클래스를 로딩해서 인스턴스화하고, 초기화 메서드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 찾아서 호출한다. 만약 서블릿의 생명이 다하는 순간 가비지 컬렉션을 진행한다.
- 멀티스레딩 관리
서블릿 컨테이너는 해당 서블릿의 요청이 들어오면 스레드를 생성해서 작업을 수행한다.
즉 동시의 여러 요청이 들어온다면 멀티스레딩 환경으로 동시다발적인 작업을 관리한다.
- 선언적인 보안관리
서블릿 컨테이너는 보안 관련된 기능을 지원한다. 따라서 서블릿 코드 안에 보안 관련된 메소드를 구현하지 않아도 된다.
- JSP 지원
서블릿의 코드를 보면 HTML코드를 삽입하기 어렵다(복잡하다는 뜻) 그래서 단점을 보완하기 위해 JSP 코드가 탄생되었다.
HTML 내부에 Java 코드가 있어 HTML 코드를 작성하기 쉽다. 단, 로직과 디자인이 한 파일내에 섞여있어 유지보수가 어렵다.
DOM(Document Object Model) : 브라우저 창 안의 웹문서 내용
include : 다른 JSP 페이지의 '실행' 결과를 현재 위치에 삽입
- 처리시간 : 요청 시간에 처리
- 기능 : 별도의 파일로 요청 처리 흐름을 이동
- 데이터 전달방법 : request 기본 객체나 <jsp:param>을 이용한 parameter 전달
- 용도 : 화면의 레이아웃의 일부분을 모듈화할 때 주로 사용
forward : 하나의 JSP 페이지에서 다른 JSP 페이지로 요청 처리를 전달할 때 사용
- 처리시간 : JSP 파일을 자바 소스로 변환할 때 사용
- 기능 : 현재 파일에 삽입
- 데이터 전달방법 : 페이지 내의 변수를 선언한 후, 변수에 값을 저장한다
- 용도 : 다수의 JSP 페이지에서 공통으로 사용되는 변수를 지정하는 코드나 저작권과 같은 문장 포함
- include와 forward
공통점 : request 객체를 공유
차이점 : include는 제어권을 가지고 있고, forward는 제어권을 넘겨준다
forward는 요청 주소는 동일하지만 다른 page의 내용을 서비스할 수 있다
Why? 처음 요청했던 주소(page)의 buffer를 그대로 사용한다
localhost:8090/WebJSP/login.jsp..
전달 내용이 A.jsp 또는 B.jsp 또는 C.jsp 전달될 수 있다.
forward 액션의 경우 출력버퍼에 내용이 있더라도 남은 내용은 다 버리고 제어권이 넘어가지만
include 액션은 원래 페이지의 출력버퍼의 내용도 제어권과 함께 클라이언트로 전송된다.
Cookie : 웹 브라우저가 보관하고 있는 데이터로서 웹 서버에 요청을 보낼 때 함께 전송한다.
메모리 쿠키, 파일 쿠키(암호화) -> 두 가지는 소멸시기로 구분 가능하다
1. 메모리쿠키 (브라우저 쿠키-> 브라우저 종료되면 소멸되기때문)
-> Client가 강제적으로 삭제하지 않는 한 브라우저를 닫기 전까지는 머물러 있다
-> 소멸 타입 : -1 은 session 이 소멸되면 같이 사라진다
2. 파일쿠키 (소멸시간을 가지고 있다)
-> Client가 강제적으로 삭제하지 않는 한 정해진 시간까지는 남아있어야한다
setMaxage가 60이면 60초만 유지 (30일 : 30*24*60*60 -> 일*시*분*초)
- Cookie 클래스를 이용하여 쿠키를 생성하는데 아래의 예시를 확인하자
<%
Cookie cookie = new Cookie("cookieName", "cookieValue");
response.addCookie(cookie);
%>
- 클라이언트가 보낸 쿠키 읽는 방법
Cookie[] cookies = request.getCookies();
- 기존 쿠키 존재여부 확인 및 쿠키값 새로 설정
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
for (int i = 0 ; i < cookies.length ; i++) {
if (cookies[i].getName().equals("name")) {
Cookie cookie = new Cookie(name, value);
response.addCookie(cookie);
}
}
}
Cookie 유효시간
-> 유효시간 미지정시 웹 브라우저가 종료될 때 쿠키도 같이 삭제된다
-> Cookie.setMaxAge() : 쿠키 유효 설정
Session : 웹 컨테이너에서 Client의 정보를 보관할 때 사용
-> 서버에서만 생성되며, Client마다 session 생성된다.
-> 세션종료 : session.invalidate()
-> session 이 종료되면 기존에 생성된 session 이 삭제되고 이후 접근하면 신규 session이 생성된다.
-> Client 및 Server 모두 동일한 session 객체를 가진다.
-> 처음 접속한 시간 및 마지막 접속한 시간을 관리
Application, Session 정리
- Application
전역공유객체로 모두 접근 가능하고, session은 모든 사용자에게 개별적으로 생성되는 것
request는 페이지당 1개씩 생성
request-> include, forward 가 있다면 공유 가능
ex) Application.setAtrribute("count", 0) -> count 라는 변수 생성 후 0으로 초기화
- Session
접속한 사용자의 브라우저마다 고유하게 부여되는 변수
ex) session.setAtrribute("userid", "rykim")
결론은 Application 변수는 사용자마다 같은 값,
session 변수는 접속하는 사용자마다 다른 값을 가질 수 있다.
UserBean : 웹 프로그래밍에서 데이터의 표현을 목적으로 사용
구문
<jsp:useBean id="[빈이름]" class="[자바빈클래스이름]" scope="[범위]" />
id - JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름
class - 패키지 이름을 포함한 자바빈 클래스의 완전한 이름
scope - 자바빈 객체가 저장될 영역을 지정한다. -> page, request, session, application 중 하나를 값으로 갖는다. 기본값 : page
DAO(Data Access Object) : Database의 data에 대한 접근을 위한 객체 => DB를 사용하여 데이터를 조회 또는 조작하는 기능 전담한다
DTO(Data Transfer object) : 계층간 데이터 교환을 위한 Java Beans
=> 여기서 계층은 Controller, View, Business Layer, Persistent layer => 로직이 없는 순수한 데이터 객체로서 속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스를 말한다
HTML
id : 한 페이지에 하나의 정의(style/css)로 하나의 태그(id="")만 사용 가능하다 다시 말하면 로고, 상단메뉴, 하단정보 등과 같은 스타일을 정의할 때 사용한다
class : 한 페이지에 반복적으로 사용되는 스타일을 정의할 수 있다
결론적으로 반복적으로 사용되는 스타일은 class를 사용, 그 내부에 세부 스타일을 정의할 때는 id를 사용한다
<div> : HTML 문서를 분할하는 태그 기본 margin이 없다
table 생성시 아래 내용을 참고하자
get과 post
get : URL에 ?id=~~ 이 붙어서 id 값을 넘겨서 게시판 리스트를 읽을 때 사용한다
post : URL에 표시되지 않고 body에 숨겨져서 보내지므로 게시판 글을 작성할 때 주로 사용된다
반응형
'Etc > IT 백과사전' 카테고리의 다른 글
Linter (0) | 2018.06.23 |
---|---|
RESTful API (0) | 2018.06.23 |
[AWS] Amazon Web Service (0) | 2018.06.23 |
참고사이트 (0) | 2018.05.29 |
[Git] Git 기초부터 협업까지 (0) | 2018.05.20 |
최근댓글