일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- exit code = -805306369
- NestJS
- 서브라임 텍스트
- PG-Strom
- Java
- tomcat
- BRIN
- PostgreSQL
- Windows 10
- Maven Project
- OGM
- orioledb
- typeorm
- tortoise SVN
- Can't load AMD 64-bit .dll on a IA 32-bit platform
- MariaDB
- Eclipse
- graph database
- JSP
- maven
- NextJs
- Spring
- HTML Special Entity
- springboot
- HTML Code
- Next.js
- Spring Boot
- loadcomplete
- Spring Cloud
- STS
- Today
- Total
Undergoing
[Maven+Spring] Eclipse Web Project 생성 1 - new project 생성 본문
[Maven+Spring] Eclipse Web Project 생성 1 - new project 생성
Halkrine 2014. 6. 12. 19:06만들어진 웹 템플릿에 익숙해지면 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을 추가하면 됨.
'개발 > Web Development' 카테고리의 다른 글
[Spring] @ResponseBody 리턴 시 한글 깨짐 문제 (1) | 2014.11.26 |
---|---|
HTML Special Entity Code (0) | 2014.08.29 |
[Struts2] 취약점 관련 Struts 2.3.15.1로 라이브러리 변경 (3) | 2013.07.19 |
[Spring MVC/Tomcat] Tomcat 재기동시 페이지 접근 에러 발생 (0) | 2012.11.06 |
[struts] xml에 있는 값 불러오기 (0) | 2012.08.31 |