본문 바로가기

데일리 공부 기록

hands on sts4 - 설치부터 tiles 기본 셋팅까지

728x90

 

[목표]

: tiles를 사용하기 위한 sts4 설치부터 셋팅까지 해본다

 


1. STS4 설치

 

STS3은 "web.servlet.view.tiles" 가 지원이 안되는지 계속 오류가 발생하였다. 

STS4로 설치하자.

설치 경로는 아래와 같다

https://spring.io/tools

 

Spring | Tools

 

spring.io


2. 프로젝트 생성

 

 

 

 

 

 

 

 

 

 

plugins {
	id 'java'
	id 'org.springframework.boot' version '2.7.12'
	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	// tiles
    implementation 'org.apache.tiles:tiles-jsp:3.0.8'
    implementation 'org.apache.tiles:tiles-core:3.0.8'
    implementation 'org.apache.tiles:tiles-servlet:3.0.8'
	implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
	implementation 'javax.servlet:jstl'
}

tasks.named('test') {
	useJUnitPlatform()
}

 

 

 

아래의 사진처럼 src 하위 폴더를 만들자

왼쪽 수정 전 오른쪽 수정 후

[dashboard.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<br/>
dashboard(body)
<br/>

[header.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<br/>
header
<br/>

[include.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<br/>
include
<br/>

[layout-basic.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>Title</title>
	<tiles:insertAttribute name="include"/>
</head>
<body>
	<tiles:insertAttribute name="header"/>
	<tiles:insertAttribute name="side"/>
	<tiles:insertAttribute name="body"/>
</body>
</html>

[side.jsp]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<br/>
side
<br/>

 

[tiles.xml]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
	<definition name="layout-tiles" template="/WEB-INF/tiles/layouts/layout-basic.jsp">
		<put-attribute name="include" value="/WEB-INF/tiles/layouts/include.jsp" />
		<put-attribute name="header" value="/WEB-INF/tiles/layouts/header.jsp"/>
		<put-attribute name="side" value="/WEB-INF/tiles/layouts/side.jsp"/>
		<put-attribute name="body" value=""/>
	</definition>
	
	<definition name="*/*" extends="layout-tiles">
		<put-attribute name="body" value="/WEB-INF/tiles/layouts/{1}/{2}.jsp"/>
	</definition>
	
</tiles-definitions>

 

2. Java setting

[Samplecontroller.java]

package com.example.demo;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class SampleController {
	
	@Autowired
	private SampleService sampleService;
	
	@RequestMapping(value="/index", method = {RequestMethod.POST, RequestMethod.GET})
	public String index(HttpServletRequest request, Model model) {
		
		System.out.println("인덱스 페이지 호출");
		String test = sampleService.selectTest();
		System.out.println("조회 테스트 : "+test);
		model.addAttribute("test", "테스트");
		return "test";
	}
	
	@RequestMapping(value="/sample/dashboard", method = {RequestMethod.GET, RequestMethod.POST})
	public ModelAndView dashboard() {
		ModelAndView mv = new ModelAndView();
		mv.setViewName("dashboard");
		return mv;
	}
	
}

[SampleService.java]

package com.example.demo;

public interface SampleService {
	public String selectTest();
}

[SampleServiceImpl.java]

package com.example.demo;

import org.springframework.stereotype.Service;

@Service
public class SampleServiceImpl implements SampleService{

	@Override
	public String selectTest() {
		return "selectTest테스트";
	}

}

[WebConfig.java]

package com.example.demo;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.view.tiles3.TilesConfigurer;
import org.springframework.web.servlet.view.tiles3.TilesViewResolver;
import org.springframework.web.servlet.view.tiles3.TilesView;

@Configuration
public class WebConfig {
	@Bean
	public TilesConfigurer tilesConfigurer() {
		final TilesConfigurer configurer = new TilesConfigurer();
		configurer.setDefinitions(new String[] {
				"/WEB-INF/tiles/tiles.xml"
		});
		configurer.setCheckRefresh(true);
		return configurer;
	}
	
	@Bean
	public TilesViewResolver tilesViewResolver() {
		final TilesViewResolver tilesViewResolver = new TilesViewResolver();
		tilesViewResolver.setViewClass(TilesView.class);
		tilesViewResolver.setOrder(1);
		return tilesViewResolver;
	}
}

 

 

[application.properties]

server.port=8082
spring.mvc.view.prefix=/WEB-INF/tiles/layouts/

spring.mvc.view.suffix=.jsp