본문 바로가기

Development

(15)
[Spring]Validation과 BindingResults을 통한 유효성 검사 Validation이란? Validation은 프로그래밍에 있어서 가장 필요한 부분으로 특히 java에서는 null 값에 대해서는 Null Pointer Exception이 발생하므로 유효성을 사전에 미리 검사하는 것이 Validation이다. Validation의 주의사항 검증해야 할 값이 많아질 경우 코드가 길어진다. 구현의 따라서 달라질 수 있지만 서비스 로직과 분리가 필요할 수도 있다. 흩어져 있는 경우 어디에서 검증을 하는지 알기가 어려우며, 재사용의 한계가 있다. 검증 로직이 변경되는 경우 참조하는 클래스에서 로직이 변경이 필요한 경우도 있다. 유효성 검사에 사용되는 어노테이션 목록 @Null // null만 혀용합니다. @NotNull // null을 허용하지 않습니다. "", " "는 허용..
[Web]Redirect와 Forward의 차이와 사용법 웹 페이지를 이용함에 있어서 요청에 대한 응답으로 페이지를 전환하는 방법에 대해서 알아보고자 한다. 이렇게 페이지를 전환하는 방법으로는 리다이렉트(Redirect)와 포워드(Forward)가 있는데 이 두 가지 페이지 전환의 설명과 차이를 알아보자 Forward(포워드) 포워드를 설명하기 앞서서 먼저 간단한 예시를 들어보면서 시작하자 1. 고객이 ARS 상담을 위해 1번 상담원한테 연결을 한다. 2. 1번 상담원은 2번 상담원의 도움을 받아 문제의 해결법을 알게 된다. 3. 1번 상담원이 2번 상담원으로부터 알게 된 해결법을 통해 고객에게 안내를 한다. 지금의 경우에는 1번 상담원한테 전화를 연결한 상태에서 1번 상담원가 옆에 있는 2번 상담원을 통해 문제를 해결하는 과정이다. 이 경우에 고객은 계속 1..
[Spring]@RequestParam, @RequestBody, @ModelAttribute의 정의와 차이 종종 HTTP를 이용해 파라미터를 서버로 전송할 때 값이 바인딩이 되지 않는 오류를 경험한 적이 있었다. 이러한 경우 파라미터가 올바른 방법으로 바인딩이 되지 않았기 때문에 발생한 경우가 다수였다. 클라이언트가 HTTP를 이용해 파라미터를 서버로 전송했을 때 스프링에서는 클라이언트로부터 받은 파라미터를 객체로 바인딩하는 역할을 하는 어노테이션에는 @RequestParam, @RequestBody, @ModelAttribute 3가지의 어노테이션이 있다. 이번에는 이 3가지의 어노테이션에 대해서 알아보도록 하자 @RequestParam @RequestParam 어노테이션은 클라이언트가 1개 혹은 여러 개의 HTTP 요청 파라미터를 보냈을 때 보낸 파라미터를 하나씩 받을 때 사용된다. 즉 파라미터를 클라이언..
[Spring]MVC 패턴의 정의와 특징 MVC 패턴이란? MVC는 디자인 패턴 중 하나로 Model, View, Controller의 앞글자들을 딴 약자로 애플리케이션을 세 가지 역할로 구분한 개발 방법론이다. 위의 두 개의 MVC 동작 이미지에서 알 수 있듯이 클라이언트가 요청을 하게 되면 Controller는 작성된 서비스 로직을 바탕으로 Model을 통해 데이터를 가져오고 해당 데이터들을 View를 이용해 클라이언트에게 인터페이스적 요소를 제공한다. 이렇게 MVC 패턴을 통해 비즈니스 로직과 UI분리하여 유지보수를 독립적으로 수행하며 Model과 View가 다른 컴포넌트에 종속되지 않기 때문에 애플리케이션의 확장성과 유연성에 있어서 유리해지게 된다. Model Model은 데이터를 가진 객체로 애플리케이션이 포함해야 할 데이터가 무엇인지..
[Web]쓰레드와 멀티 쓰레드 클라이언트가 무언가를 요청할 경우 프로세스 내에서 직접 작업을 수행하는 주체를 스레드라고 한다. 이러한 스레드는 모든 프로세스 안에서 하나 이상 존재하여 작업을 수행한다. 이제부터 이러한 스레드와 함께 두 개 이상의 스레드를 가지는 멀티 스레드까지 알아보도록 하자 스레드 클라이언트의 요청을 프로세스 내에서 직접 작업을 수행하는 주체 애플리케이션 코드를 하나하나 순차적으로 실행한다. -> 한 번에 하나의 코드 라인만 수행 스레드가 없으면 자바 애플리케이션 실행이 불가능하다. 멀티 스레드 멀티 스레드는 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것이다. 이러한 멀티 스레드의 경우에는 각각의 스레드가 자신이 속한 프로세스의 메모리를 공유하므로 시스템 자원의 낭비가 적다. 장점 동시 요청..
[Web]서블릿(Servlet)과 서블릿 컨테이너란? 서블릿(Servlet)이란? 웹 서버의 성능을 향상하기 위한 자바 클래스의 일종으로 기존에는 서버가 정적인 자료만 주고받았다. 하지만 웹 페이지에서 다양한 요구가 추가됨에 따라 사용자의 요구에 맞춘 동적인 페이지도 만들 필요가 생겼다. 이러한 것들을 위해 만들어진 것이 서블릿이다. 서블릿은 클라이언트의 요청에 맞춰 동적인 자료를 만들어주는 자바 웹 프로그래밍 기술이다. 서블릿은 JSP와 비슷하지만 JSP는 HTML 문서 안에 자바 코드를 포함하는 반면 서블릿은 자바 코드 안에 HTML을 포함한다는 차이가 있다. 서블릿의 특징 urlPattern의 URL이 호출되면 서블릿 코드가 실행 HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest HTTP 응답 정보를 편리하게 제공할 수 ..
[Web]Web Server와 Web Application Server 이번에는 서버에 대한 기초 개념인 Web Server와 WAS에 대해 알아보고자 한다. 하지만 서버를 알아보기 전에 먼저 정적 페이지와 동적 페이지에 대해서 먼저 알아본 뒤 서버를 알아보도록 하자 정적 페이지와 동적 페이지 1. 정적 페이지 Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환한다. 항상 동일한 페이지를 반환한다. html, css, js, 이미지, 영상과 같이 컴퓨터에 저장되어 있는 파일 2. 동적 페이지 인자의 내용에 맞는 동적인 contents를 반환한다. Web Server에 의해 실행되는 프로그램을 통해서 만들어진 결과물 앞선 내용에서 정적 페이지와 동적 페이지의 차이를 간략하게 알아봤다. 이제부터는 이러한 차이를 바탕으로 Web Serve..
[Java] 객체지향 프로그래밍 5가지 설계의 원칙(SOLID) 객체지향 프로그래밍 설계에 있어서 클린코드로 유명한 로버트 마틴이 좋은 객체지향 설계의 5가지 원칙을 정리했는데 각각 5가지 원칙 이름의 앞글자들을 딴 SOLID이다. 1. SRP(Single Responsibility Principle) - 단일 책임 원칙 한 클래스는 하나의 책임을 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수도 있고, 작을 수도 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 작으면 단일 책임 원칙을 잘 따른 것이다. 예) UI 변경, 객체의 생성과 사용을 분리 2. OCP(Open/Closed Principle) - 개방/폐쇄 원칙 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다. 다형성을 활용해 본다. 인터페이스를..