프로그래밍 2017. 2. 8. 00:50

게시판 만들기 - 스프링 프로젝트 생성


스프링 프로젝트 생성

이클립스 화면 왼쪽의 Project Explorer 창에서 마우스 오른쪽 버튼 클릭 --> New --> Project --> Spring --> Spring Legacy Project 선택 --> [Next] 버튼 클릭



Project name(myapp)을 입력하고, Templates를 "Spring MVC Project"로 선택 후 [Next] 버튼 클릭



Spring MVC Project에 필요한 것을 다운로드 할거냐? 라고 묻고있네요!

당연히 "Yes"를 선택합니다.



Top-Level package name을 입력하라고 하네요...

저는 아래와 같이 입력했습니다.(com.devdic.board)



이클립스가 프로젝트를 잘 만들고 있게죠? 믿고 기다리면 아래와 같은 웹 애플리케이션 구조를 가진 프로젝트가 하나 만들어지면 성공입니다^^



그리고 Local Repository로 설정한 경로에 스프링 프로젝트를 위한 각종 라이브러리가 다운로드 된것을 확인할 수 있습니다.



이제 Hello World 화면을 보기위한 마지막 단계인 Server를 추가해볼게요!


이클립스 화면 아래쪽에 보시면 아래 그림과 같은 여러개의 탭이 보일겁니다.

여러개의 탭중에 [Servers] 탭을 선택하시고, 아래의 create a new server...를 클릭하세요!



다음 그림과 같은 Tomcat 버전을 선택할 수 있는 창이 띄워집니다.

그러면 자신이 설치한 Tomcat 버전을 선택(저는 Tomcat v8.0을 선택)

그리고 [Next] 버튼을 클릭!



현재 생성된 웹 애플리케이션 목록이 왼쪽(Available)에 표시가 될겁니다.

tomcat에 추가할 웹 애플리케이션을 선택한 후 [Add] 버튼 클릭하면...

선택한 웹 애플리케이션이 오른쪽(Configured)으로 이동이 됩니다.

그리고 나서 역시 [Finish] 버튼을 클릭하면 tomcat(Web Server + WAS) 생성 및 웹 애플리케이션 추가가 완료됩니다.



Hellow World 화면을 만나기 전에 마직마으로 하나만 점검하고 넘어가죠~~


server.xml의 Context 설정과 web.xml의 Servlet 설정을 확인해야지만 어떤 URL로 호출하면 "Hello World" 화면을 만날 수 있는 지 알수가 있습니다.


1
2
<Context docBase="myapp" path="/board" reloadable="true" source="org.eclipse.jst.jee.server:myapp"/>
 
cs

[server.xml]


그리고 myapp 프로젝트 하위에 src > main >webapp > WEB-INF > web.xml의 Servlet 설정을 확인해보죠!


서블릿에 설정에 대한 설명을 [웹 환경의 이해1][웹 환경의 이해2]를 참고하세요!

여기서 확인할 내용은 <url-pattern> 부분입니다.

url-pattern의 설정은 여러가지 방법으로 할 수 있는데요..

확장자로 매핑하는 [*.do(확장자 지정)]  또는 모든 URL을 매핑하는[/*] 등의 패턴으로 설정할 수 있습니다.

여기서는 스프링 프로젝트를 생성하면 default로 설정된 [/]로 일단 처리하겠습니다.

 

"/"의 의미는 default servlet으로 처리된다는 말이다. 즉, tomcat에 미리 정의된 servlet mapping(*.jsp 및 *.jspx)을 통과한 URL을 처리하게 된다. 하지만, 스프링의 DispatcherServlet을 사용하면 정적 리소스 즉, jpg, png 등의 URL 호출 시 404 에러가 발생합니다. <mvc:default-servlet-handler /> 설정으로 해결하면 됩니다. 


일단 여기까지만 알고 빨리 Hello World 화면을 만나러 가죠~~~


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    <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/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
        
    <servlet-mapping>
        <servlet-name>appServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
 
cs


스프링 프로젝트 생성 시 기본으로 생성된 HomeController의 내용입니다.

확인할 부분은 @RequestMapping(요청URL과의 매핑) 부분입니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Controller
public class HomeController {
    
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
    
    /**
     * Simply selects the home view to render by returning its name.
     */
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home(Locale locale, Model model) {
        logger.info("Welcome home! The client locale is {}.", locale);
        
        Date date = new Date();
        DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
        
        String formattedDate = dateFormat.format(date);
        
        model.addAttribute("serverTime", formattedDate );
        
        return "home";
    }
}
 
cs


위의 내용들을 종합해보면...

http://[IP Address][:PORT]/board로 시작되는 요청 URL은 myapp 웹 애플리케이션에서 처리하며, 요청을 처리하기 위한 Servlet을 찾기 위해 web.xml의 서블릿 설정을 확인 후 DispatcherServlet으로 요청정보를 전달하고 DispatcherServlet은 요청 URL과 매핑되는 Controller를 찾아 해당 메서드를 수행한다.


