728x90
300x250

[Spring-Framework] 21(번외). STS 4.4 - Spring Boot Starter 프로젝트 생성(MVC)


나의 글에서 주로 Spring Legacy Project로 환경구축에 대해서 다루었다.

하지만, 초기 STS 4.4 최신버전을 설치하면 Spring Legacy Project는 따로 구성해줘야 사용할 수 있게 된다.

(Help -> Eclipse Marketplace -> "검색어: sts" -> "Spring Tools 3 Add-on for Spring Tools 4 3.9.14.RELEASE")


Spring Boot를 소개하게 된 건, 셋팅에 있어서 그동안 조금 복잡한 과정을 거쳐야 했었는데 그런 걸 "통폐합"해서 간단하게 사용할 수 있도록 도와주고 있다.


알 필요성이 있다고 생각되서 작성하게 되었다.


[기대 효과]

(장점)

1. 복잡한 셋팅을 안 해도 된다

2. 빠른 작업이 가능해진다.


(단점)

1. Spring Framework 위주의 자동생성에서 벗어나질 못한다. ???






1. 프로젝트 생성하기


처음으로 Spring Starter Project를 생성하는 방법에 대해서 소개하도록 하겠다.



그림 1. 프로젝트 시작하기


File -> New -> Spring Starter Project를 클릭한다.



그림 2. 프로젝트 시작하기(2)


셋팅을 조금 해주면 된다.


Group명, Artifacte, Package, Description 등을 수정해도 된다.

자바 버전 등도 셋팅할 수 있다.

셋팅이 완료되었다면, Next를 클릭한다.



그림 3. 프로젝트 시작하기(3)


MySQL Driver, Oracle Driver, Spring Security, Spring Web Services를 체크한다.

Next를 누른다.



그림 4. 프로젝트 시작하기(4)


Finish를 누르면 프로젝트가 생성된다.



2. Spring Boot(Spring Starter)에서는 서블렛(Servlet) 지원하나요?


Servlet 기능이 되는지 궁금한 분들을 위해서 작성하였다.



그림 5. Servlet 생성하기 전의 모습 (결론: 생성 안 됨.)


Next를 클릭해보면, 생성할 수 없다고 나온다.


3. Run - Hello World


Spring Security를 체크한 경우에는 아래의 화면을 볼 수 있다.

Hello World 화면이라고 생각하면 된다.



그림 6. Run 누르면, 내장 톰캣으로 돌아감.


Run 아이콘을 클릭하면, 내장 톰캣 서버가 돌아간다.

웹 브라우저를 수동으로 열어서 호출 시켜보면 이런 화면이 나오면 정상이라고 보면 된다.



4. REST - 활용한 Controller "Hello, World"


REST에 대해서 소개한 적이 있다.

SpringBoot 데모에서는 JSP 파일이 없어서 REST로 태스트를 진행해야 한다.



그림 7. 클래스 만들기(1)


com.spring. (패키지폴더)를 마우스 오른쪽 버튼으로 클릭한다.

New -> Class를 클릭한다.



그림 8. 클래스 만들기(2)


예로 HomeController라고 입력하고 Finish를 누른다.

이름을 임의로 임력한다고 해서 큰 문제가 되진 않는다.




그림 9. 콘트롤러 코드 작성하기


이처럼 코드를 작성해준다.


package com.springmvc.home;


import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;


@RestController

public class HomeController {

@RequestMapping("/")

public @ResponseBody String home() throws Exception{

return "home";

}

}




그림 9-1, 그림 9-2. 서버 실행과 내장 웹 브라우저 사용방법, JavaEE 인터페이스 화면


모르겠으면 한번씩 눌러보길 바란다.




그림 10. 빌드 - 웹 브라우저 열어보기(1)


계정 아이디: user

비밀번호는 Using generated security password에 생성된 보안키가 비밀번호이다.


입력하고 로그인을 눌러본다.



그림 11. 빌드 - 웹 브라우저 열어보기(2)


내장 이클립스 웹 브라우저에서는 화면이 안 보이는데, 엣지나 크롬의 경우에서는 출력된 REST 화면을 볼 수 있다.




5. Web기반 - Controller 작성하기


이번에는 다소 세팅 작업이 몇 가지가 있는데 일반 jsp 웹 페이지를 출력할 수 있는 Controller(컨트롤러) 생성에 대해서 소개하겠다.



