자바 초보들이 알아야 할 기본 개념!

반복문(while)
반복문이란? 어떠한 일을 반복해서 해주는 것이다.


while 문은
while(조건) {
실행할 로직
}
형식으로 생각하면 된다.


dowhile 문은
do {
실행할 로직
}while(조건)
형식으로 생각하면 된다.

while, doWhile 문의 차이는?
조건을 먼저 보고 할지 or 먼저 하고 조건을 볼지 차이가 있다.

while 문은 선평가 후 실행이고
dowhile 문은 선실행 후 평가이다.

아래의 코드를 보면 
while 문은 조건부터 확인하기에 아예 작동을 하지 않는다.
dowhile 문은 실행 후 조건을 확인하기에 숫자가 1이 증가함을 알 수 있다.



자바 초보들이 알아야 할 기본 개념!

반복문(for)
반복문이란? 어떠한 일을 반복해서 해주는 것이다.

미지수를 정한 후 정해진 수가 어디부터 어디까지 될 때까지란 조건으로 사용한다.
ex) 시작할 수를 0으로 정한 후 1씩 증가시키고 10일 때 종료한다.
for 문은 
for(조건) {
실행할 로직
}
의 형식으로 작성하면 된다.

조건에 들어가는 형식은
int x =  0; x < 10; x++ 형식으로 작성할 수 있다.
int x =  0;은 시작할 수를 설정하는 것이고 또
 x < 10;는 종료되는 조건을 설정하는 것고 또
x++은 x를 1씩 증가시킨다는 조건을 말한다.

반복문 for 문의 사용방법은 아래 코드로 표현하였다.
1. 변수를 증가시키며 반복하기.
2. 변수를 감소시키며 반복하기.
3. 반복문 작동 중 특정 숫자에 종료하기.



프레임워크 개념


1.sw 재사용성

2.디자인패턴 프레임워크란? 둘의 관련성

3.프레임워크 구성요소 종류


재사용 방법

copy & paste

가장 기본적인 방법이다.

ex)날짜 형태 지정 java

a클래스에 있는 코드를  b클래스에서 사용하기위해 복사 붙여넣기한다.

문제점- jdk가 바뀐다면? 코드가 있는 모든 클래스에 영향이가게된다.


method function(메소드호출)

a클래스에있던 코드를 메소드를 생성하여 집어넣는다.

클래스이름.메소드로 사용가능하다.

(호출하는쪽에는 영향이안감)


문제점 - MethodSignature(메소드명, 리턴타입, 아큐먼트 갯수,타입등)

복사 붙여넣기보단 진보된 방식이지만 작업영역간 결합도 문제 존재한다.


Class

메소드를 클래스 내부에 구현해서 만들어놓은것이다.

메소드를 구성해놓은 클래스를 상속한다.

자식 클래스에서 사용한다.

메서드방식보단 개선된 방식이다.


문제점 - signature 문제는 그대로있다.


AoP(관심의 분리)

- OOP를 supprt해주는 개념

- C에서도 사용가능

*관심사 분리

주제:은행

횡단관심모듈(기능적 로직)

ex)보안,로깅

핵심관심모듈(비지니스로직)

ex)계좌이체,입출금,이자계산

위빙 : 핵심관심모듈에서 횡단관심모듈을 직접 호출하지 않음(프레임워크에서 해줌)


AoP란?(간단설명)

간단하게말해, 계좌이체를 하게될때 로그를 남기게되는데 

코드상에서 직접호출하지 않고 프레임워크에서 처리해준다.







디자인패턴과 프레임워크의 관련성

디자인패턴의 정의

프로그램개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나이다.

개발과정에 발견된 Know_how를 축적하여 이름붙인다.

재사용하기 쉽게 특정 규약을 묶어서 정리한것.

대표적인 디자인패턴(GOF)에서 23가지 지원한다.


디자인패턴 사용하는 이유

- 요구사항 변경에따른 소스코드변경 최소화

