Web언어 15

[JS] ES6 달라진 문법 ( let, const ) + 호이스팅(Hoisting)

'var' 를 사용하지 말자! ES6부터 let과 const가 등장한 이유는 무엇일까? ▶ 실행 원리 JavaScript 엔진은 Stack 메모리와 Heap 메모리를 사용한다. 1. 호출 스택 ( Call Stack ) 스택은 LIFO이다. 마지막에 PUSH된게 먼저 POP된다. 이런 구조는 함수 호출 구조와 같다. Js파일이 호출되면 foo()가 호출되고 그다음 foo1() 함수가 호출된다. 그리고 foo1() 함수가 종료되고 foo()가 종료된 뒤 js파일이 종료된다. 그러므로 Stack 메모리에 PUSH와 POP이 되는 객체는 함수의 정보를 담은 객체로 이를, 실행컨텍스트(Execution Context; EC)라 부른다. 실행컨텍스트는 스택에 쌓이는 프레임으로 함수단위로 생성된다. 2. 호이스팅(..

Web언어/JS 2022.04.22

[JSP] JSP 코드블록

[JSP] JSP의 역할 HTML 문서를 Dynamic하게 만드는 언어 중 하나가 JSP이다. 이번 포스팅에서는 HTML 문서를 Dynamic하게 만드는 과정에서 JSP의 역할을 알아보겠다. HTML 문서를 서블릿(Servlet)으로 만들기 HTML문서는 태그 lordofkangs.tistory.com 지난 포스팅에서 JSP의 역할을 알아보았다. JSP는 jasper가 Dynamic하게 처리할 부분을 표시한 문서이다. 개발자는 HTML 코드 중 Dynamic한 부분을 코드블록을 사용하여 표현해야한다. jasper는 JSP 문서를 서블릿 클래스로 변환한다. // 서블릿클래스 public final class index_jsp extends org.apache.jasper.runtime.HttpJspBase..

Web언어/JSP 2022.01.31

[JSP] JSP의 역할

HTML 문서를 Dynamic하게 만드는 언어 중 하나가 JSP이다. 이번 포스팅에서는 HTML 문서를 Dynamic하게 만드는 과정에서 JSP의 역할을 알아보겠다. HTML 문서를 서블릿(Servlet)으로 만들기 HTML문서는 태그로만 이루어져서 정적(Static)이다. 변수나 메소드를 갖지 못하고 연산도 하지 못한다. 그래서 클라이언트가 경로를 통해 HTML 문서에 접근하면 웹서버는 HTML 문서를 웹브라우저에게 보내고 웹브라우저는 HTML 코드를 파싱하여 브라우저에 표현한다. 이 과정에서 Dynamic한 요소란 없다. 그럼 JSP를 보자. 클라이언트가 JSP 문서에 접근하면 WAS는 jasper라는 프로그램을 돌려 JSP문서를 서블릿 파일로 변환한다. 서블릿이란 JAVA언어로 작성된 클래스 파일로..

Web언어/JSP 2022.01.30

[JSP] 동적(Dynamic) 페이지란?

HTML은 정적 페이지이다. 3+4 위 HTML 파일을 웹브라우저에 출력하면 3+4가 그대로 출력된다. +,- 같은 연산을 수행하고 사용자의 입력에 반응하는 페이지를 동적(Dynamic) 페이지라 부른다. 태그로만 이루어진 HTML은 동적인 표현을 못한다. 변수와 함수를 가진 언어를 사용하면 Dynamic한 성질을 불어 넣을 수 있다. 브라우저 vs 서버 언어를 사용하려면 언어를 해석하는 해석기가 필요하다. 브라우저 쪽 해석기를 사용하는 대표적인 언어가 JavaScript이고 JSP, PHP는 서버쪽 해석기를 사용한다. 다음 포스팅 부터 JSP를 이용하여 HTML 페이지에 Dynamic한 성질을 불어 넣는 법을 하나씩 알아볼 것이다.

Web언어/JSP 2022.01.29

[ JSP ] 상태 유지 ( Session, Cookie )

웹브라우저(Client)와 웹서버(Server)는 HTTP로 통신한다. HTTP는 상태 비저장(Stateless) 프로토콜이다. HTTP 프로토콜로 이루어지는 통신은 모두 독립적으로 이루어진다. 고로, 첫 번째 통신은 두 번째 통신에게 영향을 줄 수 없다. 초창기 웹환경처럼 단순히 문서만 열람하는 경우라면 문제없다. 그러나 이제는 로그인처럼 특정 '상태(State)'를 유지해야 한다. 상태를 유지하는 역할은 '쿠키'와 '세션'이 맡는다. 상태유지란, 데이터를 유지함을 의미한다. 그럼 데이터를 저장할 공간이 필요한다. 서버 쪽에 위치한 데이터 저장공간을, 세션(session)이라 부르고 클라이언트 쪽에 위치한 데이터 저장공간을, 쿠키(Cookie)라고 부른다. 세션(Session) 세션은 서버(WAS)쪽에..

Web언어/JSP 2022.01.25

[PHP] "(큰 따옴표) 와 ' (작은 따옴표) 차이

큰 따옴표와 작은 따옴표의 구분은 PHP 코딩을 하면서 가장 헷갈렸던 부분이다. 큰 따옴표와 작은 따옴표는 둘다 문자(문자열)를 출력하지만 기능상의 차이가 있다. 어떤 차이가 있을까? 가장 큰 차이는 변수 치환이다. 1) 큰 따옴표 출력결과 > 하늘이 유독 푸르다. 큰 따옴표 안에 $ 표시된 변수가 들어가면 PHP 인터프리터는 이를 변수로 감지한다. 그리고 알맞는 값으로 치환한다. 그러나 $를 문자로 출력해야하는 경우도 있다. 이때는 이스케이프 문자를 사용한다. 출력결과 > 100 만원은 내꺼 $$ 이렇듯 큰 따옴표 안에는 단순 문자로 인식되지 않는 문자들이 있기에 이스케이프 문자들이 존재한다. PHP 인터프리터는 이스케이프 문자를 인식하면 알맞는 문자로 변환한다. \" 큰 따옴표 출력 \' 작은 따옴표..

