스프링에서 파일 get으로 접근하기 


안녕하세요.
고코더 입니다.


 1. 오늘은 자원을 사용하는 resources폴더에 대해 알아보려고 합니다.
지난 시간에 DispatcherServlet이 모든 URL 패턴을 가로챈다고 배웠습니다.

 2. 기본으로 설정된 /servlet-context.xml에 리소스 태그 속성을 보면 /resources/가 폴더가 설정되어 있습니다. 
여기로 접근하는 get 요청은 디스패처서블릿이 관여하지 않습니다.


 3. 이해를 더 쉽게 하기 위해 간단한 예제로 알아보겠습니다. 
기본으로 생성 되어있는 resources폴더와 새롭게 생성한 file 폴더에 test.txt를 생성해서 만들었습니다.


 4. 서버를 실행하고 테스트를 해보겠습니다. 
기본 리소스 폴더에 파일을 호출할땐 정상이지만
http://localhost:8080/hello/resources/test.txt


 5. file 폴더는 호출되지 않습니다. 왜냐면 디스패처가 해당 URL 패턴에 대한 컨트롤러를 찾았고 없었기 때문에 404가 뜹니다. 
http://localhost:8080/hello/file/test.txt


 6. /servlet-context.xml에 아래처럼 file 폴더에 대한 리소스 코드를 추가하였습니다.



 7. 그리고 다시 접근하면 해당 test.txt 파일이 정상적으로 출력 합니다. 
http://localhost:8080/hello/file/test.txt


이렇게 리소스 폴더는 다이렉트로 접근할 수 있는 URL로 접근할 수 있게 해줍니다.
이미지,CSS 파일등 Get으로 접근하여 사용하고 싶은 파일들을 리소스 폴더로 설정하여 사용하게 됩니다.


마무리


이 부분이 이해 안가시면
디스패처 서블릿으로 URL패턴을 다시 공부해보세요.


댓글을 달아 주세요


view가 작동 되는 방법


안녕하세요.
고코더 입니다.


이번엔 프론트에 보이게 되는 jsp 페이지인 뷰가 스프링에서 어떻게 작동하는지
간단하게 소스를 기준으로 알아보려고 합니다.


 1. servlet-context.xml 을 열어봅니다.


 2. 그럼 InternalResourceViewResolver 클래스가 빈에 참조 되어 있습니다.
그리고 prefix 와 suffix 라는 프로퍼티가 사용되고 있습니다. 


 3. prefix는 뷰 파일의 위치를 지정합니다. 기본 디폴트 값은 "/WEB-INF/views/" 입니다.
해당 폴더 위치는 src->main->webapp 아래에 있는 WEB-INF-> views폴더 입니다. 
뷰 파일을 추가한다면 해당 폴더에서 생성합니다. 


 4. suffix는 해당 뷰 파일에 확장자를 설정할 수 있습니다. 기본설정은 jsp 파일입니다.
원하는 확장자로 인식할 수 있도록 변경이 가능합니다.


5. 기본 예제 안에 HomeController.java 파일을 열어보면
리턴 값에 home을 반환합니다. 이는 view 파일 이름입니다. 



 6스프링은 이렇게 프레임워크 규칙에 따라 조합하여 뷰 파일을 찾아갑니다.



하나씩 살펴보면 간단한 구조이지만 반복하여 테스트해보고
왜 이렇게 규칙이 생겼는지 고민해보세요.


마무리


복잡하지만 복잡하지 않아요.











댓글을 달아 주세요


DispatcherServlet이 컨트롤러를 가져오는 방법


안녕하세요.
고코더 입니다.


오늘은 스프링에 핵심이자 특별한 존재인 DispatcherServlet을 좀 더 자세히 알아보겠습니다.
이전 스프링 구조도에서 중앙에서 모든걸 처리하는 역할을 했습니다.
-> Spring - 스프링 MVC 구조도 / 이해하기 쉬운



