[ Spring Boot ] 부트 웹 기초
[ Spring Boot ] 부트 웹 기초
Spring boot에서 JSP와 HTML을 사용하기 위해선 Web관련 다운로드가 필요합니다!
Help - Eclipse marketplace wizard - java web 검색
다운로드하며 자연스럽게 Next 및 동의는 편하게 진행한다
HTML와 jsp 생성이 가능하게 되었습니다
HTML은 static 폴더 내부에 생성한다
JSP를 사용하기위해서 Dependencies를 추가해 주어야 한다
** 자동업데이트가 되지않기 때문에 직접 해줘야한다
디펜던시 추가한 이유?
1. 스프링 부트에서는 기본적으로 JSP를 지원하지 않음
2. 스프링 부트에 내장된 tomcat에는 컴파일하는 jsp 관련 엔진이 포함되지 않음
직접 넣어주어야한다
implementation 'javax.servlet:jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
** 이때 build.gradle파일에 x 에러가 붙는 경우가있는데
프로젝트 생성시 Spring Web을 체크하지 않고 프로젝트를 생성하여 오류가 발생했었다
src - main 까지는 기본으로 생성되어있다
이전 스프링 프로젝트처럼 webapp - WEB-INF - views 폴더들을 추가적으로 생성하고
views 폴더안에 표지페이지 & 상세페이지를 생성하였습니다
( 기존에는 webapp 폴더안에 생성하였는데 실습을 위해 WEB-INF - views 폴더안에 생성 )
index.jsp와 test.jsp를 열기위해선 Controller에서 요청을 받아서
리턴하는곳에 index.jsp || test.jsp를 쓰면되는데
( webapp 폴더안에 생성했다면이다. 현재는 /WEB-INF/views/index.jsp로 작성해야함 )
현재 index 와 test의 위치는 views폴더 내부이다
설정을 담당하는 application.properties 내부에
spring.mvc.view.prefix 와
spring.mvc.view.suffix 를 설정하여
리턴 결과값의 앞과 뒤에 붙여줄 수 있다
[동작순서]
1. 프로그램 실행
2. application.properties 파일의 설정을 로드
3. 이후 사용자가 무언가 요청을 하게 되어
4. 그에 응답할 내용(jsp 파일)에 prefix, suffix 설정을 조합해줌
결과적으로 컨트롤러 내부에서 return에 실제로 쓰여야 할 값은
/WEB-INF/views/index.jsp 인데 index로 리턴하여도
자동으로 prefix와 suffix가 붙어 처리가 된다
이번엔 사용자에게 값을 받아와서 JSP에 표현
Controller 에서 값을 받아오는 4가지 방법
Request 객체를 생성하여 꺼내오는 기본적인 방법
**rep.getParameter("id") 를 직접 넣어줘도 되지만
String name 변수를 생성하여 코드의 가독성을 높이는 것도 좋다
본인은 가독성 있는 후자를 자주 사용한다
@RequestParam을 이용하여 가져오는 방법
1번의 방법을 @ (어노테이션) 으로 해결하는 방법이다
커맨드 객체로 자동매핑되어 저장된 student를 이용하는 것
**중요한 부분 : 커맨드객체도 모델객체처럼 자동으로 저장이 된다
커맨드객체 = model.addAttribute("student", student)을 해준것이나 다름없다 || 모델객체와 방식이 동일
Model 객체가 존재하지 않더라도 JSP에서 student.id, student.name 으로 사용가능하다
모델객체 = 커맨드객체 및 다른데이터들도 원하는 이름으로 설정하여 저장할 수 있음
커맨드객체보다 좀더 자유로운 데이터 저장능력을 가짐
요청시 /test4/kim/timo 로 요청했을경우
@PathVariable 함께 사용하여
studentId = kim || studentName = timo 으로 저장된다
그 변수들을 model에 저장
test 1, 2 ,4 페이지
Get 형식으로 id 값과 name 값을 보내주면
1번방식 - Request 객체로 id와 name을 받는 방법
2번방식 - @RequestParam을 이용하여 id와 name을 받는 방법
4번방식 - 요청내부에서 받아오는 방법
test 3 페이지 ( 커맨드 객체를 이용하기 때문 )
요청방식은 test1 , test2와 동일하다
Controller에서 커맨드객체만 이용하여 받는 방법을 이용
이것으로 HTML 및 JSP를 이용한 부트 웹 기초 였습니다