Web언어/PHP 2021.06.21

Visual Studio Code에서 PHP 개발하기

Visual Studio Code에서 PHP 개발을 시작해보자. 우선 Bitnami WAMP를 통해 아파치 웹서버와 PHP 인터프리터를 설치해야한다. 아래의 블로그에서 설치 과정을 자세히 알려주니 참고를 추천드린다. 비트나미(bitnami) WAMP 아파치 웹서버 설치 방법 웹개발을 공부한다면 웹 애플리케이션을 제작할 때 반드시 필수로 사용되는 웹 서버를 다운로드해야 합니다... blog.naver.com 설치를 완료하면 개발 툴이 필요하다. 개발 툴은 Visual Studio Code를 사용할 것이다. VS Code는 아래에서 다운로드 받으면 된다. Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and avail..

Web언어/PHP 2021.06.21

PHP란?

PHP가 무엇인가? PHP는 '서버사이드 스크립트 언어'이다. 인터넷에 돌아다니는 PHP의 가장 흔한 정의이다. 그러면 왜 PHP가 서버사이드 스크립트 언어라고 불리우는지 핵심 키워드인 '서버'와 '스크립트 언어'를 통해 알아보자. 서버 사이드 (Server Side) 파일철에 종이 문서를 관리하던 인간은 컴퓨터에 문서를 저장할 생각을 하게 된다. 그리고 더 나아가, 문서가 저장된 컴퓨터가 다른 컴퓨터에게 문서를 제공하는 방식을 생각하게 되는데, 이가 바로 웹(Web)과 HTTP 프로토콜의 시작이다. 이렇듯 초기 웹환경은 웹서버(Sever)가 클라이언트(Client)에게 단순히 문서(html)를 제공하는 방식이 전부였다. 하지만 단순히 문서만 주고 받기에는 웹이 가진 잠재성은 무궁무진했다. 웹의 발달로 ..

Web언어/PHP 2021.06.21

[ JSP ] 인코딩(Encoding) 설정

문자가 깨지는 이유는 브라우저 => 서버 서버 => 브라우저 환경이 변할 때, 환경별로 설정된 인코딩 방식이 다르기 때문이다. 그러므로 인코딩 설정을 바꾸어야 한다. 브라우저 => 서버 (Request) 요청에는 크게 두 가지가 있다. Get 방식, Post 방식 이전 포스팅에서 자세히 다루어 본대로, 웹서버에서 Get 방식으로 url로 넘길 때와 Post 방식으로 HTTP body 안에 데이터를 넣고 전송하는 방식은 서로 인코딩 방식이 다르다. 그래서 Get 방식과 Post 방식은 인코딩을 설정하는 방식도 다르다. Post 방식의 경우, 이클립스로 서블릿을 개발하면서 JAVA 메소드로 인코딩을 할 수 있다. request.setCharacterEncoding("UTF=8"); 로 간단히 인코딩 방식을 ..

Web언어/JSP 2021.06.21

[ JSP ] 인코딩(Encoding)을 하는 이유

웹 개발에서 빼놓을 수 없는 것이 '인코딩' 설정이다. 우리는 웹에서 한글이 강민구 이나 뤱뜲핟뷇와 같이 깨지는 것을 자주 보았다. 한글이 깨지는 이유는 웹브라우저와 웹서버가 서로 다른 인코딩 방식을 사용하기 때문이다. 웹브라우저는 2Byte씩 처리하는 UTF-8 인코딩 방식을 사용하는데, 웹서버는 1Byte씩 처리하는 ISO-8859-1 방식으로 인코딩을 하면, 서로 다른 인코딩 방식 때문에 적절한 디코딩이 이루어지지 않는 것이다. 위와 같이, 한글을 POST 방식과 GET 방식으로 서버에 전송하여, 서버 콘솔을 통해, 서버에 어떻게 값이 전달되었는지 확인해 보았다. POST 방식은 한글이 깨졌지만 GET 방식은 한글이 깨지지 않았다. GET과 POST가 다른 결과가 나오는 이유는 무엇일까?..

Web언어/JSP 2021.06.21