초리의 블로그

스프링 시작하기. (Hello World를 출력해 봅시다.) 본문

Spring

스프링 시작하기. (Hello World를 출력해 봅시다.)

초리84 2017. 9. 2. 01:52

안녕하세요. 스프링 첫 프로젝트를 만들어 보겠습니다.

여러가지 방법이 있겠지만 제가 익숙한 방법으로 진행하려고 합니다. 당연히 이게 최적의 방법은 아니겠죠.

제가 사용하는 IDE는 IntelliJ IDEA 입니다.

이클립스와 아마 크게 다를건 없을거 같습니다.


IntelliJ 실행 중에 File > New > Project...를 하시거나 처음 시작하시는 분들은 첫 화면에서 Create New Project를 선택하시면

Project의 종류, SDK, archetype을 선택할 수 있는 팝업이 나옵니다.

전 일단 Maven으로 선택하고 archetypemaven-archetype-webapp으로 선택했습니다.

기본적인 maven 프로젝트의 구조를 만들어 줍니다.


GroupId, ArtifactId는 원하시는 것으로 입력하시면 되구요.


Maven은 기본으로 선택한 것으로 하겠습니다.


Project name도 변경하시고 싶으면 변경하시면 되요.


그럼 이런 구조의 프로젝트가 생성 됩니다.


pom.xml은 Maven 파일로 프로젝트의 dependency와 빌드를 설정해주는 파일입니다.

web.xml을 프로젝트의 설정을 담당하는 파일입니다.


일단 프로젝트가 잘 만들어졌는지 tomcat을 이용해 서버를 띄워 볼게요.

pom.xml 파일에 tomcat을 설정하기 위한 build를 추가해 줍니다.

|


Run > Edit Configurations...를 실행하구서 팝업 창에서 + 를 눌러 Maven을 선택합니다.


그 다음에 tomcat 실행 명령어를 작성해주고 OK 버튼을 누릅니다. 이름은 자유롭게 만드세요~


그 후에 만들어 놓은 Configuration을 실행하면 서버가 시작 됐다는 로그를 확인 할 수 있어요.


브라우저를 열어서 로컬 서버에 접속을 해서 확인할 수 있어요. 여기서 뜨는 화면은 index.jsp 입니다.


자 그럼 스프링을 이용해서 Hello Spring을 보여주는 화면을 띄워봅시다.


먼저 pom.xml에 스프링을 사용하기 위한 dependency를 추가해줍니다.