그림 12. 클래스 생성하기 (1)


패키지를 마우스 오른쪽 버튼으로 클릭한다.

New->Class를 클릭한다.




그림 13. 클래스 생성하기 (2)


Superclass의 Browse를 클릭한다.

WebSecu를 검색하면, "WebSecurityConfigurerAdapter를 선택한다.

OK를 누른다.


클래스명(Name)은 WebSecConfig를 입력한다.

Finish를 누른다.



그림 14. 클래스 생성하기 (3)


그림 14처럼 생성되면 잘 생성된 것이다.

복잡하게 코드를 만드는 게 아니다.



그림 15. 클래스 생성하기 (4)


Source -> Override/Implement Methods를 클릭한다.




그림 16. Override / Implement Methods


configure(HttpSecurity)를 체크하고 OK를 누른다.





5-1 Web기반 - SecurityConfig 설정하기


이 글을 조금 심화적으로 이해하려면, Spring Security 부분을 참고하면 된다.

자랑하는 건 아니지만, 필자의 글이 가장 잘 나와있다고 소개하고 싶다.



그림 17. Spring Security 설정하기



package com.springmvc.home.security;


import org.springframework.security.config.annotation.web.builders.HttpSecurity;

import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;


public class WebSecurityConfig extends WebSecurityConfigurerAdapter {


@Override

protected void configure(HttpSecurity http) throws Exception {

http.authorizeRequests()

.antMatchers("/").permitAll()

.antMatchers("/welcome").permitAll()

.antMatchers("/page1").hasRole("ADMIN")

.anyRequest().authenticated();

}


}



파일명: WebSecurityConfig.java


[첨부(Attachments)]

WebSecurityConfig.zip




5-2 Web기반 - HomeController.java 파일 수정하기


파일 수정을 조금 해줘야 한다.

아까 전에 만든 HomeController를 변형하도록 하겠다.


파일: com.springmvc.home.HomeController.java



그림 18. HomeController.java 만들기


package com.springmvc.home;


import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;


@RestController

public class HomeController {

@RequestMapping("/")

public @ResponseBody String home() throws Exception{

return "home";

}


@RequestMapping("/page1")

public @ResponseBody String page1() throws Exception{

return "Spring Boot : 1";

}

@RequestMapping("/page2")

public @ResponseBody String page2() throws Exception{

return "Spring Boot : 2";

}

}



파일명: HomeController.java


[첨부(Attachments)]

HomeController.zip


이전의 STS ("Legacy로 작업할 때, 웹 브라우저에 자동으로 재빌드되었다.")와는 다른 점이 빌드가 조금 느리게 반응하거나 수동 빌드를 해줘야 한다.

화면이 안 바뀌면, 다시 실행(Run)을 해보기 바란다. 버그가 전혀 없는 건 아니다.




그림 19. 출력 결과 - 확인하기(1)






그림 20. 출력 결과 - 확인하기(2)





6. Web기반 - WelcomeController 생성(Controller)


그림 20의 문제를 해결할 겸 Web기반 페이지를 작성하는 방법에 대해서 소개하겠다.



그림 21. 패키지 오른쪽 버튼 메뉴


com..... 패키지를 선택한다.

마우스 오른쪽 버튼 클릭한 후, New-> Class를 클릭한다.




그림 22. WelcomeController.java 생성하기


Name: "WelcomeController"

Finish를 클릭한다.



그림 23. 코드를 입력한 상태의 WelcomeController


초기에는 코드가 전혀 입력되어 있지 않다.

그림 23처럼 입력해준다.


package com.springmvc.home;


import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;


@Controller

public class WelcomeController {


@RequestMapping("/welcome")

public String welcome() {

return "welcome";

}

}



파일명: WelcomeController.java


[첨부(Attachments)]

WelcomeController.zip






7. application.properties 설정 - 웹 경로


웹 페이지를 사용하려면, 경로를 설정해줘야 한다.

이전 Spring Legacy나 maven project로 프로젝트를 생성했다면, web.xml가 존재했었다.

application.properties로 통합된 것으로 보인다.




그림 24. 코드를 입력한 상태의 application.properties


spring.mvc.view.prefix=/WEB-INF/views/

spring.mvc.view.suffix=.jsp


파일명: application.properties


[첨부(Attachments)]

application.zip




