Spring boot

[ Spring Boot ] 부트 웹 기초

주니홍 2022. 10. 25. 13:09

[ 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를 이용한 부트 웹 기초 였습니다