- 팀 프로젝트시 범용적인 코딩 스타일적용

- 인수인계시 직관적인 코드 사용


프레임워크의 정의

- 비기능적(Non-Funtional) 요구사항(성능,보안,로깅,확장성,안정성등)을 만족하는 구조와

구현된 기능을 안정적으로 실행하도록 제어해주는 잘만들어진 구조의 라이브러리 덩어리

또 애플리케이션들의 최소한의 공통점을 찾아 하부 구조를 제공함.

- 개발자들이 시스템 하부구조 구현하는데 들어갈 노력을 절감해준다.


프레임워크를 사용하는이유

비기능적인 요소(보안,로깅) 초기개발단계마다 구현해야하는 불합리함 극복할수있다.

- 기능적인 요구에만 집중(비지니스로직)하면된다.

- 반복적으로 발견되는 문제를 해결하기위한 특화된 Solution이다.



디자인패턴과 프레임워크의 관련성

- 디자인패턴은 프레임워크의 핵심적인 특징(프레임워크내부에 디자인패턴 적용해서 사용)이 있다.

- 프레임워크를 디자인패턴이라고는 하지못함. 디자인패턴을 사용하고있는 것이다.

- 프레임워크는 디자인 패턴과함께 패턴이 적용된 라이브러리를 제공한다.


프레임워크가 내부적으로 디자인패턴사용한다.

프레임워크를 사용하면 녹아들어가있는 디자인패턴을 사용하게된다.






프레임워크의 구성요소와 종류

Ioc(제어의 역전)

ClassLibrary

Design Patterm


IOC(제어의 역전)

- 인스턴스 생성 부터 소멸이 컨테이너가 처리(개발자가 안함)한다.

- 프레임워크한테 권한을 넘김으로써 개발자 코드가 신경쓸 부분을 줄여준다.

차이점


프레임워크(IOC적용) 사용할때

 라이브러리 사용할때

 프레임워크가 개발자가 작성한 코드를 호출

 개발자가 라이브러리 호출(스트링유틸사용시)


주도권이 프레임워크가 가지고있음(제어의 역전)

Spring 컨테이너가 IOC지원함.

-메타데이터(XML설정)를 통해 beans를 관리하고 어플리케이션의 중요부분을 형상한다.

bean들을 의존성 주입을 통해IoC지원한다.


ClassLibrary

특정 부분의 기술적인 구현을 라이브러리 형태로 제공(반제품) 기본적인 뒷단을 구성되어있다.

프레임워크코드가 유저코드를 호출(이게 제어역전)한다.





디자인패턴

디자인 패턴 + 라이브러리 = 프레임워크

프레임워크 사용시 라이브러리의 디자인패턴을 보면 구성을 이해하기쉽다.

커스터마이징할때도 디자인패턴의 이해가 필요하다.


'개발 소발 > 개발 Spring' 카테고리의 다른 글

AOP란? AOP 기초개념  (0) 2020.07.09
Spring IoC(Inversion of Control),Bean,의존성주입이란?  (0) 2020.07.08
SpringMVC란?  (0) 2018.01.11
MVC패턴이란?  (0) 2018.01.11
Mybatis Mapper 인터페이스란?  (0) 2018.01.11

String 개념

String문자는 ""를 사용해 만들어진다.



위처럼 text란 String을 만들게되면 문자란 값을 상수저장소(Constant pool)에 저장한다.


동일한 "문자" 라는 문자열을 생성할경우


위에 말했듯이 String text를 생성할때 상수저장소에 저장하게되는데

text2가 만들어질때 상수저장소를 확인하고 "문자"가 있을경우 그 참조한 값을 반환한다.

text,text2 참조값은 같다.

그러므로 text와 text2는 같다.


상수저장소란?

- String객체를 저장하는 메모리 구역이다.


즉, 문자열이 이미 존재하면 새로운 객체를 생성하지않고

기존객체를 사용하여 효율적이게된다.


위처럼 new String으로 문자열 생성시 상수저장소에 저장하지않고