7-1. 웹 홈페이지 폴더와 jsp폴더 생성 - 웹 경로


이번에는 jsp 파일의 폴더를 생성하도록 하겠다.



그림 25. 폴더 만들기(1)


src/main 폴더를 오른쪽 버튼으로 클릭한다.

New->Folder를 클릭한다.




그림 26. 폴더 만들기(2)


webapp/WEB-INF/views를 입력한다.

Finish를 클릭한다.




그림 27. 파일 만들기


/src/main/webapp/WEB-INF/views 폴더 내에 파일을 만들어준다.

welcome.jsp 파일을 만든다.


서버를 재시작해준다.



그림 28. 로그인 후의 welcome(URL 주소)


그림 28의 화면이 뜨면, 잘 된 것이다.



7-2. CSS, Images, Javascript 경로


Css/images/Javascript의 경로에 관한 것이다.



그림 29. 결과 - 외부 CSS 적용


그림 29는 css 스타일이 적용된 결과이다. 



7-2-1. /src/main/java/resources/static/css/style.css


css 폴더는 /src/main/java/resources/static 내에 만들어주면 된다.

그리고 style.css 파일은 /src/main/java/resources/static/css 폴더에 만들어주면 된다.



그림 30. Style.css 위치



7-2-2. index.jsp 파일 수정하기


index.jsp 파일을 수정해주면 된다.



그림 31. index.jsp 파일 수정하기


<link rel="stylesheet" href="/css/style.css">


서버를 재시작하면 결과를 볼 수 있다.



그림 32. 출력 결과

반응형
728x90
300x250

[Spring-Framework] 4. Eclipse와 Maven MVC 웹 프로젝트 - 생성하기


이번에 소개할 글은 Apache Maven 프로젝트(이하 "메이븐" 또는 "Maven")을 활용하여 Maven 기반의 MVC 프로젝트를 생성하도록 하겠다.

Spring-Framework를 이해하기 전에 경험해보면 도움이 될 것이라고 생각한다.


적용 대상: Eclipse 최신 버전(또는 Spring Tool Suite-4 이상)




1. 프로젝트 생성하기


프로젝트 생성부터 간단하면서도 알기 쉽게 작성하였다.



그림 1. Project 생성하기


File에서 New->Project...을 클릭한다.




그림 2. Project 생성하기


Use Default Workspace location을 체크한 후 Next를 누른다.



그림 3. Project 생성하기


org.apache.maven.archietypes    |   maven-archietype-webapp   |   1.4


해당 카탈로그를 선택한 후 Next를 누른다.



그림 4. Project 생성하기


아래 그림 3처럼 여러가지 값을 적는 창이 나타난다.

Group Id는 프로젝트를 진행하는 회사나 팀의 도메인 이름을 거꾸로 적는다.

Artifact Id는 해당 프로젝트의 이름을 적는다.

package는 위 두가지가 조합된 이름으로 나온다.


작성을 완료하였으면, Finish를 누른다.



그림 5. Project 생성하기


프로젝트 생성이 된 것을 확인할 수 있다.

Problems 창에 보면, Servlet 오류가 있는 것을 확인할 수 있다.

정상적으로 프로젝트가 생성된 것이다.



2. Maven 프로젝트에서의 Servlet-api.jar 파일에 대한 것(pom.xml 이해)


maven을 사용하면, 귀찮게 servlet-api.jar 파일을 따로 복사, 붙여넣기를 할 필요가 없다.



그림 6. 이전 스타일 - Maven 프로젝트를 사용하지 않은 경우


Apache Maven 프로젝트는 POM.xml 기반으로 동작한다.

따로 servlet-api.jar를 이전의 "WebContents\Web-inf\lib에 복사, 붙여넣기"를 안 해도 된다.




3. Maven 프로젝트에서의 Servlet-api.jar 파일에 대한 것(pom.xml 구현)


pom.xml 파일을 편집하여 servlet-api.jar를 자동으로 생성하는 방법에 대해서 소개하겠다.



그림 7. pom.xml - eclipse


pom.xml을 더블클릭한다.


<dependencies>~</dependencies> 내에는 <dependency>가 정의되어 있는 것을 살펴볼 수 있다.
(글로만 보면, 조금 어려우니 그림을 가지고 소개함.)


    <dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.1.0</version>

<scope>provided</scope>

</dependency>


</dependency> 뒤에 위의 내용을 입력해준다.



