webapp/WEB-INF/spring/appServlet/ 폴더 밑에 interceptor-context.xml 파일을 만듭니다.


interceptor-context.xml 

--모든 Path에서 Interceptor를 걸고 resources/ 폴더 밑은 제외 합니다.


그리고 Interceptor 파일을 com.test.example.config.interceptor.CommonInterceptor 위치에 만듭니다.


파일 구조



-- 현재 호출한 URI를 알려주고 그리고 모든 Parameter 값을 출력합니다.

-- Parameter 값은 없기 때문에 출력하지는 않습니다.



화면 레이아웃을 만들어 보겠습니다...

Thymeleaf에서 Page Layout을 만드는 방법은 몇가지가 있는데 지금 사용하는 방법은 Thymeleaf Layout Dialect 을 이용하여 만들어 보겠습니다.

그럼 layout을 만들어 보겠습니다.

맨처음 views/ 폴더 밑에 /layout 폴더와 fragments/ 폴더를 만듭니다.

layout 폴더밑에 default.html을 만듭니다.


그리고 fragements 폴더 밑에

config.html


header.html


footer.html 를 만듭니다.


그리고 home.html을 수정합니다.


파일구조는 이렇게 나옵니다.

그리고 localhost:8080/example/를 열어보면 밑의 화면과 같이 정말 간단하게 레이아웃을 만들수 있는걸  볼 수 있습니다.



자바 기반의 여러 Template엔진이 있습니다.

 기본적으로 쓰는 JSP+JSTL, Velocity, Freemaker, Thymeleaf, Mustache, Jade 등 여려가지가 있는데 저는 Thymeleaf를 쓰도록 하겠습니다..

왜냐면...... 그냥 Spring에서 밀어주기도 하고 그냥...  써보고 싶었습니다. -_-;;

Thymeleaf 3 버전도 나왔지만 저는 2.1.4 버전을 쓰도록 하겠습니다...

아직 thymeleaf-layout-dialect (layout)을 제대로 지원을 안해주는지 제가 잘 모르는건지.. 어쨌든 그렇습니다.


** 다른 Template 엔진 쓸꺼면 패스해도 됩니다.


pom.xml 에  추가를 해줍니다.


그리고 webapp/WEB-INF/spring/appServlet/servlet-context.xml을 수정합니다.

기존에 있는 ViewResolver을 삭제하고 


Thymeleaf ViewResolver를 등록합니다.


그리고 기존의 home.jsp(삭제해도 상관 없음) 대신 home.html을 생성한다.


home.html 의 내용은

으로 만든다음.

http://localhost:8080/example/ 접속 해보면 잘 나올겁니다.


!!! Thymeleaf는 태그유효성 체크가 매우 엄격하다. 따라서 반드시 닫는 태그를 달아준다. !!!


기존에 설정되어 있는 log를 logback으로 변경해보도록 하겠습니다.


pom.xml 에 있는 log관련 library를 변경 합니다.

로 설정 되어 있는걸

으로 변경합니다.


그리고 기존에 있는 log4j.xml 파일을 삭제를 하고 그 위치에 logback.xml을 생성합니다.


그리고 logback.xml의 내용은

으로 설정해주시면 됩니다. 그리고 Server Starting을 해보면 로그출력이 변해 있는걸 볼 수 있습니다.


생성된 프로젝트는 Spring Legacy Project이기 때문에 스프링 버젼 및 프로젝트가 쫌 오래된 설정입니다.

그래서 최신 버전으로 바꾸는 작업을 해보겠습니다.


1. Project Facet 변경

프로젝트를 우클릭을 해서 맨 밑에 Properties 를 선택한 뒤 중간 쯤 보면 Project Facet이 보이는데 선택합니다.

그림과 같이 수정을 합니다.

Dynamic Web Module -> 3.1

Java -> 1.8

JavaScript -> 1.0


2. web.xml 변경

- 기존  web.xml


- 변경 web.xml (중간에 Encoding Filter도 추가 해줍니다.)


3. pom.xml 변경

- 기존 pom.xml


- 변경 pom.xml


기본적인 세팅을 완료 하였습니다.



1. 스프링 프로젝트 생성


- 상단 메뉴에서 File > New > Spring Legacy Project를 선택 합니다.


- Project name에는 test_project (마음대로)을 적고 Spring MVC Project를 선택합니다.


-그리고 package 이름을 정하고 Finish를 누르면 해당 필요한 jar를 자동으로 다운 받습니다. (기본으로 Maven 프로젝트가 생성 됨.)


- 프로젝트가 생성 되었습니다. 그리고 앞에서 설치한 Tomcat 서버에 프로젝트를 등록합니다. 

