만들어진 템플릿에 익숙해지면 SI 작업 기초 지식 함양에 하등 도움이 되기 때문에 떠올리는 차원에서 아예 들고 새로 땅을 파보기로 했다.

 

참고 사이트 : http://blog.beany.co.kr/archives/1030

Tiles 관련 참고 사이트 : http://blog.naver.com/PostView.nhn?blogId=jazz1234k&logNo=40123376205

 

File → New → Maven Project 선택 혹은 Ctrl+N → Maven Project 선택

 

 

Use default Workspace location 체크 Next 클릭. Dynamic Web Project 생성하는 방법도 있는 같은데 일단 익숙한 방법대로 ㄱㄱ.

 

 

Group Id org.apache.maven.archetypes, Artifact Id maven-archetype-webapp(a simple Java web application) 선택한 Next

 

 

속성에 알맞은 값을 입력한다.

- Group Id : 프로젝트 그룹의 식별 문자열

- Artifact Id : Group Id 따른 하위 프로젝트를 구분하기 위한 ID

- Version : Artifact 버전인데 기본 세팅된 정보를 사용

- Package : 프로젝트 생성시 기본으로 생성되는 패키지

 

 

참조한 블로그에도 나와 있지만, main 폴더 하위에 src 폴더를 생성하면 java 관련 src 폴더가 생성되므로 잊지 말고 추가하자.

 

여기까지 하면 maven 기반 프로젝트의 껍데기는 완성된다. 이제 프로젝트를 구동하기 위한 기본적인 세팅을 해야 한다. 보통 maven pom.xml 기본적인 설정을 해두면 알아서 필요한 jar 파일을 다운로드 받기 때문에 관리하기 편하다.

 

필수로 들어가야 spring 관련 세팅과 jstl, 로깅을 위한 slf4j 정도. 여기에 타일즈 세팅도 추가. junit 공부하기 위해 junit 세팅까지 추가. 세팅은 properties → property 엘레먼트에 추가하면 된다.

 

pom.xml 더블클릭한 우측 하단 끝에 있는 pom.xml 클릭.

 

 

이런 화면이 나오는데, 이제 속성 세팅을 해야 한다. properties 엘레먼트를 만들고 거기에 각각의 버전을 명시하면 차후에 버전 편하게 바꿀 있으리라 생각한다.

 

pom.xml

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <groupId>kr.co.halkrine</groupId>

  <artifactId>webTraining</artifactId>

  <name>webTraining Webapp</name>

  <packaging>war</packaging>

  <version>0.0.1-SNAPSHOT</version>

    <properties>

        <java-version>1.6</java-version>

        <org.springframework-version>3.2.2.RELEASE</org.springframework-version>

        <org.springframework.security-version>3.2.2.RELEASE</org.springframework.security-version>

        <org.apache.tiles-version>2.2.2</org.apache.tiles-version>

        <org.aspectj-version>1.6.10</org.aspectj-version>

        <org.slf4j-version>1.6.6</org.slf4j-version>

        <tiles.version>2.2.2</tiles.version>

    </properties>

      

  <dependencies>

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>3.8.1</version>

      <scope>test</scope>

    </dependency>

      

       <!-- Spring -->

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-webmvc</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-tx</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-jdbc</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-oxm</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-core</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-orm</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-context-support</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-web</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-expression</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-aop</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-aspects</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

        <dependency>

            <groupId>org.springframework</groupId>

            <artifactId>spring-test</artifactId>

            <version>${org.springframework-version}</version>

        </dependency>

          

            <!-- jstl -->

        <dependency>

            <groupId>javax.servlet</groupId>

            <artifactId>jstl</artifactId>

            <version>1.2</version>

        </dependency>

          

          <!-- junit -->

        <dependency>

        <groupId>junit</groupId>

        <artifactId>junit</artifactId>

        <version>3.8.1</version>

        <scope>test</scope>

        </dependency>

          

                 <!-- org.apache.tiles -->

        <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-servlet</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>

          

         <!-- slf4j -->

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-api</artifactId>

            <version>1.5.10</version>

            <scope>runtime</scope>

        </dependency>

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>jcl-over-slf4j</artifactId>

            <version>1.5.10</version>

            <scope>runtime</scope>

        </dependency>

        <dependency>

            <groupId>org.slf4j</groupId>

            <artifactId>slf4j-log4j12</artifactId>

            <version>1.5.10</version>

            <scope>runtime</scope>

        </dependency>

  </dependencies>

    

  <build>

    <finalName>webExerToSpring</finalName>

  </build>

</project>

 

pom 작성을 완료하면 서버에서 관련 jar 파일을 다운로드 받는데, 만약 버전이나 엘레먼트 정보가 다르면 에러가 나니 주의.

 