일반 힙 메모리에 String객체를 생성한다.

text와 text2의 참조값이 다르다.

text==text2는 될수 없다.


String 비교방법

1.equals() 메소드

2.단순 == 비교

3.compareTo() 메소드


equals() 메소드

equals와 equalsIgnoreCase 있다.


equals이란?

문자열의 내용을 비교하는 것이다.



equalsIgnoreCase이란?

문자열의 특징을 무시하고 비교하는 것(쉽게말해 소문자,대문자)이다.



단순 == 비교

위에 String 개념에서 설명한다.


compareTo() 메소드

문자열 길이를 비교해 정수를 반환해준다.

같다면 0

크다면 1

작다면 -1





조건문

 if 

 구문은 조건하에 명령문을 수행하는 것이다.

 switch 

 구문은 선택된 명령문을 수행하는 것이다.


if문

if <-첫번째 조건이다.

else if <-바로 위에 조건에 부합하지않는다면 체크한다.

else <-위에 모든 조건에 부합하지않는다면 실행한다.

ex)
if(조건) {

실행할 로직

}else if(조건) {위에 조건에 부합하지 않는다면 체크한다.

실행할 로직

}else{위에 모든 조건에 부합하지 않으면(나머지 경우) 실행한다.

실행할 로직

}

switch문

case에는 변수를 넣을 수 없고 값만 들어간다.

switch(변수){

case "비교변수":

break;

default://나머지

}


if문 문 사용 코드.


switch 문 사용 코드.


숫자비교 방법

x == y <- x는 y와 같다.

x != y <- x는 y와 다르다.

x > y <- x는 y보다 크다.

x < y <- x는 y보다 작다.

x >= y <- x는 y보다 크거나 같다.

x <= <- x는 y보다 작거나 같다.


문자열비교 방법

equals

"text" == "text"

->결과 true로 나오긴 하지만

text글자를 비교한것이 아니라

메모리 위치를 비교한 것이다.

자세한 설명->

2018/01/25 - [개발 소발/개발 java] - java 문자열 개념, 문자열 비교


"text".equals("text")

->equals가 text란 글자로 비교하는 것 이다.

     즉, equals를 사용하는 게 맞다.


!"text".equals("text")

->"text".equals("text")의 반대

text와 다르다 의미이다.



변수란?

데이터 타입이다.
primitive type(원시 타입)이라고 불린다.
앞 글자를 소문자로 사용한다.

int <-상수, 소수점을 받아들이지 않는다.
ex) int myInt = 2;

short <- 용량을 작게 차지한다.
(큰 숫자는 안됨)
ex) short myShort = 1;

long <- 큰 숫자에 사용한다.(마지막에 L을 붙임)
ex) long myLong = 1L;

double <- 소수점에 사용한다.
ex) double myDouble = 1.2;

float <- 용량을 작게 차지한다.(특이점 :마지막에 f를 붙인다.)
float myFloat = 1.3f;

char <- 문자열에 사용한다.(특이점:한 글자만 사용 가능하고,''작은따옴표로 사용한다.)
ex) char myChar = 'c';

boolean <- 참, 거짓에 사용한다.(true, false)
ex) boolean myBoolean = false;

byte <- 용량 표현에 사용한다.
ex) byte myByte = 24;

문자열이란?

primitive type(원시 타입) 아니다.
String -> ""사용, 숫자도 문자로 인식한다.
ex) String text = "number : "+myInt;
특이점:뒤에 int형을 문자로 인식한다.

text = myInt; <-X
ex) primitive type 형태만 입력은 안된다.

String 뒤에 숫자 가와도 String으로 인식한다.
primitive type 뒤에 문자열은 안된다.
ex) text = text+": "+myInt;


람다식

자바8이상에서 사용가능하다.

기존 익명 클래스 대신사용하는 것.

 람다식은 여러줄의 코드를 메소드안에 넣을때 사용한다.

 첫번째 코드 
