본문 바로가기

웹프로그래밍35

enum으로 코드 줄이기 enum은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 한다. 만약, price라는 객체의 getType() 메서드가 각 가격의 좌석 종류를 가져오고, 각 좌석 종류가 무슨 좌석인지를 표현해야 한다고 했을 때, if문으로 다음과 같이 표현할 수 있다. if(price.getType() == "A"){ System.out.println("VIP석"); } else if(price.getType() == "B"){ System.out.println("B구역"); } else if(price.getType() == "C"){ System.out.println("C구역"); } else if(price.getType() == "S"){ System.out.prin.. 2019. 9. 4.
아규먼트 리졸버(Argument Resolver) 아규먼트 리졸버(Argument Resolver)는 사용자가 컨트롤러의 메서드 인자값으로 임의의 값을 전달하려할 때 사용된다. 예를 들어, 세션에 저장되어 있는 값 중, 특정 이름의 값을 메서드 인자로 전달한다. 아규먼트 리졸버 작성 방법 org.springframework.web.method.support.HandlerMethodArgumentResolver를 구현한 클래스 작성 supportsParameter 메서드를 오버라이딩 한 후, 원하는 타입의 인자가 있는지 검사하여 있으면 true를 리턴하도록 한다. resolveArgument 메서드를 오버라이딩한 후, 메서드의 인자로 전달할 값을 리턴한다. Java Config에 설정하는 방법 WebMvcConfigurerAdapter를 상속받은 Java.. 2019. 8. 26.
인터셉터(Interceptor) - Cotroller 공통 로직 처리하기 Spring이 실행되는 흐름은 아래 그림과 같다. 아래 그림과 함께 인터셉터가 무엇인지 살펴보자. 클라이언트로부터 요청(Request)이 들어오면, Filter가 있다면 Filter를 수행한 후, DispatcherServlet을 수행한다. 즉, 필터는 요청이나 응답이 처리되기 전 거치는 것이다. DispatcherServlet은 선처리 작업할 것이 존재하면 선처리 작업을 해주고, HandlerMapping을 통해 실제 어떤 Handler가 동작을 해야 되는지 알아내고, 그 Handler를 실행시킨다. 위 그림을 보면 DispatcherServlet와 Handler 사이에 HandlerInterceptor라고 하는 것이 있다는 것을 볼 수 있을 것이다. 이런 것들을 거쳐 요청 작업이 끝나면 응답 정보를 .. 2019. 8. 26.
세션(Session) 이용하는 방법 세션은 클라이언트 별로 서버에 저장되는 정보이다. 사용자 컴퓨터에 저장되던 쿠키와 다르게 서버에 저장되므로, 비교적 보안이 필요한 데이터는 쿠키보다 세션에 저장한다. 서버가 종료되거나 유효시간이 지나면 사라진다. 1. 세션 이용 방법 웹 클라이언트가 서버에게 요청을 보내면 서버는 클라이언트를 식별하는 session id를 생성한다. 서버는 session id로 key와 value를 저장하는 HttpSession을 생성하고, session id를 저장하고 있는 쿠키를 생성하여 클라이언트에게 전송한다. 클라이언트는 서버 측에 요청을 보낼 때, session id를 가지고 있는 쿠키를 전송한다. 서버는 쿠키의 session id로 HttpSession을 찾는다. javax.servlet.http.HttpSes.. 2019. 8. 26.
쿠키(Cookie) 이용하는 방법 웹은 HTTP 프로토콜로 통신한다. HTTP는 무상태 프로토콜이어서 서버는 클라이언트의 이전 상태를 기억하지 못한다. (더 자세한 내용: 웹이 동작하는 법 (HTTP 프로토콜의 이해) ) 하지만 상황에 따라 클라이언트의 이전 상태를 기억하고 있어야 하기도 하는데, 바로 이럴 때 쿠키라는 기술이 필요하다. 1. 쿠키(Cookie)란? 쿠키는 클라이언트 단에 저장되는 작은 정보의 단위이다. 클라이언트에서 생성하고 저장된다. 서버에서 전송한 쿠키가 클라이언트에 저장될 수 있다. - 쿠키 이용 흐름 서버에서 쿠키 객체를 생성한 후, 응답과 함께 클라이언트의 브라우저로 전송되어, 사용자의 컴퓨터에 서버별로 저장된다. 저장된 쿠키는 다시 해당하는 웹 페이지에 접속할 때(서버한테 다시 요청 보낼 때) 브라우저에서 서.. 2019. 8. 23.
정규표현식(Regular Expression) 정규표현식은 문자열의 특정 패턴을 찾을 수 있는 문법을 말한다. 정규표현식을 이용해 패턴에 맞는 문자열을 추출, 삭제, 치환 등 조작 할 수 있다. 보통 이메일, 주소, 전화번호 같은 일정한 규칙이 있는 데이터가 그 규칙에 맞는지 검증하고, textarea에 입력된 것 중 불필요한 입력값을 추출하고, 트랜스파일링, 개발 도구에서의 문자열 치환 등에 쓰인다. (트랜스파일링은 예전 버전의 브라우저를 지원하기 위해 해당 브라우저에 맞는 문법으로 변환시켜주는 것을 말한다. 개발 도구에서의 문자열 치환은 개발 도구에서 코드의 어떤 부분을 치환한다는 의미로 쓰여졌다.) 1. 정규표현식 기본 사용법 1) 숫자 하나 찾기 var result = "abc3zzz".match(/\d/)[0]; console.log(res.. 2019. 8. 22.
생성자 패턴 (new 키워드와 prototype 객체) 애플리케이션이 복잡해질수록 모듈화가 필요하다. 자바스크립트도 객체로 비슷한 속성과 행위를 묶어서 모듈화 할 수 있다. 이렇게 좀 더 객체지향적인 방법으로 표현하는 방법을 생성자(constructor) 패턴을 통해 이해해보자. 먼저, 자바스크립트의 객체는 객체 리터럴로 쉽게 표현할 수 있다. var healthObj = { name : "달리기", lastTime : "PM10:12", showHealth : function() { console.log(this.name + "님, 오늘은 " + this.lastTime + "에 운동을 하셨네요"); } } 이러한 코드를 객체리터럴이라고 하는데, 이 healthObj의 형태를 가진 객체가 여러 개 필요할 때가 있다. name이 "개발자"이고, 운동을 한 시.. 2019. 8. 21.
웹이 동작하는 법 (HTTP 프로토콜의 이해) 보통 인터넷이라 하면 웹을 떠올린다. 하지만 인터넷이 웹인 것은 아니다. 컴퓨터 하나에는 여러 개의 서버가 존재하고, 각 서버는 다른 포트번호를 사용한다. 웹은 80번 포트를 이용하고 있고, 이메일은 25번, FTP는 21번을 사용하고 있다. 인터넷은 TCP/IP 기반의 네트워크가 전 세계적으로 확대되어 하나로 연결된 네트워크들의 네트워크, 즉, 수많은 네트워크의 결합체라고 할 수 있다. 웹은 인터넷 기반의 서비스 중 하나인 것이다. 웹에선 서로 통신하기 위해 어떤 규약이 필요한데, 이 규약이 바로 HTTP이다. 1. HTTP (Hypertext Transfer Protocol)란? 팀 버너스리(Tim Berners-Lee)와 그 팀은 CERN에서 HTML뿐만 아니라 웹 브라우저 및 웹 브라우저 관련 기.. 2019. 8. 20.
웹 프로그래밍을 위한 프로그래밍 언어 프로그램을 만들기 위한 프로그래밍 언어의 종류는 굉장히 다양하다. 10년 주기로 보통 40~50개의 프로그래밍 언어가 만들어지고 있다고 한다. 프로그래밍 언어의 종류와 웹 프로그래밍에 좀 더 최적화된 프로그래밍 언어의 장단점에 대해 알아보겠다. 먼저, 언어의 종류는 저급 언어, 고급 언어로 나눌 수 있다. 1. 저급 언어 저급 언어는 기계 중심의 언어를 말한다. 컴퓨터는 전기로 동작한다. 즉, 전기 신호인 1(on), 0(off) 두 가지 상태 값으로 동작한다. 0과 1로 표현되는 숫자를 2진수라고 한다. 2진수로만 작성하는 프로그래밍 언어를 기계어(Machine Language)라고 한다. 이렇게 숫자로만 이루어진 언어는 사용하기도 어렵고, 유지보수도 어렵다. 그래서 이 숫자로 된 문장과 1:1로 대응.. 2019. 8. 20.
jQuery 사용하지 않고 프로그래밍하기 (ft.Vanilla JS) 오늘 부스트코스 웹 프로그래밍 프로젝트 4-2 코드 리뷰를 받았다. (참고: [부스트코스] 웹 프로그래밍 프로젝트4-2 리뷰어님 덕에 요즘은 jQuery를 사용하기보단 순수 JavaScript를 사용하는 추세라는 걸 알게 됐다. 전에는 jQuery가 사용하기도 쉽고 키보드 치는 것도 짧아서 자주 썼는데, 지금은 순수 JavaScript 연습할 겸 jQuery 사용을 자제하고 있는 중이었다. 마침 또 jQuery 사용을 줄이는 추세라니 신기했다. jQuery가 확실히 간편하긴 하지만, 이젠 jQuery에서만 지원하던 메서드를 JavaScript로 구현이 가능하고, 브라우저 호환성도 많이 좋아지는(우리나라에선 아직이라고 한다) 등의 이유 때문이다. 자바스크립트 라이브러리 내용 중, 1. jQuery에 jQu.. 2019. 8. 19.