DispatcherServlet은 기존에 Web.xml이 담당했던 servlet 맵핑을 대신합니다. 그 덕에
복잡한 XML작성에서 해방 되었습니다. MVC를 가능하게 해준 이 서블릿에 대해
소스를 위주로 알아보겠습니다.
이전에 함께 만든 프로젝트 파일 기준으로 살펴봅니다. 

 1. web.xml 


 1-1. 패키지에서 src->main->webapp->WEB-INF->web.xml을 열어봅니다.


 1-2. 그 다음 XML에서 정의된 내용들을 함께 살펴 봅니다. 

20번 라인
- DispatcherServlet 기능을 참조하여
19번 라인
- appServlet 으로 네임을 지정 합니다.
29번 라인
- appServlet은 URL 패턴을 맵핑 합니다.
30번 라인
- 모든 URL에 대한 맵핑을 담당 합니다. 즉 모든 프론트 접속을 담당 합니다.

결론은 web.xml에 서블릿 맵핑을 DispatcherServlet 위임한 내용을 확인 가능합니다.



 2. 디스패처서블릿 소스 / spring-webmvc-3.1.1.RELEASE.jar


DispatcherServlet은 스프링 프레임워크에 기능입니다. 

 2-1. 해당 디스패처서블릿 기능은 스프링 spring-webmvc-3.1.1.RELEASE.jar 존재합니다.
해당 jar를 열어보세요.


 2-1. 해당 jar안에 DispatcherServlet.calss 로 정의 되어 있고 오픈 소스라 공개는 되어 있지만 해석하기 어렵지만 해당 jar에 class로 만들어져 있다는걸 눈으로 확인해보는 것도 도움이 됩니다.



 3. 컨트롤러에 어노테이션 / Controller


 3-1. 스프링에서 컨트롤러 파일을 열어보겠습니다.
기본으로 만들어져 있는 HomeController.java를 소스를 열어보세요.


 3-2. 보시면 컨트롤러가 어노테이션으로 선언되어 있습니다. 
이 어노테이션으로 해당 소스가 컨트롤러라고 선언하고 
서블릿 프로젝트 처럼 web.xml에 컨트롤러를 매번 선언하지 않고도 자동으로
스프링이 스캔하여 컨트롤러 기능을 실행하게 합니다. 




 4. 컨트롤러 스캔 / context:component-scan


해당 컨트롤러에 어노테이션들이 자동으로
스프링에 컨트롤러 역할을 만들어주는건 해당 컨트롤러를
찾는 스캔을 하기 때문입니다.

 4-1. servlet-context.xml 을 열어봅니다.


 4-2. 해당 라인에서 context:component-scan에서 hello 팩키지가 설정되어 있습니다.
이 명령어를 통해서 패키지안에 java소스들을 풀스캔합니다.
그리고 어노테이션을 발견하면 해당 컨트롤러들을 참조하여 사용하게 만들어 줍니다. 



마무리


스프링 DispatcherServlet가 컨트롤러를 찾는 방법을 소개했습니다. 원리를 모르고 개발할수도 있지만 한번 눈으로 직접 원리를 알아보고 이해하며 개발하는건 큰 차이가 있습니다. 



댓글을 달아 주세요


스프링 프로젝트 생성


안녕하세요.
고코더 입니다. 


오늘은 스프링으로 가장 기본적인 hello을 출력 해보겠습니다.

 1. 이전에 준비되야 할 블로그 글쓰기 입니다. 
->
등이 준비되야 합니다. 


 2. STS 실행 후 후에 New -> Spring Legacy Project 를 클릭 합니다. 


 3. 그리고 프로젝트 네임은 "hello"로 입력 합니다. 
템플릿(Templates)은 MVC Project를 선택 합니다. 


그럼 해당 프로젝트에 참조 파일을 다운로드 하고


 4. 패키지 이름은 "net.gocoder.hello"로 입력 합니다.


 5. 그럼 MVC 프로젝트가 자동으로 생성되어 있습니다.


 6. 그 후에 설정된 톰캣을 실행 합니다. 



 7. 실행 후에 해당 URL로 접속하면 hello 글자를 확인 할 수 있습니다. 