- 람다식없었을때(java6,7)때 사용방법이다. 

 두번째 코드
- 람다식 사용예이다.
 



톰캣(Tomcat)

-서블릿컨테이너라고도 함.

-오픈소스(무료)


톰캣을 왜 쓰는가?

-웹어플리케이션 서버 개발 및 운영에 사용된다.

-실제적으론 JSP/Servlet에 사용(JSP/Servlet엔진)한다.

-org 무료이다.(금전적인 부담없음)


톰캣 장점

-크로스플랫폼(Os를 가지리않고 사용가능 함)

윈도우,리눅스 등 여러환경에서 사용가능함.



톰캣 구성

- Coyote

HTTP 컴포넌트: 톰캣에 TCP를 통한 프로토콜 지원한다.


- Catalina

서블릿 컨테이너: 자바 서블릿을 호스팅 하는 환경이다.

-Jasper

톰캣의 JSP 엔진: 실제 JSP페이지의 요청을 처리하는 서블릿이다.


1.HTTP 요청을 Coyote에서 받게되면.

2.Catalna ServletContatiner에서 Doc Base를 찾고 WEB-INF/web.xml 파일 내용 참조한다.

3.*.jsp파일이 호출 될 때, Jasper JSP 엔진이 Validation Check /Compile한다.


서블릿 표준에 따라 웹어플리케이션 개발.

서블릿 표준

-webapp개발

WEB-INF(web.xml)형식임.


톰캣실행파일

-bin폴더(실행파일)

.bat 파일은 윈도우에서 사용한다.

.sh 파일은 맥,리눅스에서 사용한다. 


-webapp폴더

-하위ROOT폴더    / <-기본 주소제공

ex)http://localhost:18080/

-war파일을 넣어두면 압축해제한다.


-conf폴더(설정파일)

-server.xml(모든설정관리)

포트(ex:8080),프로토콜(ex:http)등을 설정한다.


-work(폴더)

서블릿으로변환(자바로 변환 후 다시 클래스생성)하는곳이다.

지우고 톰캣다시 실행시 다시 생성되어 있는것을 확인 가능하다.


-logs(폴더)

catailna.out(로그확인인 리눅스:tail -f catalina.out)

디버깅할때 사용한다.



tomcat 특정war root로 설정하기

server.xml

<Host> 밑에 다 적용한다.

<Context path="" docBase="경로" reloadable="false" > </Context>

</Host>


* 주의점 : webapp안에 ROOT폴더는 제거해줘야한다.(중복)







'개발 소발 > 개발 java(기초)' 카테고리의 다른 글

JAVA 기초 문자열 개념, 문자열 비교  (0) 2018.01.25
JAVA 기초 조건문(if,switch문)  (0) 2018.01.25
JAVA 기초 변수와 문자열  (0) 2018.01.25
java 람다식 사용예  (0) 2018.01.24
java json->vo 매핑  (0) 2017.12.27

SpringMVC란?


Spring MVC의 특징

- Spring은 DI나 AOP같은 기능뿐만 아니라, 서블릿 기반의 웹 개발을 위한 MVC프레임워크를 제공한다.

- SpringMVC는 모델2 아키텍쳐와 FrontController 패턴을 프레임워크 차원에서 제공한다.


- SpringMVC프레임워크는 Spring을 기반으로 하고 있기 때문에 Spring이 제공하는 트랜잭션 처리나 DI 및 AOP등을 손쉽게 사용한다.


SpringMVC와 FrontController 패턴

어떤 연관성이 있을까?

- 대부분의 MVC 프레임워크들은 FrontController 패턴을 적용해서 구현한다.

- Spring MVC도 FrontController역할을 하는 DispatcherServlet 이라는 클래스를 계층의 맨 앞단에 놓고, 서버로 들어오는 모든 

요청을 받아서 처리하도록 구성되어있다.

DispatcherServlet이 FrontController 역할을 한다.


- 예외가 발생했을 때, 일관된 방식으로 처리하는 것도 FrontController의 역할이다.



