1. 마우스 오른쪽 버튼 > Build Path > Configure Build Path > Add Library로 추가 (일반적)

 

 

 

 

 

2. Maven 프로젝트의 pom.xml 클릭 > Dependencies로 추가 (Maven project에서만 가능한 기능)

 

 

Add > Select Dependency에서 'Group Id / Artifact Id / Version'을 기입하면 자동으로 받아온다.

 

* Group Id : package 경로

  Artifact Id : 프로젝트 이름

  Version : 버젼

 

이 세가지를 알 수 있는 방법은 메이븐저장소 (https://repo1.maven.org/maven2/)에 들어가서 찾아보고 기입하는 것이 초보자에게는 훨씬 쉬운 방법.

 

* 메이븐저장소 : Java 개발시 필요한 라이브러리(.jar)를 다운 받는 저장소

 

예를 들어, mysql/mysql-connector-java/5.1.38/ 이라는 경로에서는 Group Id : mysql / Artifact Id : mysql-connector-java / Version : 5.1.38이 되는 것.

 

org/mybatis/mybatis/3.3.0/이라면, Group Id : org.mybatis / Artifact Id : mybatis / Version : 3.3.0 가 된다.

 

(생각하기가 힘들다면 순서대로가 아니라 /를 경계로 놓고 Version > Artifact Id > Group Id 순으로 생각하면 쉬워진다)

 

세가지를 기입하고 나서 OK 버튼을 누르면 저장이 되지 않은 상태여서 자동으로 다운로드가 되지 않기 때문에 저장을 해주면 자동으로 다운로드가 된다.

 

많은 연습이 필요한 방법이다.

1. 정의

소프트웨어 디자인 패턴 중 Architectural Patten의 하나.

 

애플리케이션을 크게 세가지 영역으로 구분하고 영역 간의 결합도를 최소화하하기 위해 사용

주로 Web Application에서 사용되는 대표적인 객체 지향 설계

 

 

2. 구성

. 모델 (Modal) => DAO, DTO

데이터를 담거나 데이터베이스로 데이터를 보내는 작업을 하는 객체

어플 상태를 저장하고 있다가 View에서 요청하면 전송한다.

DTO를 통해 상태의 값을 주고받고, 영속 저장(DB)와의 데이터 통신을 위해 DAO를 사용한다.

모델 상태의 변화가 있을 때에는 Controller와 View에 이를 통보한다.

 

. 뷰 (View) => html, Jsp

모델 중 DTO 데이터를 뿌려준다.

렌더링을 하여 실제 사용자에게 보여지는 부분

View에서 사용자 행위를 Controller에 저장하고, 사용자가 볼 결과물 생성을 위해 모델로부터 정보를 얻어온다.

 

. 컨트롤 (Controll) => Servlet

View에 대한 진입점.

특정 결과에 대해 모델에 명령을 보냄으로서 모델의 상태를 변경한다.

 

 

3. 순서

사용자 정보 등록 html 페이지

=> html에서 넘어오는 데이터를 저장하는 DTO 클래스 (.java)

=> 사용자 정보를 관리하는 DBMS의 테이블 생성

=> DTO에서 넘어오는 DB를 실제 DBMS에 저장하는 작업을 처리하는 DAO 클래스 생성

=> 사용자가 html 페이지에 입력한 정보를 DTO에 담아 그것을 DAO 클래스의 관련 메소드에 전송하는 작업을 담당, 그 결과에 따라 서블릿이 이동

=> 성공 / 실패 뷰 페이지 작성

 

 

4. 장점

ㄱ. 유연하고 확장하기 쉽다

뷰와 모델간 간섭을 피하고 컨트롤러가 중간 관리를 하는 역할을 하여 간접소통을 통해 좀 더 유연한 구조를 설계 가능

 

 

5. 단점

ㄱ. 복잡한 구조로 보일 수 있다

ㄴ. Model과 View의 완벽한 분리가 어렵다

* Luna 버전에서는 src/main/java 경로가 잘 만들어지나, Kepler 에서는 src/main/java 경로가 잘 만들어지지 않는다. maven 버전이 낮아서인 듯 하다.

 

 


1. Maven 다운로드

http://maven.apache.org/download.cgi 사이트에 접속해서 Binary zip archive Link 의 .zip 파일을 다운받는다.

 

 

* Binary (바이너리) zip archive : 컴파일이 되어 있는 것. 일반적으로 바이너리 파일을 다운받는다.

   Source zip archive : 컴파일이 되어있지 않은 아카이브(직접 컴파일 해서 써야 하는)이기 때문에 초보자들은 쓰기 어렵다.

 

 


2. 시스템 변수(Path)에 설정

 

 

시스템 > 고급 시스템 설정 > 시스템 변수에 들어가서 MAVEN_HOME과 Path 경로를 바꿔준다. (MAVEN_HOME은 없으면 생성해도 됨)

- MAVEN_HOME : maven 경로 copy & paste

- Path : 기존의 Path 경로 뒤에 %MAVEN_HOME%bin; 을 적는다.

 

 


3. Eclipse Plugin
이클립스에서 Help > Install new Software에서 https://www.eclipse.org/m2e/m2e-downloads.html 주소를 적고 검색하고 나서 아래 http://download.eclipse.org/technology/m2e/releases/1.6/1.6.2.20150902-0002 을 New install로 설치 - Maven Integration for Eclipse (설치되어 있으면 생략)

 

 

* 이클립스 Luna 버전은 Maven이 미리 설치되어 있는 경우가 있다.

   Luna가 설치되어 있는 경로 > Pulgins > maven 폴더가 있는지 확인.

 

 


4. D:\apache-maven-3.3.3\conf\settings.xml 편집
 <localRepository>D:\apache-maven-3.3.3\tools\repository</localRepository>

 

 

@ in Eclipse
 Preference - Maven - User settings -
 D:\apache-maven-3.3.3\conf\settings.xml 변경

 

* 이클립스에서 tools.jar의 경로를 찾을 수 없다는 에러가 뜨는 경우 : Java Path의 경로를 JDK 폴더가 아닌 JRE 폴더로 설정해줬기 때문이다. Path 경로를 JDK 경로로 다시 설정해주면 에러가 해결된다.

 



5. Project 변환 (이 방식 아님 x)
 Project name - configure - Convert to Maven Project...
 pom.xml  생성

 

* pom.xml : 프로젝트의 root에 존재하는 xml 파일 (Project Object Model : 프로젝트 객체 모델)

 

 

 

6. Create a New Maven Project
 Project -> Maven -> Maven Project

 

@ Add Archetype (팝업창)
Archetype Group Id: org.apache.maven.archetypes
Archetype artifact Id: maven-archetype-webapp
Archetype Version: 1.0

OK (click)

 

@ New Maven Project
Group Id: com.jkkang
 Artifact Id: SpringExample(프로젝트이름)
Version: 0.0.1-SNAPSHOT
 Package: com.jkkang    (프로젝트이름은 제거한다)

Finish (click)


 /src/main/java (처음에는 안생김 - Build Path에 Runtime Libarary Tomcat 7.x 추가후에 생김)
 /src/main/resources/
 /src/main/webapp/WEB-INF/web.xml
 /src/test/java (삭제해도 됨)

pom.xml

 

 


7. Mybatis .jar & mysql-connector-java 추가 (via maven)
저장소에서 버전 확인

https://repo1.maven.org/maven2/org/mybatis/mybatis/

https://repo1.maven.org/maven2/org/springframework/spring-context/


 mybatis-3.3.0.jar & mysql-connector-java-5.1.36.jar

 

 <dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.3.0</version>
 </dependency>

 <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.36</version>
 </dependency>

  <properties>
   <org.springframework-version>3.2.15.RELEASE</org.springframework-version>
  </properties>
  <dependencies>
   <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-context</artifactId>
   <version>${org.springframework-version}</version>
   </dependency>
   <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-webmvc</artifactId>
   <version>${org.springframework-version}</version>
   </dependency>
  </dependencies>

 

 import org.springframework.stereotype.Controller;

 


@ Controller

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


@ RequestMapping ("/helloWorld")   이것을 인식시킬려면, spring-webmvc 를 설치해야한다.
설치하면 윗줄 import org.springframework.web.bind.annotation.RequestMapping; auto resolv 가능

 


작성 후 Maven - clean 하고, update project 하면 mybatis-3.3.0.jar가 Libraries 밑에 download된것을 확인

* 자바 플랫폼에서 동적인 웹을 개발할 때 사용하는 기반 기술

* 웹에서 Java 프로그래밍을 할 수 있음

* 사용자의 요청을 받아 요청한대로 처리해주는 일을 한 후 처리 결과를 응답자에게 응답해줌

 

 

 

1. 사용자의 URL 요청

어떤 사용자의 URL 요청이 서블릿 요청이라는 걸 웹서버가 알기 위해서는 사전에 웹서버 측에 URL과 서블릿 클래스를 미리 mapping시켜 놓은 배포 서술자(웹 서버가 알아채라고 적은 파일들 (ex. web.xml)) 가 필요하다.

 

 

2. request, response 생성(객체)

웹 컨테이너는 지금 받은 요청을 처리하기 위해 HTTP 요청(request)을 처리하기 위한 request 객체와 HTTP 응답(response) 처리를 위한 response 객체 생성

 

 

3. 서블릿 인스턴스와 스레드 생성

request, response 객체를 생성한 뒤 사용자의 URL 요청이 어떤 서블릿 클래스 필요로 하는지 배포 서술자를 통해 알아낸다

만일 그 클래스가 한번도 실행되지 않았거나 현재 메모리에 생성된 인스턴스가 없다면 새로 생성하고 int() 메소드를 실행하여 초기화한 뒤 스레드를 하나 생성한다.

 

 

4. service() 메소드 호출과 서블릿 클래스 실행

스레드만 생성되면 각 스레드에서 service() 메소드가 호출된다

service() 메소드가 호출되면 HTTP 방식이 get일 경우 doGet(), post일 경우 doPost()가 request나 response를 자동으로 호출한다.

 

 

5. 응답과 스레드의 소멸

doGet() 또는 doPost() 메소드가 호출되어 사용자 요청에 따른 동적인 웹페이지를 생성하면, 그 결과물이 담긴 response 객체를 웹 컨테이너가 response 형태로 바꿔 서버에 전송한다. 그리고 사용이 끝난 request, response 객체를 소멸시키고 스레드가 종료된다.

'BackEnd > Java' 카테고리의 다른 글

Jsp :: MVC Model  (0) 2016.01.22
Maven :: Eclipse Luna + SpringFramework 3.2.15 + Maven Project 설치  (0) 2016.01.22
Java :: JDK와 JRE  (0) 2016.01.20
Java :: 이클립스 없이 cmd 창으로 컴파일 하기  (2) 2016.01.20
JAVA :: JRE 오류  (0) 2016.01.15

MySql을 쓰기 위해서는 현재 사용하고 있는 이클립스에서(이클립스를 사용하고 있다면) 연동을 시켜줘야 한다.

 

 

 

 

1. MySql 사이트( www.mysql.com ) 접속 > Downloads > Community(오픈소스) > MySql Connectors > Download Connector/J > Platform Independent 다운로드한다.

 

 

 

 

 

2. 다운로드한 .zip 파일의 압축을 풀어준다.

 

* .tar : 리눅스 압축 포맷

* .zip : 윈도우 압축 포맷

* 보통 압축을 풀 때에는 c:\temp 파일 안에 풀어놓는다고 함

 

 

 

 

 

 

3. connector 압축 파일에 있는 connector.jar 파일만 Java7 > lib으로 이동시키고 나머지 connector 압축 파일은 삭제해도 된다 

 

 

 

4. 이클립스 console 창의 Data Source Explorer 오른쪽 마우스 버튼 > New 클릭

 

 

 

 

 

5. MySql > Next 클릭

 

 

 

 

6. MySQL JDBC Driver 오른쪽에 동그라미로 된 플러스 버튼을 누르면 Name/Type이 뜬다. 거기서 자신에게 맞는 드라이버를 클릭한다.

 

 

 

 

7. JAR List 목록에서 원래의 드라이버 파일이 없다면 Add Jar/Zip 버튼을 클릭하여 Java7\lib 폴더에 있었던 connector.jar를 추가하고, 이미 있다면 remove한 뒤 다시 추가한다.

 

 

8. URL과 User name, Password 부분은 mybatis 프레임워크에서 mapping을 하는 파일인 config.xml에 들어갈 데이터베이스 정보와 똑같이 적어야 한다.

   적은 뒤 바로 Finish를 누르지 말고 Test Connection 버튼을 눌러 연결이 원활한지 체크해볼 것.

1. JDK (Java Develop Kit)

자바 개발 도구

오라클 사이트(http://www.oracle.com/)에서 다운로드 가능

자바로 개발하는 개발자들이 설치하는 개발 환경

자바를 이용한 프로그래밍을 할 때 필요한 툴, 패키지, 컴파일러(javac.exe, debugging, jar etc..) 와 같은 것들이 설치된다.

JDK는 JRE를 포함하고 있기 때문에 컴퓨터 내에 JRE가 없을 때에는 JDK만 다운로드 하여도 무방하다.

 

 

javac 

 컴파일러

java

 인터프리터

appleviewer 

 애플릿 실행기

 javah

 헤더파일 생성기

 jar

 java용 압축 프로그램, 배포용

 javap

 역어셈블러

 

<JDK에 포함되어는 tool의 일부>

 

 

 

컴퓨터 내에 기본적으로 탑재되어 있는 JRE와의 혼란을 피하기 위해 C드라이브에 Java7이라는 폴더를 따로 만들어 JDK를 다운로드 하였다.

JDK 내에 JRE가 원래 포함되어 있기 때문에 jre 폴더가 있는 모습.

 

 

 

JDK를 설치한 후 제어판 > 시스템 > 고급 시스템 설정 > 고급 > 환경변수에서 Path 부분의 원래 경로 뒤에 JDK 폴더 경로를 그대로 copy & paste한다.

 

 

* 이클립스 설치 전 JDK를 다운로드 한 후 JDK가 잘 다운로드 되었는지, path 위치는 잘 지정했는지 확인하고 싶을 때에는 cmd 창에서 컴파일을 해보면 된다.

 

 

2. JRE (Java Runtime Environment)

컴파일된 자바 프로그램을 실행시켜주는 도구

자바 실행 도구는 가지고 있지만(java.exe, library) 자바 개발 툴은 가지고 있지 않음

개발된 자바 프로그램을 실행만 하면 되는 평범한 일반 사용자들이 설치하는 환경

컴퓨터에 이미 설치되어 있기 때문에 설치할 필요가 없으나 JRE가 없을 때에는 사이트에서 JRE만 따로 다운로드가 가능

 

 

 

컴퓨터 C드라이브 내에서 Program Files 폴더를 보면 Java라는 폴더에 JRE가 자동으로 위치하여 있다.

(jre7이라고 적혀있는 이유는 자바 표준 버전이 JAVA7이기 때문)

보통은 자바 개발을 할 때 이클립스 등 개발 도구를 가지고 많이 개발을 하는데, 개발 도구 없이 cmd 창으로 컴파일 하는 법을 포스팅.

 

 

1. 컴파일할 소스 코드를 메모장에 적고 C드라이브에 'AAA'라는 폴더를 만들어 .java 파일로 저장

 

 

2. cmd > HelloWorldMain.java 파일이 있는 AAA 폴더로 이동

 

* cd.. : 상위 폴더로 이동 (cd : change directory)

  cd : 하위 폴더로 이동

  dir : 디렉토리 조회

 

 

3. HelloWorldMain.java 파일을 컴파일

 

AAA 폴더에서 HelloWorldMain.class 파일이 생성된걸 확인할 수 있다. (컴파일됨)

 

* javac 파일명.java : 자바 파일 컴파일

       자바 개발 도구인 JDK에서 컴파일을 담당하는 파일이 javac.exe이기 때문

  자바 파일명 뒤에는 .class 확장자가 생략되어 있음

 

 

4. 컴파일된 HelloWorldMain을 출력 

 

 

* java 컴파일된파일명 : 컴파일된 자바 실행 도구인 JRE에서 실행을 담당하는 파일이 java.exe이기 때문

'BackEnd > Java' 카테고리의 다른 글

Java :: Servelet (서블릿)  (0) 2016.01.21
Java :: JDK와 JRE  (0) 2016.01.20
JAVA :: JRE 오류  (0) 2016.01.15
Maven :: 정의  (0) 2016.01.15
JAVA :: 명명 관례  (0) 2016.01.15

- 특정 레코드에 대한 조건을 설정

  (ex. where id = 1 은 id가 1인 레코드)

 

* where 컬럼명 <> 값 : ~이 아닌 나머지

* 여러 조건식을 포현할 경우는 AND나 OR로 연결

 (WHERE A AND B : 두 조건 동시 만족 / WHERE A OR B : 두 조건중 하나만이라도 만족시)

 

1. LIKE

- 해당 패턴에 포함되는 레코드들(ex. 문자열, 날짜, 시간 etc) 선별시 사용

 (ex. SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '%특정문자열%';) => WHERE 컬럼에서 %특정문자열%이 포함된 SELECT 컬럼을 FROM 테이블에서 출력

ㄱ. %특정문자열% : 특정 문자열이 포함된

ㄴ. %특정문자열 : 특정 문자열로 끝나는

ㄷ. 특정문자열% : 특정 문자열로 시작하는

 

- 응용 : SELECT * FROM project WHERE address LIKE '서울시%' ORDER BY name DESC;

=> project 테이블 address에서 '서울시'로 시작하는 name 컬럼을 오름차순으로 정렬

 

와일드카드

 내용

 %

 문자가 0개 이상인 문자열

 _

 단일 문자

 []

 지정 범위(ex. [ㄱ-ㄷ])나 집합(ex.[ㄱㄴㄷㄹㅁ])에 속하는 한 개의 문자

 [^]

 지정 범위(ex. [^ㄱ-ㄷ])나 집합(ex.[^ㄱㄴㄷㄹㅁ])에 속하지 않는 한 개의 문자

 

2. IN

- 해당 컬럼이 어떤 값들의 집합에 속할 경우

(ex. WHERE city IN ('seoul', 'pusan', 'jeju') => city가 서울, 부산, 제주일 경우

 

3. BETWEEN

- 컬럼 값이 BETWEEN ~ AND 범위값 안에 들 경우

(ex. WHERE a BETWEEN 80 AND 90) => 컬럼 a의 범위값이 80이상 90 이하의 경우

 

4. IS NULL

- 컬럼값이 NULL인 경우를 체크하기 위해

- 반대 : IS NOT NULL

 

 

 

폴더들을 정리한 후 다시 공부를 하려 하는데 갑자기 모든 프로젝트 파일들 옆에 빨간색 느낌표들이 떴다.

JAVA7 파일 일부를 날려먹었다. 처음에는 왜 폴더 옆에 빨간색 느낌표가 떴는지도 이해하지 못했으나 구글링을 해보고 나서 라이브러리 문제라는 것을 파악했다.

 

 

 

JRE 라이브러리의 일부가 삭제된 것. 멘붕.

자바 책을 펼치고 꼼꼼히 읽어보았다.

 

* JRE (Java Runtime Environment) : 대부분의 컴퓨터에 설치되어 있음

                JRE만 따로 다운로드 가능

                bin 디렉터리 밑에 자바 클래스 파일을 해석하고 실행하는데 필요한 소프트웨어를 두고, lib 밑에는 호출하여 실행할 수 있도록 컴파틸 한 자바 API 라이브러리를 두고 있음

 

* Java API : 오라클사에서 제공하는 것으로 주요한 기능들을 미리 구현할 클래스 라이브러리로 묶어놓은 패키지

      개발자는 자바 API로부터 필요한 클래스가 속한 패키지만 import하여 사용하면 됨

 

 

그리하여, 오라클 사이트에 들어가서 (http://www.oracle.com/) Downloads > Java for Developers > Jave SE

화면에서

 

 

스크롤을 맨 아래로 내리고 나서 Java Archive 다운로드 버튼 클릭

 

 

 

나는 Java 7 버젼이었으니 Java SE 7 다운로드를 했다.

 

 

 

JRE 폴더의 파일들을 copy & paste 하고 이클립스를 refresh 해보니 다시 정상적으로 폴더 옆의 빨간색 느낌표가 사라졌다.

또한 [제어판] - [시스템] - [PATH] 에서 경로를 다시 설정해줘야 한다.

'BackEnd > Java' 카테고리의 다른 글

Java :: JDK와 JRE  (0) 2016.01.20
Java :: 이클립스 없이 cmd 창으로 컴파일 하기  (2) 2016.01.20
Maven :: 정의  (0) 2016.01.15
JAVA :: 명명 관례  (0) 2016.01.15
Java 컴파일 & jar 만들기 & Java 실행  (0) 2016.01.15

maven.zip

 

1. 정의

- 프로젝트 관리 도구

- 여러 프로젝트에서 공통으로 사용하는 라이브러리 프로젝트를 만들어서 참조

 

 

2. 목적

- 개발자가 짧은 기간에 개발의 전체 상태를 이해할 수 있도록 함

 

 

3. 장점

- 뛰어난 의존성 관리 (저장소를 통한 라이브러리 일괄 관리)

- 쉽게 작성 가능한 플러그인을 통한 확장성

- 동시에 다수 프로젝트를 핸들링할 수 있는 쉬운 설정 기반의 매커니즘

- 간단한 설정을 통한 배포 관리

- Java, C++ 등 다수의 프로그래밍 언어를 지원

 

 

4. 단점

- 모든 내용이 pom.xml 파일에 담기므로 내용이 장황해질 수 있음

- Maven 프로젝트 특성상 소프트웨어 빌드에 통용되는 라이프사이클을 제공하고, 세부 분야나 특화된 빌드 환경에 대한 지원이 미약

 

 

5. 기능

- 라이브러리 관리 기능 (이클립스에 기본 탑재)

- 빌드 기능

 

* Maven 예시 참고 페이지 : http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

'BackEnd > Java' 카테고리의 다른 글

Java :: 이클립스 없이 cmd 창으로 컴파일 하기  (2) 2016.01.20
JAVA :: JRE 오류  (0) 2016.01.15
JAVA :: 명명 관례  (0) 2016.01.15
Java 컴파일 & jar 만들기 & Java 실행  (0) 2016.01.15
Java :: log4sql 과 log4jdbc  (0) 2016.01.14

+ Recent posts