Backend 17

[Spring] @ResponseBody의 개념과 용도(feat. PrintWriter)

@ResponseBody 어노테이션은 Spring MVC에서 사용되며, 메서드의 반환 값을 HTTP 응답 본문에 직접 쓰도록 지시합니다.이 어노테이션을 사용하면, 메서드의 반환 값이 뷰 리졸버를 거치지 않고, JSON, XML 또는 문자열 등의 형식으로 HTTP 응답 본문에 직접 포함됩니다. 주로 RESTful 웹 서비스나 API를 구현할 때 유용합니다. 메서드의 반환 값이 서버에서 클라이언트로 전달될 때 뷰 템플릿을 거치지 않고 그대로 HTTP 응답의 본문으로 사용된다는 것이다. 즉, 반환 값이 변환되지 않고 그대로 응답으로 전송된다는 뜻이다. 예를 들어, 아래와 같은 컨트롤러 메서드를 사용할 수 있습니다:@RestController public class MyController { @GetMapp..

Backend/Spring 2024.07.23

[JSP] JSTL 사용을 위한 jar 파일의 필요성

JSTL 라이브러리를 사용하려면 다음과 같은 단계가 필요합니다:JSTL JAR 파일 다운로드:JSTL 라이브러리를 포함하는 두 가지 주요 JAR 파일은 jstl.jar와 standard.jar입니다.Maven Repository나 다른 온라인 리포지토리에서 JAR 파일을 다운로드할 수 있습니다.https://mvnrepository.com/    2. JAR 파일 프로젝트에 추가:다운로드한 JAR 파일을 프로젝트의 WEB-INF/lib 디렉토리에 추가합니다(반드시 lib 폴더에 파일이 있어야지만 이클립스에서 인식을 합니다).Maven을 사용하는 경우, pom.xml 파일에 JSTL 의존성을 추가할 수 있습니다. javax.servlet jstl 1.2      3. JSP 파일에서 ..

Backend/JSP 2024.07.19

[Spring] ResponseEntity의 개념 및 사용법

ResponseEntity의 개념 ResponseEntity는 Spring Framework에서 HTTP 응답을 나타내는 클래스입니다. 이 클래스가 무엇인지 정확히 알려면 우선 HTTP에 관한 클래스를 알아야 합니다. *HTTP(HyperText Transfer Protocol): 클라이언트(브라우저)와 서버 사이에서 이루어지는 요청/응답 프로토콜 *프로토콜(Protocol): 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계 사람이 주고 받는 편지에도 양식이 있듯 컴퓨터가 주고 받는 편지도 마찬가지다. '주는 편지(요청)', '받는 편지(응답)'를 HTTP라 이해하면 좋을 듯. Spring Framework에는 HttpEntity라는 클래스가 존재합니다. 해당 클래스는 HTTP..

Backend/Spring 2024.03.15

[Spring] 댓글과 댓글 수에 대한 처리

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. 🧙‍♂️ 안녕하세요 코딩법사입니다. 이어서 게시판 프로젝트의 댓글 처리입니다. 게시판을 사용할 때 보면, 제목 옆에 댓글 수가 뜨는 것을 심심치 않게 볼 수 있습니다. 이번 포스팅에서는 그 부분을 만져줄 것입니다. 그렇다면 먼저 댓글 수를 의미하는 칼럼을 추가해야 합니다. alter table tbl_board add (replyCnt number default 0); 그리고 기존에 댓글이 존재했다면 replyCnt에 반영해야 하기 때문에 update를 사용한 쿼리를 실행합니다. update tbl_board set replyCnt = (select count(rno) from tbl_reply wher..

Backend/Spring 2024.03.08

[Spring] AOP와 트랜잭션(@Transactional)

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. AOP 기능은 주로 일반적인 Java API를 이용하는 클래스들에 적용합니다. Controller에는 인터셉터나 필터 등을 이용하고, 서비스 계층에 AOP를 적용할 것입니다. 서비스 계층의 메서드 호출 시 모든 파라미터들의 로그를 기록하고 메서드들의 실행 시간을 기록하겠습니다. 실습 1. 예제 프로젝트 생성 및 설정 2. 서비스 계층 설계 Service 인터페이스와 ServiceImpl를 생성합니다. ServiceImpl는 문자열을 변환해서 더하기 연산을 하는 단순 작업으로 작성합니다. 작성 시에는 반드시 @Service라는 어노테이션을 추가해 스프링에서 빈으로 사용될 수 있도록 설정합니다. 3. Adv..

Backend/Spring 2024.03.08

[Spring] AOP에 대하여

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. AOP는 관점 지향 프로그래밍이라고 번역할 수 있습니다. 이 때 '관점'은 '관심사(concern)'로 생각하면 의미를 이해하기 좀 더 쉽습니다. 관심사는 개발자가 코드를 작성하면서 어떤 것에 염두를 두는 것인데, 1. 파라미터가 올바르게 들어왔는지 2. 이 작업을 하는 사용자가 적절한 권한을 가진 사용자인지 3. 이 작업에서 발생할 수 있는 모든 예외는 어떻게 처리해야 하는지 위의 고민들을 하면서 코드에 반영하는 것입니다. AOP는 이런 관심사들을 분리합니다. 관심사가 핵심이 되는 비즈니스 로직은 아니기 때문입니다. 그래서 관심사를 사전 조건이나 사후 조건이라고 간주하면 됩니다. 개발자가 작성한 코드와..

Backend/Spring 2024.03.07

[Spring] 댓글 처리(REST와 Ajax...스압주의)

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. REST 방식을 가장 많이 사용하는 형태는 브라우저나 모바일 App 등에서 Ajax를 이용해서 호출하는 것입니다. Ajax( Asynchronous JavaScript and XML)란, 비동기적인 웹 애플리케이션의 제작을 위해 다음과 같은 조합을 이용하는 웹 개발 기법입니다. *비동기적이란 어떤 작업이 순차적으로 실행되지 않고, 다른 작업과 독립적으로 병행적으로 실행될 수 있는 것을 말합니다. - 표현 정보를 위한 HTML과 CSS - 동적인 화면 출력 및 표시 정보와의 상호작용을 위한 DOM, 자바스크립트 - 웹 서버와 비동기적으로 데이터를 교환하고 조작하기 위한 XML, XSLT, XMLHttpRe..

Backend/Spring 2024.03.07

[Spring] MyBatis의 페이징 처리

※ 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. MyBatis는 SQL을 그대로 사용할 수 있기 때문에 인라인뷰(In-line View)를 이용하는 SQL을 작성하고 필요한 파라미터를 지정하는 방식으로 페이징 처리를 하게 됩니다. 인라인뷰는 SELECT FROM(SELECT FROM)으로 이해하면 됩니다. 페이징 처리를 할 때는 SQL을 실행할 때 몇 가지 파라미터가 필요합니다. 1. 페이지 번호(pageNum) 2. 한 페이지 당 띄울 데이터 개수(amount) 이것들을 별도의 파라미터로 전달할 수도 있겠지만, 아싸리 하나의 객체로 묶어 전달하면 확장성면에서 좋습니다. domain 패키지에 Criteria(검색 기준) 클래스를 생성합니다. @Getter //..

Backend/Spring 2024.03.05

[Spring] 의존성 주입 테스트

※ 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. 스프링의 개념과 특징들을 알아보았습니다. 그럼 이제 스프링의 가장 큰 특징인 의존성 주입 기능을 작성하고 테스트해 보겠습니다. 사용할 클래스: Restaurant.java / Chef.java * Restaurant 클래스에 Chef 클래스를 주입할 것입니다(Restaurant 클래스가 Chef 타입의 객체를 필요로 함). 왜냐하면 식당에 요리사가 있어야 장사를 할 수 있기 때문이지요. 스프링에서 의존성 주입을 구현하는 방법은 총 두 가지입니다. 1. 생성자를 이용한 주입 2. Setter 메서드를 이용한 주입 설정 방식은 주로 XML 또는 어노테이션(@)으로 처리합니다. 0. pom.xml에 라이브러리 추가 예..

Backend/Spring 2024.02.26

[Spring] 스프링의 개념과 특징 총정리

※ 본 글은 교재 [코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단]을 바탕으로 작성되었습니다. 프레임워크 프레임워크란 뼈대나 근간을 이루는 코드들의 묶음을 말합니다. 그렇다면 이것이 필요한 이유는 무엇일까요? 개발자 특성상, 개인의 능력 차이가 큰 직종이기 때문에 개발자 구성에 따라 프로젝트의 결과는 큰 차이를 낳는데 이 부분을 극복하기 위해 프레임워크가 필요합니다. 프로그램의 기본 흐름과 구조를 정하면 팀원들이 이 구조에 맞게 자신이 만드는 코드를 추가하여 개발하게 됩니다. 라이브러리도 마찬가지로 미리 만들어져있는 기능이기는 하지만 개발자가 그 흐름을 직접 결정합니다. 프레임워크의 장점은 구조를 미리 코드로 만들어 놓았기 때문에 이미 시작이 반입니다. 일정한 품질이 보장되는 결과물을 얻고 개발 ..

Backend/Spring 2024.02.22