728x90
[목표]
: tiles를 사용하기 위한 sts4 설치부터 셋팅까지 해본다
1. STS4 설치
STS3은 "web.servlet.view.tiles" 가 지원이 안되는지 계속 오류가 발생하였다.
STS4로 설치하자.
설치 경로는 아래와 같다
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
'데일리 공부 기록' 카테고리의 다른 글
hands on sts4 - rest api 메소드 생성 후 postman으로 테스트하기 (0) | 2023.06.12 |
---|---|
hands on sts4 - gradle, mybatis, mysql 연결 (0) | 2023.06.07 |
Spring - lombok이 안먹히는 오류 해결 (0) | 2023.05.06 |
hands on springsecurity - 실습을 위한 셋팅 (0) | 2023.05.05 |
Spring - git 연동시 "not authorized" 오류 해결 (0) | 2023.05.05 |