웹 서비스를 개발한다고 했을 때, 기능마다 공통으로 가지고 있는 로직이 있다. 예를 들어, 상품을 등록, 수정, 삭제하는 기능들은 검증된 사용자만 사용할 수 있는 기능들이기 때문에 사용자를 인증하는 로직이 공통으로 들어가야 한다. 이렇게 애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것을 공통 관심사(cross-cutting concern) 라고 한다.이러한 공통 관심사를 해결하는 대표적인 기술로 스프링의 AOP가 있는데, 웹 애플리케이션이라면 서블릿 필터나 스프링 인터셉터가 더 좋은 대안이 된다.서블릿 필터(Servlet Filter)서블릿 필터는 J2EE 표준 스펙 기술로, HTTP 요청과 응답을 필터링하거나 수정할 수 있는 메커니즘을 제공한다. 주의할 점은, 스프링 컨테이너에서 동작하는게 아..
서비스를 개발할 때, 정상적인 비즈니스 로직을 작성하는 것만큼이나 중요한 부분이 요청 데이터 검증이다. 클라이언트들은 항상 다양하고 창의적인 방법으로 데이터를 입력해 서버로 요청하기 때문에 개발자 입장에서 이를 다 예측하고 걸러내는 작업이 쉽지 않다. 정말 사소한 오류들도 있겠지만, 몇몇 제대로 검증하지 못한 요청 데이터들이 결국 서버 오류로 이어지면, 클라이언트에게 불편한 사용감을 주게 되어 소중한 고객을 잃을 수 있다. 따라서 보통 정상적인 로직보다 검증을 위한 코드가 더 복잡하고, 이를 작성하는 시간이 더 많다고 한다.검증은 보통 다양한 계층에서 이루어질 수 있다. 크게는 클라이언트와 서버로 나누어 볼 수 있다.클라이언트 검증 : 사용자의 입력 폼(form)에서 HTML, Javascript로 실시..
스프링 MVC 패턴에서 뷰 템플릿 엔진(View Template Engine)으로 보통 타임리프(Thymeleaf)가 자주 쓰이며, 스프링 부트에서는 타임리프를 표준 뷰 템플릿 엔진으로 취급하고 있다. 프론트 엔드 엔지니어가 같이 있는 업무 환경에서는 보통 API 방식을 사용하기 때문에 프뷰 템플릿을 사용할 일이 없겠지만, admin 페이지를 만든다거나, 프론트 엔드 엔지니어 없이 혼자 개발해야 하는 환경에서는 뷰 템플릿 엔진을 사용하는게 더 편리할 수 있다. 때문에 1개 정도의 뷰 템플릿 엔진을 간단히 배워두는 것은 크게 어렵지도 않고, 언젠간 도움이 될 것이다.Goals타임리프의 특징5가지 기본 표현식자주 쓰는 구문 정리타임리프의 특징내츄럴 템플릿타임리프의 가장 대표적인 특징은 HTML을 자연스러운 ..
스프링을 사용해 웹 애플리케이션을 개발해 본 적이 있는 개발자라면, 상당히 간단하게 컨트롤러 클래스를 작성해 본 경험이 있을 것이다. 근데 가만 생각해 보면, 클라이언트의 요청에 맞게 호출될 수 있도록 URL을 매핑해 주고, 비즈니스 로직을 넣고, 또 경우에 따라서는 뷰 로직도 들어가야 하는 “컨트롤러” 클래스가 그렇게 간단할 수 없다.이는 스프링 MVC 프레임워크가 비즈니스 로직 이외의 반복적이고 귀찮은 작업들을 처리해 주고 있기에 가능한 것이다. 그것도 아주 깔끔한 객체 지향적인 설계로 말이다. 때문에 개발자는 클라이언트의 다양한 HTTP 요청을 입맛에 맞게 처리할 수 있는 컨트롤러를 간단히 구현할 수 있다.스프링 MVC도 처음에는 이런저런 기능 부족과 불편함 때문에 외면받기도 했다. 하지만 애노테이..
Servlet(서블릿)?우리가 일반적인 웹 서비스를 만든다고 했을 때, 현대에는 거의 대부분의 웹 통신이 HTTP 요청과 응답으로 이루어 진다. 때문에 서버는 HTTP 요청 메세지를 받아 해석하고, 그에 맞는 HTTP 응답 메세지를 만들어 클라이언트에게 응답해줘야 한다. HTTP가 워낙 잘 만들어진 프로토콜이라 표준 문서를 보면 규약이 명확하지만, 일반 텍스트로 작성된 HTTP 메세지에서 규약들을 지켜가며 수 많은 헤더들을 일일이 직접 파싱하고, 그에 맞는 비즈니스 로직을 처리한 뒤 응답 메세지를 만드는게 결코 쉬운 일은 아닐 것이다.다행히 Java에는 이런 HTTP 통신을 전담하는 프로그램이 있는데, 그게 Java Servlet이다.서블릿(Servlet) : 자바에서 HTTP 통신에 관련된 기능을 담당..
스프링(Spring)이란?“겨울(EJB)이 지나가고 봄(spring)이 오다”당시 자바 기반의 새로운 애플리케이션 프레임워크인 스프링(Spring)의 어원이자 탄생 배경이다. 기존에 자바 진영에서 사용하던 EJB(Enterprise Java Bean)를 겨울에 빗대어, 차가웠던 자바 엔터프라이즈 진영에 새로운 시작을 알리겠다는 포부를 담고 있다.스프링의 탄생 역사EJB(Enterprise Java Bean)EJB는 자바를 기업 환경의 서버 시스템을 구축하기 위해 Sun Microsystems사가 발표한 모델이다. 엔터프라이즈급 서버를 개발하는데 있어 필요한 기능들을 대부분 담고 있었다. 자바 객체(Java Bean)를 관리 및 재사용하게 해주는 컨테이너, 트랜잭션 관리, 분산 처리 시스템 지원, 심지어 ..
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 김영한 인프런 강의 참고이전 포스팅2023.02.25 - [Web Programming/Spring&Spring Boot] - [Spring Boot] 입문 - Spring Data JPA 맛보기2023.02.24 - [Web Programming/Spring&Spring Boot] - [Spring Boot] 입문 - Spring Boot 프로젝트에 JPA 적용하기2023.02.23 - [Web Programming/Spring&Spring Boot] - [Spring Boot] 입문 - JPA를 사용하는 이유GoalsAOP가 필요한 상황AOP란?AOP 적용해보기AOP 용어 정리스프링의 AOP 동작 방식AOP가 필요한 상황AO..
이전 포스팅 : [Spring Boot] Spring MVC CRUD를 위한 방명록 프로젝트 - 1 코드 참고 : https://github.com/on1ystar/guestbook2 GitHub - on1ystar/guestbook2 Contribute to on1ystar/guestbook2 development by creating an account on GitHub. github.com Goals 프로젝트 구조 설계 기본 설정 세팅 및 테스트 방명록 등록(Create) 방명록 목록 조회 및 단일 조회(Read) 방명록 수정 및 삭제(Update & Delete) 방명록 검색(Search) 방명록 목록 조회 및 단일 조회(Read) 메인 페이지인 /guestbook/list.html에서 방명록의 ..
- Total
- Today
- Yesterday
- 프로그래머스
- Spring
- 쉘 코드
- 스프링 컨테이너
- Spring Boot
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 쉽게 배우는 운영체제
- 선형 회귀
- 패킷 스위칭
- 지옥에서 온 git
- 파이썬 for Beginner 솔루션
- JPA
- spring mvc
- Thymeleaf
- git
- jsp
- 김영환
- 스프링
- Gradle
- Spring Data JPA
- Computer_Networking_A_Top-Down_Approach
- Python Cookbook
- 생활코딩 javascript
- git branch
- 방명록 프로젝트
- 스프링 mvc
- 스프링 테스트
- git merge
- 파이썬 for Beginner 연습문제
- 운영체제 반효경
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |