반응형
목록
Spring (68)
[꼼꼼한 개발자] 꼼코더
✍🏻 @ModelAttribute 어노테이션 웹 페이지 구조는 Request에 전달된 데이터를 가지고 필요시 추가적인 데이터를 생성하여 화면에 전달하는 방식으로 동작한다. Model의 경우는 파라미터로 전달된 데이터를 가지고 존재하지 않지만 화면에서는 필요한 데이터를 전달하기 위해 사용. 게시판의 페이지 번호는 파라미터로 전달되지만, 결과 데이터를 반환하려면 Model에 담아서 전달해야 함 스프링 MVC의 Controller는 기본적으로 Java Beans 규칙에 맞는 객체는 다시 화면으로 객체를 전달한다. 다시 말해 Java Beans의 규칙은 단순히 생성자가 없거나 빈 생성자를 가져야 하며 getter/setter를 가진 클래스의 객체들을 의미한다. 앞의 예제는 파라미터로 사용된 SampleDTO의 ..
👨🏻💻 리스트, 배열 처리 동일한 이름의 파라미터가 여러 개 전달되는 경우에 ArrayList 등을 이용해서 처리가 가능하다. 코드와 같이 List 와 같은 인터페이스 타입이 아닌 실제적인 클래스 타입으로 지정해줘야 한다. 예제 코드는 ‘ids’ 이름의 파라미터가 여러 개 전달되어도 ArrayList 이 생성되어 자동으로 수집된다. ‘/sample/ex02List?ids=111&ids=222&ids=333’을 호출 시 아래와 같은 로그가 출력된다. 배열의 경우도 동일하게 처리된다. 👨🏻💻 객체 리스트 (SampleDTO 클래스 작성) 만일 전달하는 데이터가 SampleDTO와 같이 ‘객체 타입’이고 여러 개를 처리해야 한다면 리스트를 포함하는 클래스를 설계해야 한다. 👨🏻💻 SampleDTOList..
👨🏻💻 Controller의 파라미터 수집(SampleDTO 클래스 작성) Controller를 작성할 때 가장 편리한 기능은 파라미터가 자동으로 수집되는 기능이다. 따라서 매번 request.getParameter()를 이용하는 불편함을 없앨 수 있다. org.zerock.domain 패키지 생성 → SampleDTO 클래스 작성 SampleDTO 클래스는 Lombok의 @Data 어노테이션을 이용해서 처리하는 걸 볼 수 있다.. @Data는 getter/setter, equals(), toString() 등의 메서드를 자동으로 생성해주기 때문에 편리하다. SampleController의 메서드가 SampleDTO를 파라미터로 사용하게 되면 자동으로 setter 메서드가 동작하면서 파라미터를 수집하게..
👀 스프링 MVC의 Controller 스프링 MVC를 이용하는 경우 작성되는 Controller는 다음과 같은 특징이 있습니다. HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능 GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능 다른 프레임워크들과 달리 스프링 MVC는 어노테이션을 중심으로 구성되기 때문에 예제들을 작성할 때에도 각 어노테이션의 의미에 대해서 주의해가며 학습해야 한다. 👨🏻💻 @Controller, @RequestMapping(SampleController 클래..
🕹 스프링 MVC의 기본 사상 Java를 이용하는 웹 애플리케이션을 제작해 본 적이 있다면 Servlet/JSP 기술을 활용해서 제작하는 방식을 먼저 배우게 된다. 이후 모델 2라는 방식에 대해서 학습하게 되는데 스프링 MVC의 경우 이러한 부분은 개발자들에게 보여주지 않고 개발자들은 자신이 필요한 부분만 집중해서 개발할 수 있는 구조로 만들어져 있다. 웹 프로그래밍에서 가장 익숙한 단어들 중 하나는 Request/Response일 것이다. Servlet/JSP에서는 HttpServletRequest/HttpServletResponse라는 타입의 객체를 이용해 브라우저에서 전송한 정보를 처리하는 방식이다. (Servlet/JSP의 API사용) 스프링 MVC의 경우 이 위에 하나의 계층을 더한 형태가 된다..
👨🏻💻 코드 예제(XML 설정) ‘Spring Legacy Project’ → ‘Spring MVC Project’ → ‘org.zerock.controller’ → ‘ex01’ 프로젝트 생성 생성된 프로젝트는 스프링 버전이 3 버전이므로 pom.xml을 수정하여 5.0.7 버전으로 변경한다. 또한 Lombok 기능을 이용해서 간단한 코드를 작성하고, 테스트 할 것이므로 pom.xml에 추가한다. Spring Legacy Project로 생성된 프로젝트는 서블릿 버전이 2.5 버전을 사용하지만 Java 설정 등을 이용하려면 서블릿 3.0 이상을 사용하는 것이 좋다. pom.xml 파일을 수정한다. (기존 > 주석 처리 or 삭제) Maven의 컴파일 옵션은 1.8버전으로 변경하고 프로젝트 우클릭 → ‘..
🧬 스프링 MVC의 기본 구조 스프링 MVC를 학습하는데 가장 먼저 기억해야 하는 점은 스프링 MVC가 스프링의 서브(sub) 프로젝트라는 것이다. 스프링은 하나의 기능을 위해서만 만들어진 프레임워크가 아니라 ‘코어’라고 할 수 있는 프레임워크에 여러 서브 프로젝트를 결합해서 다양한 상황에 대처할 수 있도록 개발되어 있다. 서브 프로젝트의 의미는 ‘별도의 설정이 존재할 수 있다.’라고 생각하자 Spring Legacy Project로 생성한 예제의 경우에도 servlet-context.xml과 root-context.xml로 설정 파일이 분리된 것을 볼 수 있다. 스프링 MVC는 서브 프로젝트이므로 구성방식이나 설정 역시 조금 다르다고 볼 수 있다. 이 교재 예제의 구조는 다음 그림과 같다. 🔎 스프링 ..
🤝 XML 매퍼와 같이 쓰기 MyBatis를 이용해서 SQL을 처리할 때 어노테이션을 이용하는 방식이 압도적으로 편리하긴 하지만 SQL이 복잡하거나 길어지게 되면 XML 방식을 더 선호하게 된다. MyBatis-Spring은 Mapper 인터페이스와 XML을 동시에 이용이 가능하다. XML 작성 시 XML 파일의 위치, XML 파일에서 지정하는 namespace 속성이 중요하다 XML 파일 위치는 Mapper 인터페이스가 있는 곳에 같이 작성하거나 src/main/resources 구조에 XML을 저장할 폴더를 생성 할 수도 있다. XML 파일을 만들 때 이름에 대한 규칙은 없다. 하지만 가능하면 Mapper 인터페이스와 같은 이름을 이용하자.(가독성을 위해) 👨🏻💻 TimeMapper.java 수정 ..