스프링부트 기본 폼 만들기
시작하기 전에
제가 공부하는 내용은 이 책을 바탕으로 약간 추가되거나 변경된 내용들도 있을 수 있습니다.
또한 안드로이드를 공부하며 기존에 알고있던 사실에 대해서는 정리하지 않거나, 부실하게 정리하며 넘어가는 부분들이기 있기 때문에 혹시 toc에 없는 내용이라면 제가 알고있어서 위 글에서는 서술하지 않았을 가능성이 큽니다.
스프링 부트의 독특한 특징
스프링 부트는 자바 서버를 필요로 하지 않는데, 이는 자바 서버가 내장되어있기 때문이다.
그것을 사용해서 직접 서버를 가동하여 애플리케이션을 실행하는 방식이기 때문에, 서버에 배포하는 과정이 없는 것이다.
pom.xml의 형태 및 내용(메이븐 기준)
project태그
루트태그 이기 때문에 메이븐의 네임스페이스를 지정하며,메이븐 스키마를 정의하는 파일의 url이 지정되어있다.
모델 버전
메이븐의 모델 버전으로 메이븐 버전을 확인 할 수 있다.
버전
버전명을 나타내는 태그로 프로젝트의 버전을 나타낸다.
project.build.sourceEncoding
properties 태그 내에 있으며 코드의 엔코딩을 지원한다.
dependecies 태그
우선 사용하는 라이브러리 정보는 이 태그 내에 <dependency>
태그를 추가로 정의해야한다.
dependecy안에는 무조건 라이브러리의 그룹 id와 라이브러리의 아티팩트id가 포함되어야한다.
버전과 스코프의 경우, 이것들을 지정하지 않아도 사용할 수 있는 라이브러리에서는 생략 가능하다.
pom.xml의 형태 및 내용(스프링 스타터 프로젝트 기준)
parent 태그
메이븐에서는 없던 태그
상속을 제공하여 그룹 아이디 버전 등을 정의 해 놓은 것을 사용할 수 있다.
또한 재정의 역시 가능한데, 자바와 동일하게 자식의 우선순위가 더 높다.
자바 버전을 지칭하는 properties추가
dependecies 추가
스프링 부트의 웹 애플리케이션용 라이브러리 및 단위 테스트용 라이브러리가 추가되어있다.
또한 이 덕에 JUnit용 태그는 필요없으므로 별도로 기술하지 않아도 괜찮다.
build 태그와 plugins태그
빌드 태그는 프로그램 빌드 시 사용하는 기능 정보 지정
plugins는 빌드 시 사용할 플러그인 프로그램 관련 정보를 기술(ex.spring-boot-maven-plugin)
RestController
@SpringBootApplication
애너테이션을 통해 스프링부트 애플리케이션의 진입점을 알려준다.
@SpringBootApplication
애너테이션은
@Configuration, @EnableAutoConfiguration, @ComponentScan을 포함하고 있어 스프링 부트 애플리케이션을 구성하고 자동으로 설정하며 컴포넌트를 찾아 등록하며
따라서 해당 클래스를 통해 스프링 부트 애플리케이션이 실행 가능해진다.
MVC아키텍처
스프링 부트의 웹 애플리케이션은 MVC아키텍처를 기반으로 설계되었다.
Model,View,Controller이라는 역할로 나누어 구축해나가는 방식인데, 단순 RESTAPI제공을 하는 경우 View는 필요하지 않을 수도 있다.
컨트롤러와 웹 페이지
컨트롤러란 애플리케이션의 제어를 담당한다.
여기에서 말하는 어플리케이션 제어는 특정 주소에 접속했을 때 실행되는 처리를 의미한다.
컨트롤러 클래스 만들기
sts의 경우 자바 클래스로 작성하면 된다.
이때 꼭 @RestController
애너테이션을 붙여야한다.
위 애너테이션은 해당 클래스가 RESTful 웹 서비스의 엔드포인트를 처리하는 컨트롤러임을 나타내준다.
보통 Restful서비스는 데이터를 JSON이나 XML로 반환되는데,
HTML을 사용하여 리소스를 표현하는 것도 가능하다.
매개변수와 PathVariable
@PathVariable
애너테이션으로 매개변수를 전달받을 수 있다.
경로에서 변수를 추출하여 전달받는 용도로 쓰이기 떄문에 이를 응용하면
변수의 기본값을 설정한다거나 필수 여부를 지정하는 등의 사용도 가능하다.
컨트롤러 이용하여 웹 페이지 작성하기
컨트롤러 애너테이션
일반적으로는 표시할 페이지를 템플릿으로 준비한 뒤 불러와서 구체적 내용을 작성하는 방식으로 작업한다.
HTML파일 만들기
main-resources폴더-templates폴더-index.html파일 생성하기
ModelAndView클래스
모델
모델은 템플릿에서 사용할 데이터들을 일괄하여 관리한다.
View에 전달할 데이터를 모델에 담아서 리턴한다.
그러나, 컨트롤러의 반환값으로 직접 Model을 사용하는 것은 권장되지 않는데
명확성 확장성 유지보수성 등 때문이다.
ModelAndView
Model과 달리 View에 대한 정보 또한 담고있기 때문에 직접 반환값으로 사용하는 것도 가능하다.
폼 사용하기
데이터 교환 처리를 편하게 하려면 form을 사용하는 것이 좋다.
홈이 전송한 값을 지정하기 위해서는 @RequestParam
애너테이션을 사용한다.
만약 매개변수가 없어도 오류를 발생시키면 안되는 경우(ex.라디오 버튼이 선택되지 않은 경우 )required=false
를 추가하여준다.
리다이렉트와 포워드
특정 주소에 접속하면 다른 주소로 이동시키고자 할 때 사용한다.
포워드
서버 내부에서 다른 페이지를 읽어 표시
따라서 접속하는 주소는 그대로인데, 표시 내용만 다른 페이지로 바뀐다.
리다이렉트
클라이언트 측에 전송한 뒤 다른 페이지로 이동시킨다.
따라서 접속 주소와 이동 위치 모두 변경된다.
직접 변경 한 예제
hr을 사용하여 구분선을 추가해주고 라디오 박스나 체크박스는 null값이 전송될 수도 있다는 것을 유의하여 만들었다.
send를 누르면 각각 선택된 정보를 출력하여준다.
댓글남기기