https://localhost:8080/hello/



마무리

자바가 처음인 분은 사소한 부분에서
오류가 많을 수 있습니다. 검색해서 해결하는 것도 
코딩 입니다.





댓글을 달아 주세요


spring 을 ecripse에 설치 하기 


안녕하세요.
고코더 입니다.


이클립스에서 스프링을 추가하는 방법을 알아보겠습니다.
이전에 STS 프로그램으로 이클립스를 대신해 사용하라고 말씀 드렸는데요.
-> Spring - 개발 프로그램 STS 설치하기 / 첨부파일



이클립스를 스프링 개발이 가능하도록 만들어 보는 것도 남겨드려야 할 같네요

 1. 이클립스 실행 후에
Help -> Eclipse Marketplace로 이동 합니다. 


 2. 그리고 검색창에 sts라고 검색을 합니다.
그럼 나오는 맨위에 프레임워크를 설치 합니다. 


 3. 그러면 STS를 이루는 플러그인들이 한가득 보이는데요.
기본 설정대로 모두 설치 합니다. 


약관에 동의하고 Finish를 누르면 


 4. 백그라운드에서 자동으로 패키지를 다운로드 받아 설치 합니다. 


 5. 그리고 이클립스를 재시작 하면 



 6. Help에서 Dashboard가 보이고 이걸 클릭하면 


 7. 스프링 대시보드가 나타납니다.
이제 이클립스가 스프링을 사용해 개발을 할 수 있습니다.



마무리


이렇게 해도 훌륭하지만
스프링이 이미 셋팅되어 있는 STS를 사용하는건 언제나 추천 합니다. 



댓글을 달아 주세요



스프링부터 로드존슨 까지 


안녕하세요.
고코더 입니다.



이번 시간에는 스프링이 무엇인지 간단하게 알아볼려고 합니다. 부담없이 알아보겠습니다.


 1. 스프링 프레임 워크란?


 1-1. 국내에 자바개발하면 스프링인 만큼 표준프레임워크로 사용중인 프로그램 입니다. 프레임워크는 편리한 도구입니다. 특별한 목적으로 개발된 프로그램 입니다. 스프링에 기본을 학습하고 철학을 배우면 짧은 소스로 다양한 어플리케이션을 빠르게 개발 가능 합니다. 소스의 경량화 개발중에 테스트가 용이합니다.


 1-2. 아무리 설명해도 명확한 정의가 힘든 스프링은
"자바 개발을 쉽게 해주는 오픈소스 애플리케이션 프레임워크" 이라고 하면 가장 짧은 정의가 될거 같습니다.


 1-3. 스프링은 대표 적인 POJO(Plain Old Java Object) 시스템입니다. 기존 Java EE 등이 "무겁고", "복잡한" 객체를 만들게 된 것에 반발해서 사용되게 된 용어이입니다. 
2000년 9월에 마틴 파울러, 레베카 파슨, 조쉬 맥킨지 등이 사용하기 시작한 용어입니다.
즉 기존에 자바를 쉽게 사용 가능하게 하는 철학이 있습니다.

- POJO(Plain Old Java Object) 기반의 구성
- DI(의존성 주입)
- AOP(Aspect Oriented Programming) 관점지향 프로그래밍
- MVC 구조
- WAS에 종속적이지 안흔 개발환경 
- IoC(Inversion of Control) 객체에 대한 제어권
- 트랜잭션(Transaction) 지원


 2. 로드 존슨


 2-1. 로드존슨이 2002년 Expert One-on-One J2EE Design and Development 라는 저서에서 선보인 코드가 기초가 되었으며 이게 바로 스프링이 되었습니다.