그림 8. pom.xml - eclipse


pom.xml에 명령어를 입력함으로서 잠시 기다리면, javax-servlet-api-3.1.0.jar 파일이 자동으로 생성되는 것을 확인할 수 있다.

그리고 Problems 내에 발생했던 javax.servlet Error도 함께 사라지는 것을 확인할 수 있다.


참고: SSD 이상의 빠른 저장매체로 작업한다면, 빠르게 변화하는 모습을 확인할 수 있음.





4. Maven 프로젝트 - Hello World 실행하기


Maven 프로젝트를 Apache Tomcat 9으로 실행하도록 하겠다.



그림 9. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


"Run As..."를 누른다.




그림 10. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


Run on Server를 선택한 후 OK를 누른다.



그림 11. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


Tomcat 서버 셋팅을 한 후 Finish를 누른다.


비고: 이미 환경 셋팅이 된 모습이다. Tomcat v9.0 Server at localhost가 안 보인다면 환경설정을 따로 해야 한다.




그림 12. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


Finish를 누른다.



그림 13. Apache Tomcat 9으로 개발환경에서 모의 태스트 하기


Maven 기반으로 완성된 홈페이지를 살펴볼 수 있다.




5. Maven Project의 pom.xml 설정이 만능인가?


앞서 servlet-api.jar에 대해서 간단한 설정으로 자동생성이 된다고 소개하였다.

pom.xml 설정으로 모든 것을 다 처리할 수 있을 정도인지 언급해보려고 한다.


결론은 아니다.



그림 14. pom.xml 설정에서의 오류


pom.xml 설정을 하였는데, 운이 안 좋으면 jar파일을 못 찾을 수도 있다.

물론 36줄~40줄의 내용이 완벽한 것은 절대 아니다.


이 부분에 대해서는 추가적으로 소개하겠다.




6. Maven Project의 pom.xml 설정에 대한 정보찾기 


그림 14에서의 잘못된 pom.xml 설정의 문제에 대해서 잠깐 소개하였다.

구체적으로 Maven Project에서 지원하는 Repository가 무엇인지, 버전은 어떻게 되는지 각종 정보에 대해서 알 수 있는 사이트를 소개하겠다.


https://mvnrepository.com/


이 사이트를 모르면, 초기에 환경설정 작업을 하는 데 많이 힘들 것으로 보인다.



그림 15. mvnpepository.com (2020-09-19)


그림 15 사이트에 접속해서 검색해서 사용하고자 하는 버전, pom에서 지원하는지 등을 쉽게 살펴볼 수 있다.



그림 16. mvnrepository.com의 mysql 검색 결과 (2020-09-19)


MySQL Connector/J를 클릭한다.



그림 17. mvnrepository.com의 mysql 세부 결과 (2020-09-19)


세부적으로 지원하는 버전에 대해서 소개하고 있다.



그림 18. 버전을 클릭하여 pom에서 사용하는 코드 생성


Maven에 적용할 수 있는 코드가 출력되는 것을 확인할 수 있다.

그림 14의 오류 문제가 해결되는지 한번 적용해보겠다.



그림 19. 이상없이 적용된 mysql-connecotr-java-8.xx버전 - Maven MVC


<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>8.0.21</version>

</dependency>


정상적으로 동작하는 모습을 살펴볼 수 있다.



비고: MyBatis부터 다양한 Library를 예를 들면, 간단한 명령어로 연결시킬 수가 있음.




7. 결론(Conclusion)


pom.xml을 제대로 적용해주면, 많은 문제를 쉽고 간단하게 해결할 수 있다고 본다.

Maven MVC 웹 프로젝트 입문에 대해서 소개하였다.


JSP/Servlet을 경험한 사용자들을 위한 글을 한번 추가로 연재해보겠다.



* 참고 자료(References)


1. Maven Repository: mysql » mysql-connector-java » 8.0.21, https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.21, Accessed by 2020-09-20, Last Modified 2020-07-12.

2. Spring MVC Example for User Registration and Login - DZone Web Dev, https://dzone.com/articles/spring-mvc-example-for-user-registration-and-login-1, Accessed by 2020-09-20, Last Modified 2017-03-05.

3. Maven Repository: Search/Browse/Explore, https://mvnrepository.com/ , Accessed by 2020-09-20, Last Modified 2020-09-20.

반응형

+ Recent posts