DB와 연동하기(MyBatis)

  • 이 블로그의 글은 JAVA DB 엔지니어링 과정 수업을 위해 작성된 글입니다.

  • 이미지로 인해 글이 길어질 수 있습니다.


의존성 추가하기

  • MyBatis 연동에 필요한 의존성을 pom.xml에서 dependencies 태그 안에 추가합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!-- mybatis 의존성 추가 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.1</version>
</dependency>
<!-- mybatis-spring 의존성 추가 -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>1.3.0</version>
</dependency>
<!-- mysql-connector-java 의존성 추가 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>
<!-- spring-jdbc 추가 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>

cs


  • 설치된 MySQL 버전이 8이상이라 mysql-connector-java의 버전을 8.0.11로 설정했습니다.


MyBatis 관련 정보 설정하기 - root-context.xml

  • MyBatis 관련 정보를 설정하기 위해 root-context.xml 파일에 다음 항목들을 추가합니다.


네임스페이스 추가

  • root-context.xml 파일을 열어 namespace 탭을 클릭합니다.
  • aop, beans, context, jdbc, mybatis-spring 선택 후 저장합니다.


MySQL 정보 추가

  • 해당 프로젝트에서 사용할 스키마이름(DB명)과 MySQL 계정아이디와 비밀번호를 입력하여 적용하면 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <!-- MySQL 버전에 따라 driverClassName의 value값이 달라짐 아래 코드는 Mysql 8기준 -->
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <!-- MySQL 버전이 6인 경우 아래 코드 반영 -->
    <!-- <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property> -->
    <property name="url"
              value="jdbc:mysql://localhost:3306/스키마이름?useSSL=false&amp;serverTimezone=Asia/Seoul">
    </property>
    <property name="username" value="MySQL계정아이디"></property>
    <property name="password" value="MySQL계정비번"></property>
</bean> 

cs
  • 예시
1
2
3
4
5
6
7
8
9
<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url"
              value="jdbc:mysql://localhost:3306/spring?useSSL=false&amp;serverTimezone=UTC">
    </property>
    <property name="username" value="green"></property>
    <property name="password" value="cjgreen"></property>
</bean>  

cs


Mapper 설정

  • mapperLocation의 value에 경로는 src/main/resources 폴더의 하위 경로입니다.
  • 경로에 mappers를 입력했다면 resources에 mappers 폴더를 생성하면 됩니다.