dependency는 maven repository(https://mvnrepository.com)에서 검색해서 추가해주면 됩니다.

spring-webmvcjstl 먼저 추가 해볼게요.




spring-webmvc는 스프링을 사용하기 위해 추가한 것이고,

jstl은 프론트에서 jsp를 사용하기 위해 JstlView를 viewClass로 지정하기 위해서 추가했습니다. (뭔가 설명이 많이 부족하군요...ㅠㅠ)


스프링을 사용하기 위해선 spring-webmvc 뿐만 아니라 다른 dependency들도 추가해줘야 하지만

등록된 라이브러리를 사용할 때 필요한 라이브러리를 maven이 전이적으로 추가해주기 때문에 결국 다른 라이브러리들도 함께 추가 됩니다.


그렇지만 저는 필요한 라이브러리들을 모두 dependency에 추가해 줄게요.

|


그리고 resourcesspring 폴더를 만들고 applicationContext-application.xml 파일과 dispatcher-servlet.xml 파일을 생성할게요.

dispatcher-servlet.xml에선 Controller를 component-scan을 하게하고 viewResolver를 넣고 applicationContext-application.xml엔 application에 필요한 bean을 등록할 건데요.

지금은 applicationContext-application.xml엔 아무 것도 추가하지 않을거에요.

이 두 파일도 원하시는 이름으로 만드시면 됩니다.


dispatcher-servlet.xml

|


dispatcher-servlet.xml에 component를 bean으로 등록하기 위해 component-scan을 하는데 annotation이 Controller인 것들만 대상으로 하게하였고,

Url에 따라 view에 쓰이는 파일을 찾아가기 위해 UrlBasedViewResolver를 사용하였고, jsp로 쓰기 위해 viewResolverviewClassJstlView로 넣어줬습니다.

prefix/WEB-INF/jsp/로 했기 때문에 WEB-INF 밑에 jsp 폴더를 만들어야 해요.


applicationContext-application.xml은 아직 비어 있어요.

|


이번엔 web.xml을 작성해 보겠습니다.

|


ContextLoaderListenerDispatcherServlet은 각각 WebApplicationContext를 만드는데,

ContextLoaderListener에 의해서 만들진 context가 root context이고 DispatcherServlet에서 만들어진 context는 그 하위 context가 됩니다.

root context에 등록 된 bean들이 공통 bean들이 되어 하위 context에서 등록된 빈들에서 참조가 가능해 집니다.

DispatcherServlet은 원하면 여러개를 만들 수 있는데 지금은 하나면 충분하기 때문에 하나만 만들었습니다.


ContextLoaderListener에 사용하기 위한 설정 파일로 'applicationContext-'로 시작하는 모든 xml 파일을 지정했고,

DispatcherServlet의 context를 설정하기 위한 파일은 '-servlet'으로 끝나는 모든 xml 파일을 지정해줬습니다.

방금 전에 만든 applicationContext-application.xml과 dispatcher-servlet.xml이 들어가겠네요.


url-pattern.do로 했습니다.


이제 Controller를 만들어 봅시다.

main 폴더 밑에 java 폴더를 만들고 java 폴더를 source folder로 변경해줍시다.



그리고 아까 작성했던 GroupId 와 같이 package를 만들고 그 아래 hello package를 만들겠습니다. (꼭 그럴 필욘 없어요. 패키지를 다르게 하실 경우 dispatcher-servlet.xmlbase-package에 만드신 패키지대로 수정해 주세요.)


그럼 hello package 아래에 HelloController.java를 추가하 후 코딩을 해보겠습니다.

|


이 클래스가 Controller라는 것을 알려주기 위해 class 상단에 @Controller를 추가하고, 기본 url을 지정하기 위해 @RequestMapping도 넣어줬습니다.


메소드를 하나 생성하고 이 메소드를 접근하기 위한 주소를 지정하기 위해 메소드 위에도 @RequestMapping를 넣어줬습니다.

helloMain 메소드를 실행하기 위해선 http://localhost:8080/springStudy/hello/helloMain.do 로 접속해야 합니다.


프론트로 데이터를 보내주기 위해 modelkey-value 형태로 attribute를 추가해줬어요.


dispatcher-servlet.xml에서 설정한 것 처럼 url에 따라서 WEB-INF/jsp/springStudy/hello/helloMain.jsp 파일이 실행되겠네요.


마지막으로 jsp 파일을 만들어 보겠습니다.

WEB-INF 밑에 jsp폴더를 만들고 그 아래 springStudy 폴더, 그 아래 hello 폴더를 만든 후, hello 폴더 아래 helloMain.jsp 파일은 만들어 볼게요.

|


el 태그를 사용하여 controller에서 attribute에 추가한 name의 값도 출력 해보겠습니다.


다시 서버를 재시작한 후에 브라우저에서 http://localhost:8080/springStudy/hello/helloMain.do 로 접속해 볼게요.


자 이제 스프링 프로젝트 개발을 시작할 준비가 되었습니다.

물론 프로젝트를 진행하기 위해선 더 많은 설정과 소스를 만들어야 하지만 이번엔 스프링 프로젝트의 첫 시작을 해봤습니다.


설명도 거의 없이 그냥 따라하기로만 진행 했고, 중간 중간 설명도 많이 부실하고 틀렸을수도 있지만

보시는 분들이 조금이나마 도움이 됐으면 좋겠네요.

'Spring' 카테고리의 다른 글

util:properties를 이용한 프로퍼티 사용  (0) 2016.04.06
xml을 이용한 bean 설정 및 활용  (0) 2016.02.14
AnnotationConfigApplicationContext  (0) 2016.01.23
Comments