src → main → webapp → WEB-INF → web.xml 열고 프로젝트 세팅을 해야 한다. web.xml 역할과 세팅 방법은 검색하면 쉽게 나오는 거라 추가 기술할 없을테고, servlet 세팅 context 파라미터는 커스텀했으므로 헷갈리지 않게 기술. , spring listner 기술해야 한다.

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4"

    xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

   

    <display-name>WebTraining</display-name>

    <description> 페이지 개인 구축 연습</description>

   

     <!-- application listener -->

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

      

    <!-- context-param -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>/WEB-INF/config/servlet-context.xml</param-value>

    </context-param>

    <context-param>

        <param-name>ProjectName</param-name>

        <param-value>webTraining</param-value>

    </context-param>

   

     <!-- Servlet Setting -->

    <servlet>

        <servlet-name>appServlet</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

            <param-name>contextConfigLocation</param-name>

            <param-value>/WEB-INF/config/servlet-context.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>appServlet</servlet-name>

        <url-pattern>*.pn</url-pattern>

    </servlet-mapping>

        <servlet-mapping>

        <servlet-name>appServlet</servlet-name>

        <url-pattern>*.err</url-pattern>

    </servlet-mapping>

   

    <!-- Filter Setting -->   

    <filter>

        <filter-name>encodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

            <param-name>encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

        <init-param>

            <param-name>forceEncoding</param-name>

            <param-value>true</param-value>

        </init-param>

    </filter>

      

    <filter-mapping>

      <filter-name>encodingFilter</filter-name>

      <url-pattern>/*</url-pattern>

    </filter-mapping>

   

     <!-- Welcome File -->

    <welcome-file-list>

        <welcome-file>Index.jsp</welcome-file>

    </welcome-file-list>

 

</web-app>

 

tiles 사용하기 위해 config 폴더에 layouts.xml 파일을 생성

 

layouts.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>

 

    <definition name="layouts-tiles" template="/WEB-INF/tiles/Tiles.jsp">

        <put-attribute name="header"    value="/WEB-INF/tiles/HeaderTiles.jsp" />

        <put-attribute name="content"   value="" />

    </definition>

      

    <definition name="*.Tiles" extends="layouts-tiles">

        <put-attribute name="content"   value="/WEB-INF/pages/{1}.jsp" />

    </definition>

    <definition name="*/*.Tiles" extends="layouts-tiles">

        <put-attribute name="content"   value="/WEB-INF/pages/{1}/{2}.jsp" />

    </definition>

    <definition name="*/*/*.Tiles" extends="layouts-tiles">

        <put-attribute name="content"   value="/WEB-INF/pages/{1}/{2}/{3}.jsp" />

    </definition>

    <definition name="*/*/*/*.Tiles" extends="layouts-tiles">

        <put-attribute name="content"   value="/WEB-INF/pages/{1}/{2}/{3}/{4}.jsp" />

    </definition>

</tiles-definitions>

 

content value 값인 이유는 부분에 페이지가 동적으로 들어가기 때문. 원래 footer 만들지만 귀찮으니 header에서 타협.

 

headerTiles 헤더 부분에 들어갈 코드를 넣으면 되고, Tiles.jsp 다음과 같이 작성하면 된다. 주목해야 t 커스텀 태그.

 

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

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="t"%>

<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>

<body>

    <t:insertAttribute name="header" />

    <t:insertAttribute name="content" /> 

</body>

</html>

 

이제 페이지 엑세싱을 위해 ModelAndView 이용하여 mainController 클래스 파일을 작성해본다. ModelAndView 사용한 내가 익숙해서..

 

mainController.java

package kr.co.halkrine.webExerToSpring;

 

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.servlet.ModelAndView;

 

@Controller

@RequestMapping(value="/main.pn")

public class mainController {

protected final Log logger = LogFactory.getLog(mainController.class);

 

@RequestMapping(params ="!command")

public ModelAndView init(HttpServletRequest req, HttpServletResponse rep){

ModelAndView mv = new ModelAndView("/main.Tiles");

return mv;

}

}

 

이제 url 입력하면...

 

 

PROFIT!!!

 

이제 갖고 일만 남았다.

 

 

* 한창 작업 하다가 index.jsp 파일에 뻘건 엑박이 쳐져서 확인해보니

 

 

이건 Build Path → Configure Build Path에서 java 버전을 1.6 이상으로 맞춰주니 자동으로 해결되더라. 아니면 Build Path에서 server runtime 추가하면 .

 

'IT노트 > Maven' 카테고리의 다른 글

Maven 빌드 시 오류.  (0) 2015.03.07
egovframework:dev:dep:build:maven [eGovFrame]  (0) 2015.02.02
MAVEN 핵심 개념 정리 자료  (0) 2015.02.02
Posted by wychoi
,