이클립스 화면 아래쪽에 추가된 tomcat 서버 마우스 우클릭하시면 아래와 같은 메뉴 창이 띄워집니다. 그러면 묻지도 말고 start 클릭!!!



서버가 start가 오류없이 성공했으면, 웹 브라우저를 열고 주소창에...

http://localhost:8080/board라고 치면 보고자 했던 Hello World 화면이 보여집니다.



이제 드디어 게시판(공지사항)을 만들 수 있는 준비는 완료되었습니다.


다음 시간부터는 본격적인 개발(코딩)을 시작하겠습니다.

posted by 생각퍼즐
:
프로그래밍 2017. 2. 7. 21:41

이클립스 환경설정 및 플러그인 설치


[웹 환경의 이해1]와 [웹 환경의 이해2]에서 집중적으로 다루었던 Application Tier에 필요한 SW(JDK, WAS)와 IDE 툴(Eclipse)를 설치했습니다.


본격적인 개발에 앞서 이클립스 환경설정과 각종 플러그인을 설치하도록 하겠습니다.


1. Encoding 설정


개발을 완료한 후에 인코딩을 변경하면 한글이 깨지는 등 예상치 못한 문제가 발생하므로 개발전에 인코딩을 설정하고 시작하는게 좋습니다.


인코딩은 다국어를 지원하는 "UTF-8"로 설정을 하는 방법을 설명드리겠습니다.


eclipse.ini 파일 수정

 - 이클립스가 설치된 폴더 아래의 eclipse.ini 파일에 아래와 같이 옵션을 추가합니다.



eclipse.exe를 실행하여 상단 메뉴의 

Window --> Preferences --> General --> Workspace 클릭

Text file encoding 부분의 Default 값이 UTF-8로 설정된 것을 확인할 수 있습니다.

eclipse.ini 파일의 옵션을 추가하지 않으면, MS949로 되어 있습니다.




WEB 및 XML 인코딩 설정

위의 Workspace 단위의 기본 인코딩 값을 확인 했으면

Window --> Preferences --> Web 하위의 CSS Files, HTML Files, JSP Files 

Window --> Preferences --> XML 하위의 XML Files 의 인코딩을 UTF-8로 설정합니다.

Apply --> OK로 마무리!!!



Workspace 단위로 파일의 인코딩을 UTF-8로 설정했는데...

위의 항목에 대한 인코딩을 UTF-8로 설정(확인)하는 이유는 JSP, HTML 등 위에서 언급한 파일들은 페이지 내에서 ecoding 정보를 설정할 수 있게 때문입니다.


아래의 소스코드는 이클립스에 설정된 JSP Template 입니다.

Window --> Preferences --> Web --> JSP Files 항목에 설정된 encoding 정보가 아래 소스코드의 ${encoding} 변수의 값으로 사용됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=${encoding}"
    pageEncoding="${encoding}"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=${encoding}">
<title>Insert title here</title>
</head>
<body>
${cursor}
</body>
</html>
cs

 



2. JRE 설정(확인)

JDK를 성공적으로 잘 설치했으면, 아래의 그럼처럼 default JRE가 설정되어 있겠죠~

다른경로의 JRE를 사용하고 싶으시면, [Edit] 버튼을 클릭하셔서 JRE Home의 경로를 설정하시면 됩니다.





3. Tomcat 연동


Web Server와 Web Application Server(WAS) 역할을 수행할 Tomcat을 아래의 그럼처럼 이클립스와 연동을 합니다.

Window --> Preferences --> Server --> Runtime Environments 클릭

Tomcat directory를 자신이 설치한 경로로 설정합니다.



web application을 생성한 후에 서버를 추가하는 방법을 설명하겠습니다.


3. 플러그인 설치 : STS(Spring Tool Suite)


상단 메뉴의 Help --> Eclipse Marketplace 클릭하여 검색창에 "STS" 입력 후 Enter

[Install] 버튼을 클릭하여 설치 시작....



설치목록을 선택한다. (설치시간을 참을 수 있다면 그냥 All Select^^)



설치하시려면 무조건 동의해야 겠죠~~



설치시작...



설치가 완료되면 이클립스를 다시 시작 할까요?라고 물으면 "Yes" 선택

 


이클립스가 자동으로 다시 시작되고...

STS가 성공적으로 설치되었는지 확인을 하자! Welcome 페이지를 닫고...


이클립스 화면 왼쪽의 Project Explorer 창에서 마우스 오른쪽 버튼 클릭 --> New --> Project 선택하시면, 그동안 보이지 않았던 "Spring"이란 폴더가 생겼습니다.

그럼 STS 설치에 성공하신 겁니다~~~




4. maven 설정


이클립스 neon은 maven 플러그인이 설치된 상태로 배포되므로 따로 플로그인을 설치할 필요는 없습니다.