DispatcherServlet 클래스

- FrontController 패턴 적용

- Web.xml에 설정한다.

- 클라이언트로부터의 모든 요청을 전달 받게된다.


- Controller나 View와 같은 Spring MVC의 구성요소를 이용하여 클라이언트에게 서비스를 제공한다.


DispatcherServlet은 개발자가만든 Controller에 위임한다.

개발자가만든Controller는 핸들링(처리) 하여 모델을 DispatcherServlet에 전달한다.

DispatcherServlet은 View에게 model전달한다.

view는 화면생성후 DispatcherServlet에게 전달한다.


Spring MVC의 주요 구성 요소

 

 DispatcherServlet

 - 클라이언트의 요청을 받아서 Controller에게 클라이언트의 요청을 전달하고,

리턴한 결과값을 View에게 전달하여 알맞은 응답을 생성한다.

 HandlerMapping

 - URL과 요청 정보를 기준으로 어떤 핸들러 객체를 사용할지 결정하는 객체이며,

      DispaccherServlert에게 알려준다.

 Controller

 - 클라이언트의 요청을 처리한 뒤, Model를 호출하고 그 결과를 DispatcherServlet에게 알려 준다.

 ModelAndView

 - Controller가 처리한 데이터 및 화면에 대한 정보를 보유한 객체이다.

 View

 - Controller의 처리 결과 화면에 대한 정보를 보유한 객체이다.

 ViewResolver

 - Controller가 리턴한 뷰 이름을 기반으로 Controller 처리 결과를 생성할 뷰를 결정한다.

 개발자가 주로 사용하는 클래스

 - DispatcherServlet,Controller,ModelAndView,View


Spring MVC의 주요 구성 요소의 요청 처리 과정

1. 클라이언트의 요청이 DispaccherServlet에게 전달된다.

2. DispatcherServlet은 HandlerMapping을 사용하여 클라이언트의

요청을 처리할 Controller를 획득한다.(컨트롤러를 알려줌)


3. DispatcherServlet은 Controller 객체를 이용하여 클라이언트의 요청을 처리한다.


4. Controller는 클라이언트 요청 처리결과와 View페이지 정보를 

담은 ModelAndView 객체를 반환한다.

'개발 소발 > 개발 Spring' 카테고리의 다른 글

Spring IoC(Inversion of Control),Bean,의존성주입이란?  (0) 2020.07.08
프레임워크 개념  (0) 2018.01.26
MVC패턴이란?  (0) 2018.01.11
Mybatis Mapper 인터페이스란?  (0) 2018.01.11
Mybatis 셋팅이란?  (0) 2017.12.21

MVC패턴이란?


Model - View - Controller

사용목적?

비지니스로직과 프리젠테이션 로직을 분리하기 위함이다.


프리젠테이션 로직과 비지니스로직

두가지를 분리하여 서로에 영향을 주지않는다.


Model이란?

- 애플리케이션의 정보(데이터,Business Logic 포함)


View이란?

- 사용자에게 제공할 화면(Presentation Logic)


Controller란?

- Model과 View사이의 상호 작용을 관리


MVC패턴의 개념


1. 클라이언트가 컨트롤러에게 요청한다.

2. 요청한것을 Controller가 Model에서 호출한다.

3. 결과를 Controller에게 전해준다.

4. 받은 결과를 Controller는 View에게 화면생성요청을 한다.

5. View는 결과화면을 Controller에게 전달한다.

6. Controller는 클라리언트에게 응답을함.



각각의 MVC 컴포넌트의 역할

 - 모델(Model) 컴포넌트

  1. 데이터 저장소(DB)와 연동하여 사용자가 입력한데이터나

사용자에게 출력할 데이터를 다루는 일을 한다.

2. 여러개의 데이터 변경 작업(추가,변경,삭제)를 하나의 작업으로

묶는 트랜잭션을 다루는 일도 한다.