1
2
3
4
5
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mapperLocations" value="classpath:경로/*Mapper.xml"></property>
</bean>
<mybatis-spring:scan base-package="맵핑할패키지이름"/>

cs

  • 예시
1
2
3
4
5
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property>
</bean>
<mybatis-spring:scan base-package="kr.green.spring.dao"/>

cs


MyBatis 연동 확인하기

  • 다음 작업은 오로지 연동을 확인하기 위한 작업으로 추후 메소드가 삭제되거나 수정될 수 있습니다.


MemberMapper 설정

  • mappers 폴더에 MemberMapper.xml 파일 생성 후 아래 예시 코드 복사하여 붙여넣습니다.
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kr.green.spring.dao.MemberDAO">
  <select id="getEmail" resultType="String">
    select email from member where id = #{id}
  </select>
</mapper>

cs


MemberDAO 설정

  • kr.green.spring.dao 패키지 생성 후 MemberDAO 인터페이스 생성 후 다음 코드를 추가합니다.
1
2
3
4
5
6
7
8
package kr.green.spring.dao;
 
import org.apache.ibatis.annotations.Param;
 
public interface MemberDAO {
    public String getEmail(@Param("id")String id);
}
 

cs


MemberService 설정

  • kr.green.spring.service 패키지 생성 후 MemberService 인터페이스와 MemberServiceImp 생성 후 다음 코드를 추가합니다.
  • MemberService 인터페이스
1
2
3
4
5
6
package kr.green.spring.service;
 
public interface MemberService {
    public String getEmail(String id);
}
 

cs
  • MemberServiceImp 클래스
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package kr.green.spring.service;
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import kr.green.spring.dao.MemberDAO;
 
@Service
public class MemberServiceImp implements MemberService {
    @Autowired
    MemberDAO memberDao;
    
    @Override
    public String getEmail(String id) {
        return memberDao.getEmail(id);
    }
}
 

cs


HomeController 설정

  • HomeController에 다음 메소드와 멤버 변수를 추가합니다. id에 입력한 문자열 "12345678"은 실제 DB에 있는 회원 정보이어야 합니다.
1
2
3
4
5
6
7
8
9
10
    @Autowired
    MemberService memberService;
    
    @RequestMapping(value="/")
    public ModelAndView main(ModelAndView mv) throws Exception{
        mv.setViewName("/main/home");
        mv.addObject("setHeader""타일즈테스트");
        System.out.println(memberService.getEmail("12345678"));
        return mv;
    }

cs



수고하셨습니다.!!

  •  해당 글은 비전공자가 이해할 수 있도록 쉬운 표현과 필수적인 내용작성하려고 한 글입니다.
  •  전공자 또는 전문적이고 상세한 설명이 필요하신 분은 다른 글을 살펴보시길바랍니다.


Git이란?

깃(Git)은 컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리시스템이다. [위키백과]

  •  온라인으로 파일을 보관하고, 파일의 변경 사항을 기록하여 수정된 내용을 확인할 수 있고, 다른 개발자와 협업으로 개발을 할 수 있게 해줍니다.


Git GUI(Graphic User Interface)

  •  사용자가 Git을 사용하기 편하도록 제공되는 툴(Git은 콘솔 창에서 명령어로 입력해야합니다)로 소스트리, GitHub Desktop, GikKraken 등이 있습니다.


용어 정리

  • 저장소(Repository) : 파일을 저장하는 공간
  • 커밋(Commit) : 저장소에서 변경된 내용을 기록하는 과정
  • 푸쉬(Push) : 로컬 저장소에서 변경된 내용을 온라인 저장소에 업데이트 하는 과정
  • 풀(Pull) : 온라인 저장소의 버전이 로컬 저장소의 버전보다 높은(나중인) 경우, 온라인 저장소의 버전으로 로컬 저장소를 업데이트 하는 과정
  • 브랜치(Branch) : 현재 작업중인 내용과 별개로 작업하는 경우 새로운 브랜치를 생성, 주로 새로운 기능을 추가하거나 다른 개발자와 협업하는 경우 사용
  • 병합(Merge) : 두 개의 브랜치를 합치는 과정, 각 브랜치에서 한 파일에 대해 수정한 경우 어느 브랜치의 내용을 반영할 건지를 고려해야함


DB 설정하기

  • 이 블로그의 글은 JAVA DB 엔지니어링 과정 수업을 위해 작성된 글입니다.
  • 이미지로 인해 글이 길어질 수 있습니다.

1. MySQL DB(스키마) 생성

 - MySQL Workbench를 실행하여 root 또는 DB 생성 권한이 있는 다른 아이디로 접속합니다.

 - 접속 과정은 다음을 참고하세요.


 - 접속 후 화면


 - Schemas 탭에서 좌측 SHEMAS 빈 여백에 우클릭 후 Create Schema를 클릭합니다.


 - Schema 이름 입력 후 Apply를 눌러 Schema(DB)를 생성합니다. 

 - 참고

      • DB 종류에 따라 Schema와 DB를 취급하는 방식이 다릅니다.

      • MySQL에서는 Schema와 DB가 같은 것으로 취급합니다. 


2. 테이블 생성하기

 - 회원 테이블, 게시판 테이블, 파일 테이블을 생성합니다.

 - 회원 테이블(memeber)의 속성은 다음과 같습니다.

    • 모든 속성은 필수 항목입니다.
    • 아이디(id) : 기본키로 문자열로 되어 있으며 최대 15까지로 설정했습니다.
    • 비밀번호(pw) : 문자열로 되어 있으며 암호화로 인해 최대 255자까지로 설정했습니다.
    • 성별(gender) : 문자 1자로 되어 있으며 남자는 'M', 여자는 'F'로 저장합니다.
    • 이메일(email) : 문자열로 되어 있습니다.
    • 권한(authority) : 문자열로 되어 있으며 최대 45자까지 설정 가능하고 기본값은 'USER' 입니다.

 - 회원 테이블의 DDL은 다음과 같습니다.

1
2
3
4
5
6
7
8
9
CREATE TABLE `member` (
  `id` varchar(15NOT NULL,
  `pw` varchar(255NOT NULL,
  `gender` varchar(1NOT NULL DEFAULT 'M',
  `email` varchar(45NOT NULL,
  `name` varchar(45NOT NULL DEFAULT ' ',
  `authority` varchar(45NOT NULL DEFAULT 'USER',
  PRIMARY KEY (`id`)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
cs


 - 게시판 테이블(board)의 속성은 다음과 같습니다.

    • 번호(num) : 정수로 기본키이며 정보 추가 시 자동으로 증가합니다.
    • 제목(title) : 문자열로 되어 있으며 최대 255까지로 설정했습니다.
    • 내용(contents) : 긴 문자열로 되어 있습니다.(LONG TEXT)
    • 작성자(writer) : 문자열로 되어 있으며 최대 15까지로 설정되어 있습니다. 그리고 회원 테이블의 기본키인 아이디와 외래키로 연결되어 있습니다.
    • 등록일(registered) : DATETIME으로 되어 있으며 등록할 당시의 시간을 저장합니다.
    • 조회수(views) : 정수로 되어있습니다.
    • 게시글 등록 여부(valid) : 문자 1자로 되어 있으며 게시글이 게시된 상태면 'I', 삭제된 상태면 'D'로 저장합니다.
    • 게시판 테이블의 DDL은 다음과 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE `board` (
  `num` int(11NOT NULL AUTO_INCREMENT,
  `title` varchar(255NOT NULL,
  `contents` longtext NOT NULL,
  `writer` varchar(15NOT NULL,
  `registered` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `views` int(11NOT NULL DEFAULT '0',
  `valid` varchar(1NOT NULL DEFAULT 'I',
  PRIMARY KEY (`num`),
  KEY `writer_idx` (`writer`),
  CONSTRAINT `writer` FOREIGN KEY (`writer`REFERENCES `member` (`id`)
ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8;
cs

 - 파일 테이블(file)의 속성은 다음과 같습니다.

  • 번호(num) : 정수로 기본키이며 정보 추가 시 자동으로 증가합니다.
  • 게시글 번호(board) : 정수로 되어 있습니다. 그리고 게시판 테이블의 기본키인 게시판 번호와 외래키로 연결되어 있습니다.
  • 첨부파일명(name) : 문자열로 되어 있으며 최대 255자까지로 설정되어 있으며, NULL 값을 허용하지 않습니다.
  • 상태(state) : 문자로 되어 있으며 기본값이 'I'이고 삭제되면 'D'를 저장합니다.
  • 파일 테이블의 DDL은 다음과 같습니다.
1
2
3
4
5
6
7
8
9
CREATE TABLE `file` (
  `num` int(11NOT NULL AUTO_INCREMENT,
  `board` int(11NOT NULL,
  `name` varchar(255NOT NULL,
  `state` varchar(1NOT NULL DEFAULT 'I',
  PRIMARY KEY (`num`),
  KEY `board_idx` (`board`),
  CONSTRAINT `board` FOREIGN KEY (`board`REFERENCES `board` (`num`)
ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8;
cs

 - Schemas탭에서 테이블을 생성할 DB를 선택합니다.(spring)


 - 위의 회원테이블, 게시판 테이블, 파일 테이블에 대한 DDL를 이용하여 테이블을 생성합니다.

 - 빈 SQL FILE에 DDL을 복사하여 붙여넣고 실행합니다.

 - Schemas탭에서 새로고침 후 DB를 더블클릭한 후 Tables를 살펴보면 회원 테이블과 게시판 테이블이 생성된 것을 확인할 수 있습니다.

수고하셨습니다.

템플릿 설정하기(타일즈)

  • 이 블로그의 글은 JAVA DB 엔지니어링 과정 수업을 위해 작성된 글입니다.

  • 이미지로 인해 글이 길어질 수 있습니다.

  1. 타일즈 의존성 추가 (pom.xml)

  2. View Resolver 등록 (servlet-context.xml)

  3. 타일즈 설정 추가

  4. 기본 레이아웃 설정

  5. 적용

  6. git 관리

타일즈 의존성 추가

  • pom.xml 파일 안 <proertiies> 태그 안에 스프링 프레임워크 버전 수정

1
<org.springframework-version>5.1.8.RELEASE</org.springframework-version>
cs

  • pom.xml 파일안 <proertiies> 태그 안에 타일즈 버전 추가

1
<org.apache.tiles-version>3.0.8</org.apache.tiles-version>
cs


  • pom.xml 파일 안 <dependencies> 태그 안에 의존성 추가

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <!-- Tiles -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-servlet</artifactId>
        <version>${org.apache.tiles-version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-api</artifactId>
        <version>${org.apache.tiles-version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>${org.apache.tiles-version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>${org.apache.tiles-version}</version>
    </dependency> 
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-template</artifactId>
        <version>${org.apache.tiles-version}</version>
    </dependency>
    cs


  • 위 단계에서 다음과 같은 에러가 나올 시

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Failure to transfer commons-beanutils:commons-beanutils:jar:1.8.0 from https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Original error: Could not transfer artifact commons-beanutils:commons-beanutils:jar:1.8.0 from/to central (https://repo.maven.apache.org/maven2): The operation was cancelled.
    org.eclipse.aether.transfer.ArtifactTransferException: Failure to transfer commons-beanutils:commons-beanutils:jar:1.8.0 from https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced. Original error: Could not transfer artifact commons-beanutils:commons-beanutils:jar:1.8.0 from/to central (https://repo.maven.apache.org/maven2): The operation was cancelled.
        at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.newException(DefaultUpdateCheckManager.java:226)
        at org.eclipse.aether.internal.impl.DefaultUpdateCheckManager.checkArtifact(DefaultUpdateCheckManager.java:192)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.gatherDownloads(DefaultArtifactResolver.java:564)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:482)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:400)
        at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:225)
        at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(DefaultRepositorySystem.java:335)
        at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:202)
        at org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:225)
        at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:198)
        at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:122)
        at org.eclipse.m2e.core.internal.embedder.MavenImpl.readMavenProject(MavenImpl.java:630)
        at org.eclipse.m2e.core.internal.project.registry.DefaultMavenDependencyResolver.resolveProjectDependencies(DefaultMavenDependencyResolver.java:63)
        at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refreshPhase2(ProjectRegistryManager.java:551)
        at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.lambda$2(ProjectRegistryManager.java:515)
        at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:177)
        at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151)
        at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:513)
        at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:365)
        at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:312)
        at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:155)
        at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod$1.call(MavenBuilder.java:90)
        at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:177)
        at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:151)
        at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:99)
        at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:87)
        at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:201)
        at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:833)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:220)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263)
        at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:316)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
        at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:319)
        at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:371)
        at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:392)
        at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:154)
        at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:244)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
    cs
  • pom.xml 파일 안 <dependencies> 태그 안에 다음 의존성 추가

    1
    2
    3
    4
    5
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.8.3</version>
    </dependency>

    cs


View Resolver 등록 (servlet-context.xml)

  • servlet-context.xml에 다음 코드를 추가

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <beans:bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
        <beans:property name="order" value="1" /><!-- 순서를 우선으로 지정 -->
    </beans:bean>
         
    <beans:bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <beans:property name="definitions">
            <beans:list>
                <beans:value>/WEB-INF/spring/tiles-def.xml</beans:value>
            </beans:list>
        </beans:property>
    </beans:bean>

    cs


타일즈 설정 추가

  • WEB-INF > spring 폴더에 tiles-def.xml 파일 생성 후 다음 코드 붙여넣기

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <?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>
        <!-- (1) 레이아웃을 적용하지않는화면-->    
        <definition name=".login" template="/WEB-INF/views/layout/loginLayout.jsp">
            <put-attribute name="title" value="" />
            <put-attribute name="header" value="/WEB-INF/views/common/header.jsp" />
            <put-attribute name="menu" value="" />        
            <put-attribute name="footer" value="" />
        </definition>
     
        <!-- (2) 레이아웃을 적용하는화면-->
        <definition name=".root" template="/WEB-INF/views/layout/baseLayout.jsp">
            <put-attribute name="title" value="" />
            <put-attribute name="header" value="/WEB-INF/views/common/header.jsp" />
            <put-attribute name="menu" value="/WEB-INF/views/common/menu.jsp" />        
            <put-attribute name="footer" value="/WEB-INF/views/common/footer.jsp" />
        </definition>
        
        <!-- (1) -->    
        <definition name="/login/*" extends=".login">
          <put-attribute name="body" value="/WEB-INF/views/login/{1}.jsp" />
        </definition>
     
        <!-- (2) -->
       <definition name="/*/*" extends=".root">      
          <put-attribute name="body" value="/WEB-INF/views/{1}/{2}.jsp" />
        </definition>
    </tiles-definitions>

    cs



기본 레이아웃 설정

  • 위에서 설정한 경로에 jsp 파일 생성

  • baseLayout.jsp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     
    <html>
    <head>
    <title>스프링</title>
    <jsp:include page="/WEB-INF/views/include/head.jsp"></jsp:include>
    </head>
    <body>
        <tiles:insertAttribute name="header"/>
        <div class="container">        
            <tiles:insertAttribute name="body" />
        </div>                                                  
        <tiles:insertAttribute name="footer" />
    </body>
    </html>
    cs
  • 폴더 구조

적용

  • 컨트롤러를 다음과 같이 수정

    1
    2
    3
    4
    5
    6
    @RequestMapping(value= {"/main/home","/home.do"})
    public ModelAndView openTilesView(ModelAndView mv) throws Exception{
        mv.setViewName("/main/home");
        mv.addObject("setHeader""타일즈");
        return mv;
    }

    cs


git 관리

  • GitKraken 실행

  • 커밋 후 푸쉬


자세한 각 jsp 파일 내용 확인




출처: https://epthffh.tistory.com/entry/스프링-타일즈-Spring-Tile-설정해보기 [물고기 개발자의 블로그]

+ Recent posts