다만, 모든 환경구성 파일을 한 곳에서 관리한다는 정책을 지키기 위해 maven Repository를 devdic 하위로 설정하기 위한 설명을 하겠습니다.

별도로 설정하지 않으면, 사용자 > .m2 > repository입니다.


먼저 devdic 하위에 maven --> Repository 폴더를 생성합니다.



그리고 maven 폴더에 settings.xml 파일을 하나 만들고 아래의 내용을 추가합니다.

localRepository 부분의 경로는 자신의 폴더 구성에 맞게 수정하시면 됩니다.


1
2
3
4
5
6
7
8
9
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
 
  <localRepository>C:/devdic/maven/Repository</localRepository>
 
</settings>
 
cs


이클립스 상단 메뉴 Window --> Preferences --> Maven --> User Settings 선택

settings.xml 파일이 위치를 변경하고 [Update Settings] 버튼 클릭

마무리 아시죠? Apply --> OK~~~

그리고 settings.xml에 정의한Local Repository가 제대로 설정되었는지 확인한다.

참고로 Local Repository는 프로젝트 수행에 필요한 라이브러리 파일을 저장하는 곳입니다.




4. ETC 플로그인 및 Util


- SVN : 소스형상관리

- maven : 빌드 및 의존성 관리(이클립스 neon은 설치되어 있음)

- jQuery : 게시판(공지사항) 프로젝트를 진행하면서 필요할 때 설치방법 설명

- JSDT jQuery : jQuery 자동완성

- properties editor : 프로퍼티 파일 편집기

- notepadd++ : 개발자에게 필요한 울트라 에디터 및 에디터 플러스와 유사한 기능을 제                       공하는 프리웨어 에디터입니다.

시스템 개발 및 이클립스 사용에 필요한 플러그인이 많으며, 필요에 따라서 설치하면 되고, 여기서는 필요가 없어서 생략합니다.


그럼 이제 Spring 프로젝트 하나를 만들어 보시죠~~ GO!GO!GO!


posted by 생각퍼즐
:
데이터베이스 2017. 2. 2. 00:43

PIVOT과 UNPIVOT


출력 데이터를 열 --> 행으로 또는 행 --> 열로 변환하기 위해 오라클 11g 이전 버전에서는 decode(CASE구분)을 사용해 해결하였으나, SQL의 가독성 및 성능에 문제점이 있었습니다. 그래서 오라클 11g 에서는 PIVOT/UNPIVOT이라는 기능을 지원하여 보다 쉽게 데이터를 가공할 수 있게 되었습니다. 


사용 사례를 보면서 PIVOT과 UNPIVOT의 기능을 알아보겠습니다.


1. PIVOT(열 --> 행)


오라클에 기본적으로 설치된 SCOTT계정의 "SALGRADE" 라는 테이블을 사용해 설명하겠습니다.

PIVOT 기능을 적용할 데이터는 아래 그림과 같습니다.


   

[PIVOT 적용전 데이터]


PIVOT 기능을 적용하여 열로(LOSAL 값) 된 데이터를 행으로 변환

SYNTAX

PIVOT (집계함수([행의로 변환할 칼럼]) FOR [칼럼명으로 사용될 칼럼] IN ( 칼럼명으로 사용될 칼럼의 값, ...))

1
2
3
4
5
WITH PIVOT_TEST AS (SELECT LOSAL, GRADE
                      FROM SALGRADE)
SELECT *
  FROM PIVOT_TEST
  PIVOT (SUM(LOSAL) FOR GRADE IN (1 AS G1,2 AS G2,3 AS G3,4 AS G4,5 AS G5))
cs

 


2. UNPIVOT(행 --> 열)

위에서 PIVOT 기능을 이용해 열 --> 행으로 변환된 데이터를 UNPIVOT 기능을 사용해 원래되로 다시 변환해 보겠습니다.



1
2
3
4
5
6
7
8
9
10
11
WITH PIVOT_TEST AS (
SELECT LOSAL
     , GRADE
  FROM SALGRADE )
, UNPIVOT_TEST AS ( 
SELECT *
  FROM PIVOT_TEST
  PIVOT ( SUM(LOSAL) FOR GRADE IN (1 AS G1,2 AS G2,3 AS G3,4 AS G4,5 AS G5)))
SELECT *
  FROM UNPIVOT_TEST
UNPIVOT ( LOSAL FOR GRADE IN ( G1 AS 1, G2 AS 2, G3 AS 3, G4 AS 4, G5 AS 5 ))
cs


이론적으로 좀 더 깊게 알고 싶으시면 여기를 참조하세요!

'데이터베이스' 카테고리의 다른 글

오라클 권한 조회  (0) 2017.06.28
오라클 계정과 권한  (0) 2017.06.23
오라클 TABLESPACE와 DATAFILE  (0) 2017.06.16
TIMESTAMP 연산  (0) 2017.05.11
오라클의 동적 PL SQL 작성 - EXECUTE IMMEDIATE  (0) 2017.01.24
posted by 생각퍼즐
: