본문 바로가기

Spring23

Spring 게시판 만들기 - DTO(Data Transfer Object) 개발 DTO 생성 안녕하세요. 고코더 입니다. 이번에는 DTO 라는 객체에 대해서 알아봅니다. DTO(Data Transfer Object)는 VO(Value Object)라고 합니다. 계층간 데이터 교환을 위한 자바빈즈이고 컨트롤러, 뷰 계층간 데이터 교환을 위한 객체입니다. DTO는 로직을 없고 순수한 데이터 객체만 다룹니다. getter, setter 메소드를 생성한 클래스입니다. 다시 쉽게 말하면 DAO 데이터베이스를 가져올때 사용하는 변수의 집합이라고 생각하면 쉽습니다. ● 1. dto 클래스를 생성 합니다. 컨트롤러를 생성하겠습니다. net.gocoder.mvcboard.dto 패키지에서 class를 생성 합니다. 클래스명은 Dto로 생성 합니다. package net.gocoder.mvcboard.. 2019. 8. 17.
Spring 게시판 만들기 - 컨트롤러(Controller) 개발 MVC 컨트롤러(Controller) 개발 안녕하세요. 고코더 입니다. 이번 시간에는 스프링에 핵심인 컨트롤러를 만들어 보겠습니다. 이전에 설명한 거처럼 디스패처 서블릿이 컨트롤러를 호출하면 컨트롤러는 Dao를 호출해 데이터베이스 정보를 가져오고 다시 모델에 담아 프론트에 전달 합니다. ● 1. 컨트롤러 생성 컨트롤러를 생성하겠습니다. net.gocoder.mvcboard.controller 패키지에서 class를 생성 합니다. 클래스 명은 BoardController 입니다. 게시판에 사용할 컨트롤러명 입니다. ● 2. 컨트롤러 코딩 컨트롤러 작성을 해보겠습니다. 하나의 메소드를 작성하면 거의 비슷한 형태에 나머지도 거의 비슷한 코딩을 이어나갑니다. MVC패턴에 매력이자 어려운 규율 때문입니다. 그래도.. 2019. 8. 16.
spring 게시판 만들기 - 패키지(Package) 생성, 프로젝트 구조도, 프로젝트 생성 게시판 만들기 초기설정 안녕하세요. 고코더 입니다. 스프링에 대해 알아보았고 간단한 예제로 중요한 요소들을 살펴보았습니다. 이번 시간부터 스프링 게시판을 만드는 방법을 알아보겠습니다. 기본적으로 회사에서 많이 사용하는 방식으로 구현할 것 입니다. ● 1. 프로젝트 구조도 함께 만들어올 게시판에 구조도 입니다. 스프링으로 웹프로젝트를 하면 대부분 이런 구조가 나타나는데요. 이 그림은 머리속에 한번 새겨 보시고 프로젝트를 함꼐 하면서 조금씩 구체화 되어 나갈것입니다. ● 2. 프로젝트 생성 ● 2-1. 이번 프로젝트 이름은 MVCBoard 라고 하겠습니다. 이전 시간에 배웠던 방법대로 MVC Project를 만들어보겠습니다. ● 2-2. 이번 패키지 명은 net.gocoder.mvcboard로 만들어 보겠습.. 2019. 8. 15.
Spring - 데이터 커맨드 객체 사용하기 데이터 객체로 변수를 줄이기 안녕하세요. 고코더 입니다. 이전 시간에 파라미터 데이터를 VIEW로 전달을 해봤습니다. 기초적인 예제였는데요. -> Spring - 스프링 컨트롤러로 받은 데이터를 View에 노출 하기 하지만 실무에서는 소스 길이기 갈게 나오지 않게 스프링에 장점을 살려서 변수를 클래스에서 가져오는 방법을 씁니다. 스프링은 커맨드 객체를 사용할 수 있도록 규칙이 설정되어 있으며 변수만 담아주면 이전 시간에 했던 소스를 간단하게 개발해 view에 전달할 수 있습니다. 소스를 함께 개발하면서 이 부분을 살펴보겠습니다 역시 이전 소스를 활용합니다. ● 1. Gocoder.java 작성 ● 1-1. 클래스 파일을 생성합니다. 처음 생성하는 분들이 있으실텐데요 해당 프로젝트 팩키지로 마우스 오른쪽 .. 2019. 8. 14.
Spring - 스프링 컨트롤러로 받은 데이터를 View에 노출 하기 파라미터로 받아 view 노출하는 예제 안녕하세요. 고코더 입니다. ● 1. 오늘은 HttpServletRequest 에 대해 알아보려고 합니다. URL로 접근하는 모든 패턴은 디스패처서블릿이 가로챈다고 말씀드렸습니다. -> Spring - DispatcherServlet / 스프링이 컨트롤러를 찾는 방법 살펴보기 ● 2. 이걸 기초로 오늘은 파라미터에 있는 정보를 HttpServletRequest로 데이터 전송을 받아보는 방법을 알아보겠습니다. 이전에 만든 hello 소스에 추가하여 개발해보겠습니다. -> Spring - 스프링 MVC Hello 기본 예제 출력 ● 3-1. 컨트롤러에 함수 추가 / HttpServletRequest / @RequestMapping ● 3-2. HomeController.. 2019. 8. 14.
Spring - 스프링 한글 처리 encodingFilter 추가 / web.xml 스프링에서 UTF-8 한글 나오도록 설정 안녕하세요. 고코더 입니다. ● 1. 스프링으로 기본 프로젝트를 생성하면 한글이 ?로 출력 됩니다. 스프링 기본 프로젝트는 UTF-8로 만들어지지 않기 때문입니다. ● 2. web.xml에 아래 코드를 추가해주세요. 엔코딩필터에 UTF-8을 사용할 수 있게 만들어주는 코드 입니다. encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /* ● 3. 위치는 맨아래에 추가합니다. 코드를 그대로 복사해서 붙혀넣어주세요. xml이 변경되었기 때문에 서버를 재시작 합니다. 그리고 다시 접속해보면 물음표(?)로 보이던.. 2019. 8. 14.
Spring - 리소스 자원을 위한 resources 폴더 스프링에서 파일 get으로 접근하기 안녕하세요. 고코더 입니다. ● 1. 오늘은 자원을 사용하는 resources폴더에 대해 알아보려고 합니다. 지난 시간에 DispatcherServlet이 모든 URL 패턴을 가로챈다고 배웠습니다. -> Spring - DispatcherServlet / 스프링이 컨트롤러를 찾는 방법 살펴보기 ● 2. 기본으로 설정된 /servlet-context.xml에 리소스 태그 속성을 보면 /resources/가 폴더가 설정되어 있습니다. 여기로 접근하는 get 요청은 디스패처서블릿이 관여하지 않습니다. ● 3. 이해를 더 쉽게 하기 위해 간단한 예제로 알아보겠습니다. 기본으로 생성 되어있는 resources폴더와 새롭게 생성한 file 폴더에 test.txt를 생성해서 만들었.. 2019. 8. 14.
Spring - View / 스프링이 뷰를 실행 시키는 방법 view가 작동 되는 방법 안녕하세요. 고코더 입니다. 이번엔 프론트에 보이게 되는 jsp 페이지인 뷰가 스프링에서 어떻게 작동하는지 간단하게 소스를 기준으로 알아보려고 합니다. ● 1. servlet-context.xml 을 열어봅니다. ● 2. 그럼 InternalResourceViewResolver 클래스가 빈에 참조 되어 있습니다. 그리고 prefix 와 suffix 라는 프로퍼티가 사용되고 있습니다. ● 3. prefix는 뷰 파일의 위치를 지정합니다. 기본 디폴트 값은 "/WEB-INF/views/" 입니다. 해당 폴더 위치는 src->main->webapp 아래에 있는 WEB-INF-> views폴더 입니다. 뷰 파일을 추가한다면 해당 폴더에서 생성합니다. ● 4. suffix는 해당 뷰 파.. 2019. 8. 13.
Spring - DispatcherServlet / 스프링이 컨트롤러를 찾는 방법 살펴보기 DispatcherServlet이 컨트롤러를 가져오는 방법 안녕하세요. 고코더 입니다. 오늘은 스프링에 핵심이자 특별한 존재인 DispatcherServlet을 좀 더 자세히 알아보겠습니다. 이전 스프링 구조도에서 중앙에서 모든걸 처리하는 역할을 했습니다. -> Spring - 스프링 MVC 구조도 / 이해하기 쉬운 DispatcherServlet은 기존에 Web.xml이 담당했던 servlet 맵핑을 대신합니다. 그 덕에 복잡한 XML작성에서 해방 되었습니다. MVC를 가능하게 해준 이 서블릿에 대해 소스를 위주로 알아보겠습니다. 이전에 함께 만든 프로젝트 파일 기준으로 살펴봅니다. -> Spring - 스프링 MVC Hello 기본 예제 출력 ● 1. web.xml ● 1-1. 패키지에서 src->m.. 2019. 8. 11.