웹 페이지를 꾸며야하는데, 저처럼 디자인적 감각이 거의 없는 경우에 선택하는 방법은
부트스트랩 테마를 적용하는 것 입니다.
* 오늘 정리할 내용은 아래와 같습니다.
1. 부트스트랩 적용하기
2. 타일즈 적용하기
부트스트랩을 이용하면 디자인적인 기본 기능들이 이미 구현되어 있기 때문에 가져다 쓰기만 하면되서
굉장히 편리합니다.
물론 유료로 사용하는것이 기능으로나 디자인으로나 훨-씬 좋겠지만,
저는 무료로 제공하는 아래 디자인을 다운받아 사용하려고 합니다.
(다운로드 링크 -> https://startbootstrap.com/template-overviews/sb-admin/)
그림1) 예제에 사용 할 부트스트랩 이미지
그럼 다운로드 한 부트스트랩을 프로젝트에 적용해보도록 하겠습니다.
1. 부트스트랩 적용하기
1.1 압축풀기
다운받은 파일을 압출을 풀면 다음과 같이 정리 되어 있을 것 입니다.
html을 코드를 보면 어떤식으로 사용하는지 확인할 수 있습니다!
그림2) 부트스트랩 내용물
1.2 resources 폴더에 복사하기
그림2) 사진에 있는 폴더 css/js/scss/vendor 폴더를 작업중인 프로젝트 내의 resources에 복사합니다.
그림3) resources 폴더
1.3 servlet-context.xml 수정하기
이제 부트스트랩을 사용하려면 코드를 작성할때 <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"> 과 같은 방식으로 작성하게 됩니다.
그래서 이 경로를 Spring에서 원할하게 찾을 수 있도록 servlet-context.xml 을 수정해 주어야 합니다.
resources mapping 부분을 아래와 같이 변경 합니다.
<resources mapping="/**" location="/resources/" />
그림4) Servlet.xml 수정
(xml 파일은 수정 후 서버를 재시작해야 적용됩니다.)
1.4 적용 확인하기
이제 정상적으로 동작하는지 확인하기 위해 그림2) 에있던 폴더에서 index.html에 있는 코드를 home.jsp에 붙여넣습니다.
이후 서버 시작해서 확인하기
그림5) 부트스트랩 적용 확인
1.5 정장 작동을 확인했으면 Git에 commit하기!
git의 순서는 언제다 add-> commit -> push 입니다.
add to index 이후 commit message 작성 후 commit!
그림 6) 부트스트랩 적용 후 commit
2. Tiles 적용하기
home.jsp에 코드를 복사하게되면 코드의 양이 상당히 많습니다.
왜냐하면 그 코드에는 위쪽 메뉴바, 왼쪽 메뉴바, 중앙 내용, 하단 내용이 모두 들어가 있기 때문입니다.
새로운 페이지마다 그 긴 코드를 모두 작성하긴 힘들 것 입니다.
그래서 타일즈를 이용하여 고정적으로 사용되는 부분은 한번만 작성하여 계속 가지고 다니게 만드려고 합니다!
타일즈 적용에 필요한 것은 아래와 같습니다.
2.1 pom.xml에 tiles dependency 추가
<!-- tiles -->
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-core</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-api</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-extras</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-servlet</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>2.2.2</version>
</dependency>
2.2 WEB-INF/tiles 폴더 생성
- 내용 구성은 layout, tile , tiles.xml 파일
2.2.1 layout에 header / content / footer로 상단 / 중단 / 하단부를 정의해줍니다.
아래 형식이 기본 작성 방법입니다.
하지만 저는 제가 원하는 방식으로 화면에 출력하고 싶기 때문에 아래와 같이 수정했습니다.
2.2.2 tile 폴더 내에는 상단 중단 하단부에 고정으로 보여 주고 싶은 내용을 입력 합니다.
(jsp파일 작성하듯이 똑같이 작성하면 됩니다. 아래 사진은 header.jsp 내용)
2.2.3 마지막으로 tiles.xml 작성
- layout.jsp 위치 header.jsp footer.jsp 파일 위치, content 부분에 적용될 jsp 설정 부분을 작성하여 tiles.xml을 만듭니다.
- tiles 페이지 설정 / 비설정 (2019.06.25 추가)
페이지를 설정 하던 중 로그인 페이지에는 타일즈를 제외 해야 할 일이 생겼습니다.
그래서 내용 추가 합니다.
타일즈 적용 부를 위에처럼 하나씩 다 설정해주어도 괜찮지만 페이지가 많아질수록 관리하기 귀찮겠죠?
그래서 아래와 같이 설정을 변경합니다.
--------------------------------------------------------------------------------------------
<!-- 타일즈 제외 선언부를 제외한 나머지는 모두 타일즈로 적용 됨 -->
<definition name="*/*" extends ="layout">
<put-attribute name="content" value ="/WEB-INF/views/{1}/{2}.jsp"/>
</definition>
--------------------------------------------------------------------------------------------
"*/*" -> 모든 페이지를 layout으로 적용하겠다는 말입니다.
그리고 제외 할 페이지를 설정해줍니다.
페이지 선언 이전에, 비어있는 layout인 emtpy.jsp를 추가해줍니다. (loyout 폴더 아래)
empty.jsp의 내용은 아래와 같이 타일즈 layout 설정을 다 빼버림 되겠죠!
그리고 tiles.xml에 제외할 페이지들을 선언해줍니다.
아래 사진은 제외할 페이지가 들어있는 폴더 views/logInfo 입니다.
--------------------------------------------------------------------------------------------------------
<!-- 타일즈 제외 선언부 -->
<definition name="logInfo/login" extends ="empty">
<put-attribute name="content" value ="/WEB-INF/views/logInfo/login.jsp"/>
</definition>
<definition name="logInfo/memberJoin" extends ="empty">
<put-attribute name="content" value ="/WEB-INF/views/logInfo/memberJoin.jsp"/>
</definition>
--------------------------------------------------------------------------------------------------------
tiles.xml 전체 소스
-----------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
"http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
<!-- tiles layout 적용 정의부 -->
<definition name ="layout" template ="/WEB-INF/tiles/layout/layout.jsp">
<put-attribute name="header" value ="/WEB-INF/tiles/tile/header.jsp"/>
<put-attribute name="sidebar" value ="/WEB-INF/tiles/tile/sidebar.jsp"/>
<put-attribute name="content" value =""/>
<put-attribute name="footer" value ="/WEB-INF/tiles/tile/footer.jsp"/>
<put-attribute name="footer-menu" value ="/WEB-INF/tiles/tile/footer-menu.jsp"/>
</definition>
<!-- tiles 적용 제외 부분 정의부 -->
<definition name="empty" template ="/WEB-INF/tiles/layout/empty.jsp">
<put-attribute name="content" value =""/>
</definition>
<!-- 타일즈 제외 선언부를 제외한 나머지는 모두 타일즈로 적용 됨 -->
<definition name="*/*" extends ="layout">
<put-attribute name="content" value ="/WEB-INF/views/{1}/{2}.jsp"/>
</definition>
<!-- 타일즈 제외 선언부 -->
<definition name="logInfo/login" extends ="empty">
<put-attribute name="content" value ="/WEB-INF/views/logInfo/login.jsp"/>
</definition>
<definition name="logInfo/memberJoin" extends ="empty">
<put-attribute name="content" value ="/WEB-INF/views/logInfo/memberJoin.jsp"/>
</definition>
</tiles-definitions>
-----------------------------------------------------------------------------------------------------------------------------
이렇게 tiles 변경 후 적용을 변경하면 로그인 페이지를 제외한 나머지 페이지들만 타일즈가 적용됩니다!
2.3 servlet-context.xml에 tiles 정보 추가
이제 생성한 폴더를 서블릿에서 인식해주기 위해서 servlet-context.xml 파일에 tiles 정보와 폴더의 경로를 아래와 같이 내용을 추가해줍니다.
<!-- 부트스트랩 링크를 위해 resources 경로를 루트부터 찾도록 변경해줍니다 -->
<!-- <resources mapping="/resources/**" location="/resources/" /> -->
<resources mapping="/**" location="/resources/" />
<!-- Tiles-->
<beans:bean id="tilesViewResolver" class="org.springframework.web.servlet.view.tiles2.TilesViewResolver" >
</beans:bean>
<beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<beans:property name ="definitions">
<beans:list>
<beans:value>/WEB-INF/tiles/tiles.xml</beans:value>
</beans:list>
</beans:property>
</beans:bean>
2.4 root-coontext tiles 내용 추가
이제 root-context.xml 파일에도 아래와 같이 tiles 정보를 추가 입력해줍니다.
<!-- tiles-->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
<property name="order" value="2" />
</bean>
2.5 이제 타일즈를 적용할 파일에 중앙부 내용을 입력하고 타일즈가 적용이 되었는지를 확인합니다.
(지금 예제의 경우는 home에 적용을 했기 때문에 home.jsp가 정상 동작하는지 확인합니다.)
적용이 안되가지구 보니 tiles.xml 작성할때 /WEB-INF/views/home.jsp 로 작성했기 때문에 homecontroller에 return 값을 "home" ->"/home"으로 변경하니 정상 작동하는것을 확인 했습니다.
이렇게하면 Tiles까지 적용 완료!
새로운 페이지를 만들때에 타일즈를 적용할거면 페이지.jsp 작성 후 tiles.xml에 페이지.jsp 경로를 추가해주면 될 것입니다.
이제 정상동작 확인했으니 commit 후 push!
이제 본격적으로 기능들을 만들어 볼 차례가 된 것 같습니다.
오늘은 여기까지 정리하겠습니다!
'WEB 개발 > Spring Project' 카테고리의 다른 글
Spring WEB Project 04 - DB에 데이터 삽입하기 (0) | 2019.02.08 |
---|---|
Spring WEB project 03 - Spring과 DB 연동하기 (0) | 2019.01.28 |
Spring WEB project 01 - 프로젝트 생성 및 Git 적용하기 (0) | 2019.01.18 |