본문 바로가기

Spring

(28)
[Spring] [쿠키,세션] RedirectAttributes 리다이렉트란? 폼 형식의 문서를 작성하고 확인 버튼을 누르면, 해당 내용이 POST 방식으로 서버로 보내진다. 그 후, 다른 페이지로 GET방식을 통해 리다이렉트하게 된다. 이때, 리다이렉트가 발생한다는 것은, 원래 요청은 종료되고, 새로운 GET 요청이 시작된다는 것이다. 그렇기 때문에, 원래 요청에서 가지고 있던 모델 데이터는, 당연히 새로운 요청에서는 소멸되게 된다. 그래서, POST/Redirect/GET 방식을 사용하는 리다이렉트는, 데이터를 전달하기에 부적합하게 된다. 다시 말해 Model을 전달하는 것은 의미가 없어진다. 이 점을 해결해주기 위해 스프링에서 제공하는 것이, RedirectAttributes 클래스이다. 이 클래스는, addFlashAttribute() 메서드를 통해 리다이렉트..
[Spring] 쿠키, 세션 사용하기 웹에서의 상태 유지 기술 HTTP프로토콜은 상태 유지가 안되는 프로토콜입니다. - 이전에 무엇을 했고, 지금 무엇을 했는지에 대한 정보를 갖고 있지 않습니다. - 웹 브라우저(클라이언트)의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을 지속하지 않습니다. 상태 유지를 위해 Cookie와 Session기술이 등장합니다. 쿠키(Cookie)와 세션(Session) 쿠키 - 사용자 컴퓨터에 저장 - 저장된 정보를 다른 사람 또는 시스템이 볼 수 있는 단점 - 유효시간이 지나면 사라짐 세션 - 서버에 저장 - 서버가 종료되거나 유효시간이 지나면 사라집니다. 쿠키 동작 방식 정의 클라이언트 단에 저장되는 작은 정보의 단위입니다. 클라이언트에서 생성하고 저장될 수 있고, 서버 단에서 전송한 쿠키가 클라이..
[Spring] [Spring MVC] @RestController와 MessageConverter @RestController Spring 4 에서 Rest API 또는 Web API를 개발하기 위해 등장한 애노테이션 이전 버전의 @Controller와 @ResponseBody를 포함한다 MessageConverter @RestController의 동작 방식에서 가장 중요한 부분을 차지하는 것이 MessageConverter이다. @EnableWebMvc를 사용하면, 기본으로 제공이 된다 [기능] 외부에서 전달받은 JSON을, 내부에서 사용할 수 있는 객체로 변환하기 내부에서 리턴한 객체가, 클라이언트에게 JSON으로 변환해서 전달 [JSON으로 응답하기] 컨트롤러의 메소드에서는 JSON으로 변환될 객체를 반환합니다. jackson라이브러리를 추가할 경우 객체를 JSON으로 변환하는 메시지 컨버터가 ..
[Spring] [Error] 스프링 사용해서 테스트 할 때, 붙여줘야 하는 어노테이션 / 에러 내용 : Neither @ContextConfiguration nor @ContextHierarchy found for test class 스프링 테스트를 돌렸는데, 다음과 같은 에러가 발생했다. 스프링 빈 컨테이너가 생성될 때, 사용할 설정 파일을 지정해달라는 것이였다. 9월 24, 2022 10:52:47 오후 org.springframework.test.context.support.AbstractTestContextBootstrapper buildDefaultMergedContextConfiguration 정보: Neither @ContextConfiguration nor @ContextHierarchy found for test class [org.example.guestbookupgrade.dao.GuestbookDaoTest], using DelegatingSmartContextLoader 9월 24, 2022 10:52:47 오..
[Spring] [Test] [Error] 1. @ContextConfiguration에 들어갈 파라미터는? 2. @ComponentScan 범위의 중요성 / 에러내용 : org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'resourceHandlerMapping' defined.. @ContextConfiguration을 붙여주는 과정에서 에러가 생겼다. 9월 24, 2022 11:45:31 오후 org.springframework.context.support.AbstractApplicationContext refresh 경고: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'resourceHandlerMapping' defined in org.springframework.web.servlet.config.annotation.De..
[Spring] [Test] [Error] java.lang.NoSuchMethodError: 'org.springframework.util.ReflectionUtils$MethodFilter 스프링 버전 차이 때문에 생긴 에러이다. 스프링 관련 예제를 스프링 4로 진행 중이였는데, test 코드 작성할 때 @ExtendWith(SpringExtension.class)의 SpringExtension.class가 없어서, 다음과 같이 스프링5의 의존성을 추가했었다. org.springframework spring-test 5.3.23 test 그리고 test를 돌려봤는데, 다음과 같은 에러가 발생했다. 스프링 버전의 문제였다. Test ignored. java.lang.NoSuchMethodError: 'org.springframework.util.ReflectionUtils$MethodFilter org.springframework.util.ReflectionUtils$MethodFilter...
[Spring] [SpringMVC] 스프링 설정 파일 분리하기 with ContextLoadListener, DispatcherServlet 설정의 분리 Spring 설정 파일을 프리젠테이션 레이어(컨트롤러 레이어)쪽과 나머지를 분리할 수 있습니다. 분리하는 이유는, 프레젠테이션 레이어 / 서비스 & 레포지토리 레이어를 분리하면 장점이 많기 때문에 설정 파일 자체도 아예 분리하여 작성하는 것입니다. 결론적으로, web.xml 파일에서 프리젠테이션 레이어에 대한 스프링 설정은 DispatcherServlet이 읽도록 하고, 그 외의 설정은 ContextLoaderListener를 통해서 읽도록 합니다. ContextLoaderListener를 활용하는 이유 DispatcherServlet을 경우에 따라서 2개 이상 설정할 수 있는데(사실 이런 경우는 별로 없음) 이 경우에는 각각의 DispathcerServlet의 ApplicationConte..
[Spring] [Spring MVC] 1. Spring MVC 개요 0. MVC란? MVC는 Model-View-Controller의 약자입니다. Model : 모델은 뷰가 렌더링하는데 필요한 데이터입니다. 예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당합니다. View : 웹 애플리케이션에서 뷰(View)는 실제로 보이는 부분이며, 모델을 사용해 렌더링을 합니다. 뷰는 JSP, JSF, PDF, XML등으로 결과를 표현합니다. Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트입니다. 컨트롤러는 모델을 업데이트하고, 다른 액션을 수행합니다. 1. Spring MVC 모델 아키텍처 서블릿이 요청을 받고, Java Bean을 이용하여 모델을 만들고, JSP 페이지로 보여주는 형식 2. 발전된 형태의 Spring MVC 모델 아키텍처 1. ..
[Spring] [Spring JDBC] 5. Spring JDBC 실습 진행 3 - insert(), update() 앞선 selectAll() 실습에서 ApplicationConfig 관련 설정은 전부 다 했으므로, RoleDao 클래스에 insert, update 관련 부분만 작성해주면 된다. 1. RoleDaoSqls 에 쿼리문 추가하기 update는 sql문을 추가해주어야 한다. 따라서, RoleDaoSqls에 다음과 같은 sql을 추가하자 public class RoleDaoSqls { public static final String SELECT_ALL = "SELECT role_id, description FROM role ORDER BY role_id"; public static final String UPDATE = "UPDATE role SET description = :description where ..
[Spring] [Spring JDBC] 4. Spring JDBC 실습 진행 2 - selectAll() 필요한 것들 DTO 만들기 데이터를 주고받을 DTO 만들어야 한다 RoleDaoSqls 클래스 - 해당 클래스에 select 하는 쿼리 상수 포함 DAO 만들기 어떤 하나의 객체(여기서는 Role 객체)에 대한 데이터를 엑세스 할 수 있는 객체이다. (Data Access Object) 스프링 컨테이너가 빈으로 등록해야 하므로, @Repository 어노테이션 붙이기 이미 Spring JDBC에서 구현해둔 NamedParameterJdbcTemplate, SimpleJdbcInsert 객체를 사용하여, selelctAll() 메서드를 작성한다. ApplicationConfig에 @ComponentScan 붙이기 1. DTO public class Role { private int roleId; priva..