3. DAO클래스 ,Service클래스에 해당된다.

 - 뷰(View) 컴포넌트

  1. 모델이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할

화면을 만드는 일을 한다.

2. 생성된 화면은 웹 브라우저가 출력하고, 뷰 컴포넌트는 HTML과 CSS,

JavaScript를 사용하여 웹브라우저가 출력할 UI를 만든다.

3. Html과 JSP를 사용하여 작성할 수 있다.

 - 컨트롤러(Controller) 컴포넌트

  1. 클라이언트가 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는

모델 컴포넌트를 호출하는 일을 한다.

2. 클라리언트가 보낸 데이터가 있다면, 모델을 호출할 때 전달하기 쉽게

데이터를 적절히 가공하는 일을 한다.

3. 모델이 업무 수행을 완료하면, 그 결과를 가지고 화면을 생성하도록

뷰에게 전달(클라이언트 요청에 대해 모델과 뷰를 결정하여 전달)한다.

4.Servlet과 JSP를 사용하여 작성할 수 있다.



모델1 아키텍쳐 

-컨트롤러 역할을JSP가 담당한다.

JSP가 복잡해지는 단점이 있다.

모델2 아키텍쳐

-컨트롤러 역할을 Servlet이 담당한다.

Spring은 모델2사용 컨트롤러가 Servlet이다.


모델2 아키텍쳐 호출순서

 1.클라이언트가 Controller(서블릿)에 요청함.

  -웹브라우저가 웹 애플리케이션 실행을 요청하면, 웹 서버가 그 요청을 받아서

서블릿 컨테이넛(ex: 톰캣서버)에 넘겨준다.

-서블릿 컨테이너는 URL을 확인하여 그 요청을 처리할 서블릿을 찾아서 실행한다.

 2.Controller가 Model을 호출

  -서블릿은 실제 업무를 처리하는 모델 자바 객체의 메서드를 호출한다.

-만약 웹 브라우저가 보낸 데이터를 저장하거나 변경해야 한다면 그데이터를 가공하여

VO 객체(Value Object)를 생성하고, 모델 객체의 메서드를 호출할 때 인자 값으로 넘긴다.

-모델 객체는 엔터프라이즈 자바빈(EJB)일 수도 있고, 

일반 자바 객체(POJO로 된 Service,DAO object)일 수도 있다.

 3.Model객체가 SQL문을 통해 결과값을가져옴

        -모델 객체는 JDBC를 사용하여 매개변수로 넘어온 값 객체를 데이터베이스에 저장하거나,

        데이터베이스로부터 질의 결과를 가져와서 VO객체로 만들어 반환한다.

 4.Controller는 View(JSP)에 결과(VO) 전달

        -서블릿은 모델 객체로부터 반환 받은 값을 JSP에 전달한다.

 5.JSP는 전달받은 결과(VO)로 화면생성

 


FrontController 패턴 아키텍쳐

- Front Controller 프로세스

                     (이부분)

클라이언트 -> FrontController -> 애플리케이션Controller -> View

- FrontController는 클라이언트가 보낸 요청을 받아서 공통적인 작업을 먼저 수행한다.

- FrontController는 적절한 세부 Controller에게 작업을 위임한다.

- 각각의 애플리케이션 Contoller는 클라이언트에게 보낼 뷰를 선택해서

최종 결과를 생성하는 작업이다.

- FrontController 패턴은 인증이나 권한 체크처럼 모든 요청에 대하여 공통적으로 처리해야 하는 로직이 있을 경우 

전체적으로 클라이언트의 요청을 중앙 집중적으로 관리하고자 할 경우에 사용한다.







'개발 소발 > 개발 Spring' 카테고리의 다른 글

프레임워크 개념  (0) 2018.01.26
SpringMVC란?  (0) 2018.01.11
Mybatis Mapper 인터페이스란?  (0) 2018.01.11
Mybatis 셋팅이란?  (0) 2017.12.21
MyBatis란?  (0) 2017.11.27

+ Recent posts