오픈소스로 많은 개발자들이 참여하여 버전업 하였습니다.  SpringSource라는 회사를 창립하였고 VM웨어가 이를  인수하였고
자연스럽게 로즈존슨은 VM웨어에서 개발자로서  미들웨어 개발을 이끌다. 퇴사 하였습니다. 현재는 Atomist CEO로 활동중입니다.




마무리 


대표적인 자바 프레임워크





댓글을 달아 주세요


자바 학습을 위한 개발 프로그램 설치 


안녕하세요.
고코더 입니다.


 1. 바를 설치했다면 이제 개발을 해야 합니다. 요즘은 젯브레인으로 많이 사용하고
더 좋지만 유료이기도 하고 무료인 이클립스를 사용해야 레퍼런스도 많고 주변에
개발자 선배에게 도움을 받을 수 있기 때문입니다. 


 2. 그런데 이클립스에도 종류가 많습니다. 그중에는 스프링 프레임워크가 설치된 
이클립스를 STS(Spring Tool Suite)라고 합니다.  저와 하는 자바 강의는 이걸 설치해서 사용하겠습니다. 
이유는 스프링 게시판까지 공부를 해야 하는데 STS만 설치하면 개발이 가능합니다.
이클립스에서 스프링 프레임워크를 설치하는 과정에서 많이들 헤매는 분들이 많아서 질문이 많았기 때문입니다.
그리고 실무에서도 이클립스 보단 STS를 설치하여 개발이 많이 하기 때문입니다.

 3. STS를 설치하겠습니다. 사이트에 접속합니다.

해당 파일을 다운로드 합니다.


 4. 그럼 압축파일이 다운되고 이를 해제하면 바로 프로그램이 실행 가능합니다.
요즘 이클립스를 설치버전으로 배포하는데 STS는 여전히 포터블 입니다. 
첨부파일인 맨 아래에서 다운로드 받아주세요.

 5. 설치가 풀린 폴더 구조입니다. 여기서 STS.EXE를 클릭해보세요


 6. 그럼 STS가 실행 됩니다. 


이제 JDK설치 부터 IDE까지 준비가 완료되었습니다.



마무리


재밌는 배움에 시간이 되어봅시다.


첨부파일 



sts-3.9.9.RELEASE.zip

sts-3.9.9.RELEASE.z01

sts-3.9.9.RELEASE.z02

sts-3.9.9.RELEASE.z03

sts-3.9.9.RELEASE.z04

sts-3.9.9.RELEASE.z05

sts-3.9.9.RELEASE.z06

sts-3.9.9.RELEASE.z07

sts-3.9.9.RELEASE.z08

sts-3.9.9.RELEASE.z09

sts-3.9.9.RELEASE.z10

sts-3.9.9.RELEASE.z11

sts-3.9.9.RELEASE.z12

sts-3.9.9.RELEASE.z13

sts-3.9.9.RELEASE.z14

sts-3.9.9.RELEASE.z15

sts-3.9.9.RELEASE.z16

sts-3.9.9.RELEASE.z17

sts-3.9.9.RELEASE.z18

sts-3.9.9.RELEASE.z19

sts-3.9.9.RELEASE.z20

sts-3.9.9.RELEASE.z21

sts-3.9.9.RELEASE.z22

sts-3.9.9.RELEASE.z23

sts-3.9.9.RELEASE.z24

sts-3.9.9.RELEASE.z25

sts-3.9.9.RELEASE.z26

sts-3.9.9.RELEASE.z27

sts-3.9.9.RELEASE.z28

sts-3.9.9.RELEASE.z29

sts-3.9.9.RELEASE.z30

sts-3.9.9.RELEASE.z31

sts-3.9.9.RELEASE.z32

sts-3.9.9.RELEASE.z33

sts-3.9.9.RELEASE.z34

sts-3.9.9.RELEASE.z35

sts-3.9.9.RELEASE.z36

sts-3.9.9.RELEASE.z37

sts-3.9.9.RELEASE.z38

sts-3.9.9.RELEASE.z39

sts-3.9.9.RELEASE.z40


댓글을 달아 주세요