🌱 Spring

HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달할 수 있는 방법에 대해 공부한다. GET-쿼리 파라미터 # 개요 - /url?username=hello&age=20 - 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 # 전체 파라미터 조회(getParameterNames) - asIterator(): 이 열거에 포함 된 요소들을 순회 하는 Iterator를 리턴한다. 컬렉션에 저장되어 있는 요소를 다 꺼내 올 때까지 도는 것 - forEachRemaining(): Iterator를 ArrayList로 변환해준다. @WebServlet(name = "requestParamServlet", urlPatterns = "/r..
HttpServletRequest 객체의 부가 기능 # 임시 저장소 기능 요청이 오고 응답이 나갈 때까지 유지되는 임시 저장소 기능이다. // 저장 request.setAttribute(name, value) // 조회 request.getAttribute(name) # 세션 관리 기능 request.getSession(create: true) 기본 사용법 @WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header") public class RequestHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, Http..
Servlet은 class 위에 @ServletComponentScan을 통해 Servlet을 자동 등록할 수 있다. Spring이 자동으로 내 Package 및 하위 패키지들로부터 Servlet을 다 찾아서 실행할 수 있도록 도와준다.@ServletComponentScan 우선 Java Class를 하나 생성하고, 클리스가 HttpServlet을 상속할 수 있도록 하고, @WebServlet 어노테이션을 추가한다. 이제 /hello로 오면 아래 코드가 실행된다. 매핑된 url이 호출되면 서블릿 컨테이너는 @WebServlet(name = "helloServlet", urlPatterns = "/hello")public class HelloServlet extends HttpServlet {} [Cont..
Spring Initializer Jar 설정 성능 향상을 위한 빌드 설정 Lombok 사용을 위한 Enable Annotation Processing 체크
클라이언트가 브라우저로 HTTP Request 메시지를 보내면, HTTP Response 메시지가 반환된다. 세부적으로는 서블릿 객체를 호출하여 HttpServletRequest, HttpServletResponse 객체를 생성하고 이를 통해 Response 메시지를 생성하는 것이다. 그렇다면 서블릿 객체는 누가 호출할까? 바로 Thread이다. Thread란 어플리케이션 코드를 하나씩 순차적으로 실행하는 것이다. 예를 들어 main 메서드를 실행하면 main 스레드가 실행되는 것이다. 스레드는 한번에 하나의 코드 라인만 수행하기 때문에, 동시 처리가 필요하면 스레드를 추가로 생성해야 한다. 동시 처리를 위해서는 여러 가지 방법이 있다. # 방법1. 요청할 때마다 매번 스레드를 생성하는 방법 1. 장점 ..
WAS를 하나부터 열까지 개발하기 위해서는 핵심 비즈니스 로직 처리를 포함하여 수많은 기능을 구현해야 한다. 서블릿은 핵심 비즈니스 로직 처리를 제외한 데이터 내용을 읽어내는 것부터, HTTP 응답 메시지를 생성하기까지 모든 것을 담당한다. 예시 코드이다. 클라이언트에서 웹 브라우저로 URL로 요청(urlPatterns)이 오면 서블릿의 서비스 메서드가 실행된다. # HttpServletRequest HTTP 요청 정보를 편리하게 사용 # HttpServletResponse HTTP 응답 정보를 편리하게 제공 우선 HTTP 요청 메시지를 기반으로 HttpServletRequest, HttpServletResponse를 새로 생성한 후, 서블릿 컨테이너(helloServlet)를 호출한다. 개발자는 Htt..
효율적인 리소스 관리 및 서버 과부하 방지를 위한 웹 시스템 구성 정적 리소스(HTML, CSS, JS)는 웹 서버가 처리하고, 비즈니스 로직 호출 등 동적인 처리가 필요하면 WAS에 요청한다. WAS는 중요한 비즈니스 로직 처리를 담당한다. 또한, 정적 리소스만 제공하는 웹 서버는 잘 죽지 않기 때문에, 비교적 장애가 잘 발생하는 WAS가 장애가 발생할 경우 Web 서버가 오류 화면을 제공할 수 있다. 출처 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. ..
이전에는 MemoryRepository 인터페이스를 생성하고, implement 하여 구현체를 생성하여 DB 혹은 Persistence Context에 CRUD를 수행하였다. JPA를 사용하더라도 인터페이스인 JPA를 위한 구현체인 hibernate 라이브러리를 추가해줬어야 했다. 하지만 Spring에서는 굳이 구현체를 만들지 않고 인터페이스만으로 기본적인 CRUD 기능을 제공한다. 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성하여 주입한다. 하단의 코드와 같다. findByName 메서드만을 제외하고 따로 메서드를 생성하지 않았다. 어떻게 이게 가능할까? ... public interface SpringDataJpaMemberRepository extends Jpa..
JDBC Template에서는 직접 SQL Query문을 생성해야 하지만, JPA를 사용하면 이를 자동으로 만들어서 개발 생산성을 높여줄 뿐만 아니라 SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. 사전 설정 # build.gradle 추가 Spring Boot가 자동으로 Entity Manager를 생성해준다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' # application.properties 추가 JPA를 사용하면 객체를 보고 알아서 테이블을 만들어버린다. 본 실습에서는 테이블을 만들어놨기 때문에 none으로 설정. spring.jpa.show-sql=true spring.jpa..
이전 테스트와 달리 본 포스팅에서는 Spring Container에서 Repository(Database)와 Service를 가져와서 테스트하도록 한다. 먼저 class에 @SpringBootTest, @Transactional 어노테이션을 생성한다. 그리고 새로 memberSer vice와 memberRepository를 생성하는 것이 아니라 @Autowired를 통해 Spring Container 가져오도록 한다. @SpringBootTest @Transactional public class MemberServiceIntegrationTest { @Autowired MemberService memberService; @Autowired MemberRepository memberRepository; @..
Younngjun
'🌱 Spring' 카테고리의 글 목록 (4 Page)