Spring 177

HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트

HTTP 요청 데이터 - API 메시지 바디 - 단순 텍스트 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, PATCH 먼저 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고, 읽어보자. HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽음 간단하게 코드로 작성을 해보자. // RequestBodyStringServlet class package hello.setvlet.basic.request; import org.springframework.util.StreamUtils; import javax.servlet.ServletExceptio..

Spring/SpringMVC 2022.04.22

HTTP 요청 데이터 - POST HTML Form - 로그 에러

이제 HTML의 Form을 이용해 클라이언트에서 서버로 데이터를 전송해보자. 회원가입, 상품 주문 등에서 사용하는 방식이다. content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파라미터 형식으로 데이터를 전달한다. username=hello&age=20 기본적으로 html 파일을 하나 만들어주자.(hello-form.html) username: age: 전송 Form Data는 안보이네??,,,, 결과를 확인하게 되면 // RequestParamServlet Class System.out.println("[전체 파라미터 조회] - start"); request.getParameterNames().asIterator() // paramName은 user..

Spring/SpringMVC 2022.04.21

HTTP 요청 데이터 - GET 쿼리 파라미터

데이터를 클라이언트에서 서버로 전송해보자. 데이터가 있는데 username=hello age=20 메시지 바디 없이, URL의 "쿼리 파라미터"를 사용해서 데이터를 전달해보자. 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 쿼리파라미터는URL에다음과같이 ?를시작으로보낼수있다.추가파라미터는 &로구분하면된다. http://localhost:8080/request-param?username=hello&age=20 그렇게 하면 서버에서는 HttpServletRequest 가 제공하는 다음 메서드를 통해 쿼리 파라미터를 편리하게 조회할 수 있다. 코드를 한번 작성을 해보자. package hello.setvlet.basic.request; import javax.servlet.ServletException..

Spring/SpringMVC 2022.04.21

HTTP 요청 데이터 - 개요

HTTP 요청 메시지를 통해서 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자. 3가지 방법이 있다. GET - 쿼리 파라미터 / url*?username=hello&age=20 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파라미터 형식으로 전달 username=hello&age = 20 예) 회원 가입, 상품 주문, HTML Form 사용 HTTP message body HTTP API(REST API)에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POS..

Spring/SpringMVC 2022.04.21

HttpServletRequest - 기본 사용법

HttpServletRequest를 사용하는 방법에 대해서 알아보자. 아래코드를 Extract Method로 해서 extracting을 해주고 package hello.setvlet.basic.request; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet(name = "requestHeaderServl..

Spring/SpringMVC 2022.04.21

HttpServletRequest - 개요

HttpServletRequest 역할 HTTP 요청 메시지를 개발자가 직접 파싱해서 사용해도 되지만, 매우 불편하다 서블릿은 개발자가 HTTP 요청 메시지를 편리하게 사용할 수 있도록 개발자 대신에 HTTP 요청 메시지를 파싱한다. 결과를 HttpServletRequest 객체에 담아서 제공한다. START LINE HTTP 메소드 URL 쿼리 스트링 스키마, 프로토콜 헤더 헤더 조회 바디 from 파라미터 형식 조회 message body 데이터 직접 조회 HttpServletRequest 객체는 추가로 여러가지 부가기능도 함께 제공한다. 임시 저장소 기능을 알아보면 해당 HTTP 요청이 시작부터 끝날 때 까지 유지되는 임시 저장소 기능 저장 : request.setAttribute(name, val..

Spring/SpringMVC 2022.04.21

Hello 서블릿

스프링 부트 환경에서 서블릿 등록하고 사용해보자. 서블릿은 톰캣 같은 웹 애플리케이션 서버를 직접 설치해서 서블릿 코드를 클래스 파일로 빌드해서 올리고 톰캣 서버를 실행하면되지만 매우 번거롭다. 스프링 부트는 톰캣 서버를 내장하고 있어서 톰캣 서버 설치 없이 편리하게 서블릿 코드를 실행 할 수 있다. 코드를 작성해보자. ServletApplication에서는 @ServletComponentScan // 서블릿 자동 등록 을 넣어주고 package hello.setvlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org..

Spring/SpringMVC 2022.04.21

서블릿 - 프로젝트 생성

서블릿 컨테이너 스프링MVC-웹애플리케이션이해 톰캣처럼 서블릿을 지원하는 WAS를 서블릿 컨테이너라고 함 서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리 서블릿 객체는 싱글톤으로 관리 고객의 요청이 올 때 마다 계속 객체를 생성하는 것은 비효율 최초 로딩 시점에 서블릿 객체를 미리 만들어두고 재활용 모든 고객 요청은 동일한 서블릿 객체 인스턴스에 접근 공유 변수 사용 주의 서블릿으로 변환 되어서 사용 JSP도 서블릿으로 변환 되어서 사용 동시 요청을 위한 멀티 쓰레드 처리 지원 서블릿은 스프링이 필요없다. 하지만 여기서는 스프링 부트를 이용해서 프로젝트를 생성해보자.(스프링 부트는 톰캣 서버(WAS 서버)를 내장하고 있어서 편리하게 이용을 할 수..

Spring/SpringMVC 2022.04.21

자바 백엔드 웹 기술 역사

서블릿 - 1997 HTML 생성이 어려움 JSP - 1999 HTML 생성은 편리하지만, 비즈니스 로직까지 너무 많은 역할 담당 서블릿, JSP 조합 MVC 패턴 사용 모델, 뷰 컨트롤러로 역할을 나누어 개발 MVC 프레임워크 춘추 전국 시대 - 2000년 초 ~ 2010년 초 MVC 패턴 자동화, 복잡한 웹 기술을 편리하게 사용할 수 있는 다양한 기능 지원 스트럿츠(앞단), 웹워크, 스프링(뒷단) MVC(과거 버전) 현재 사용 기술 애노테이션 기반의 스프링 MVC 등장 @Controller MVC 프레임워크의 춘추 전국 시대 마무리 스프링 부트의 등장 스프링 부트는 서버를 내장 과거에는 서버에 WAS를 직접 설치하고, 소스는 War 파일을 만들어서 설치한 WAS에 배포 스프링 부트는 빌드 결과(Jar..

Spring/SpringMVC 2022.04.21

SQL function 호출하기

SQL function은 JPA와 같이 Dialect에 등록된 내용만 호출할 수 있다.(JPQL VS Querydsl 둘다 호출 가능) SQL function을 한 번 호출해보자. member -> M으로 변경 replace 함수 사용 @Test public void sqlFunction() { List result = queryFactory .select(Expressions.stringTemplate( "function('replace', {0}, {1}, {2})", // member라는 단어를 M으로 바꿔서 member.username, "member", "M")) .from(member) .fetch(); for (String s : result) { System.out.println("s = ..

Spring/QueryDSL 2022.04.21