Server 탭에서 Tomcat서버를 더블클릭한 뒤 Modules 탭에서 Add Web Module을 선택해서 프로젝트를 등록을 합니다.

 

- 서버를 실행 시킨 후 Console 탭에서 서버가 잘 작동 되었는지 확인한 후 주소창에 http://localhost:8080/example/  쳐서 확인해봅니다.


여러 SI 프로젝트를 Spring Framework를 이용하여 진행하면서 이미 만들어진 환경에서만 진행을 하였는데 

새로운 회사로 와서 처음부터 개발환경을 구성하게 되어서 글로 남길려고 만들었습니다. 

요즘은 트렌드는 Spring Boot로 흘러가고 있는거 같은데 아직은 Spring MVC를 사용하는 곳도 많은거 같아서 Spring MVC로 진행합니다.

이 글을 쓴 이유는 여러 뛰어난 개발자도 있겠지만 저와 같은 개발자도 있을꺼 같기도 하고 저도 나중에 다시 볼려고 합니다. ㅎㅎ

그럼 시작할께요. ㅎㅎㅎ. 


아.. 그리고 이 글은 환경 구성 위주로 글을 올리기 때문에 자세한 설명은 하지 않으니 구글에서 검색해서 보시면 더 자세히 알 수 있습니다.  


1. 환경 설정

1.1 Java 설치

http://wgenius.tistory.com/category/Programming/Java 에서 참고 합니다.

java 1.8 버전을 사용합니다.


1.2 STS 설치 

순수 Eclipse를 다운 받아서 설치 할 수도 있겠지만 저는 STS 를 이용하여 진행하도록 하겠습니다.

https://spring.io/tools/sts 에서 다운 받아서 압축을 풀어서 설치를 합니다.

그리고  기존 sts.ini 설정을 알맞게 수정합니다. (구글에서 검색해보면 많습니다. -ㅁ-;;)

기존 sts.ini

 수정 sts.ini


그리고 sts 를 실행한 뒤 worksapce를 정해준 뒤에 실행하면 


Dash Board와 함께 시작 화면이 나옵니다. 


1.3 Tomcat 설치

기본적으로 STS에 포함되어 있는 Pivotal tc 서버가 있지만 따로 톰캣 서버를 설치 하겠습니다. 

http://tomcat.apache.org/download-80.cgi 에서 tomcat 8 버전을 다운로드 받은 뒤 압축을 풉니다. 


Server Tab에서 우클릭을 한뒤 New -> Server를 선택합니다.


Tomcat v8.0을 선택하시고


압축을 푼 디렉토리를 설정한 뒤 Finish를 선택합니다.

서버가 등록된 것을 확인 합니다. 




1. JDK 설치

http://www.oracle.com/technetwork/java/javase/downloads/index.html 에서 다운을 받습니다.


원하는 버전을 선택 하고 설치를 합니다.



2. 환경변수 설정

설치를 한 후 환경변수를 설정합니다.

제어판 -> 시스템 및 보안 -> 시스템에 들어간 후 고급 시스템 설정을 누릅니다. 단축키(윈도우키 + Pause)

그리고 고급 탭을 누른 후 환경 변수를 누릅니다.




그리고 새로 만들기를 누른후

JAVA_HOME 을 만들고 Path를 추가합니다.




이제 제대로 설정 되었는지 확인하기 위해  명령 프로프트를 실행해서 확인합니다.  

명령 프롬프트 창에서

java -verison

java 를 입력해봅니다.



이상으로 JDK 설치 및 환경변수 설정을 끝냅니다. 



https로 연결한 경우 익스플로러에서는 캐쉬를 사용하지 않는다. IE에서만 이렇게 작동함
따라서 IE에서는 파일에 Disk 쓰기를 허용하지 않는다. 그래서 파일 다운로드도 되지 않고 Open도 안됨.
그러므로 header쪽에서 cache를 사용한다는 걸 해줘야됨

response.setHeader("Pragma", "public"); 
response.setContentType("application/pdf");
response.setHeader("Cache-Control", "cache");

그런 다음 header쪽 부분에서 Content-Disposition 속성에 attachment 와 inline 속성이 있다.
attachment 속성은 파일 타입에 상관 없이 무조건 파일 다운로드 대화상자가 뜨지만
inline 속성은 브라우저 인식 파일 확장자를 가진 파일들에 대해서는 웹브라우져상에서 바로 열고
그외의 파일에 대해서는 다운로드 대화상자가 뜨도록 한다...

이거 찾아 낸다고.. 며칠 헤맸음...

+ Recent posts