1. 정의

자료의 형태.

메모리를 생성할 때 사용하는 도구로서 프로그래머와 컴파일러 사이의 규약

서로 다른 비트의 조합으로 이루어진 각기 다른 형태를 구분짓는 기준

 

 

2. 목적

생성할 메모리 크기(size)를 지정

생성할 메모리 형태(type)를 지정

 

 

3. 종류

ㄱ. 기본 데이터 타입 (Primate Data Type)

- 일반적으로 많이 사용하는 데이터 타입. 컴파일러 차원에서 제공

  byte(1), char(2), int(4), long(8), float(4), double(8), boolean(1). 정수형과 실수형으로 나뉨

ㄴ. 참조형 데이터 타입

- 기본형을 제외한 나머지 타입. String, List 등 본인이 만든 클래스도 참조형 타입이 될 수 있음.

 

 

4. 데이터 타입의 형 변환

ㄱ. 큰 수 vs 작은 수 : 큰 수

ㄴ. 덜 정밀한 수 vs 정밀한 수 : 정밀한 수

ㄷ. 정수 vs 실수 : 실수

ㄹ. 작은 수가 큰 수로 형변환 되는 것은 자동이다 (반대 : 강제 형변환이 필요 - 오버플로우 발생)

ㄹ. 덜 정밀한 수가 정밀한 수로 형변환 되는 것은 자동이다 (반대 : 강제 형변환이 필요 - 오버플로우 발생)

 

 

5. 상수

내가 만든 메모리가 아닌 이미 만들어져 있는 데이터 메모리 그 자체

 

 

6.변수

데이터 타입을 정해주면 메모리에 존재할 수 있는 존재의 의미

변수명은 해당 메모리를 제어할 수 있는 유일한 수단(=식별자)

 

 

7. 변수 이름 만드는 방법

ㄱ. 첫 번째 문자는 영문자나 _(언더바)로 시작한다

ㄴ. 첫 번째 문자로 숫자는 사용하면 안된다

ㄷ. 변수 이름은 대소문자를 구분한다

 

 

8. 변수의 종류

ㄱ. 인스턴스 변수(Instance Variable) : 클래스 멤버 변수. static을 선언하지 않고 적은 변수

ㄴ. 클래스 변수(Class Variable) : static 키워드를 선언한 변수

하나의 클래스 안에서 다수의 인스턴스가 생성되더라도 오직 하나의 값만 가진다. 여기에 final 키워드를 추가하면 값 변경 불가

ㄷ. 지역 변수(Local Variable) : 메소드 안에서 사용되는 변수

ㄹ. 파라미터(Parameter) : 메소드에 전달되는 인자로 사용되는 변수

 

* 스칼러 변수 : int n;과 같이 값이 1개만 들어가는 변수

   벡터 변수 : int[10] n;과 같이 값이 여러개 들어가는 변수

 

 

9. 변수의 선언

데이터 타입 + 변수명

 

 

10. 할당(Assignment)

변수에 값을 집어넣는 행위

 

 

* 할당의 법칙

ㄱ. 오른쪽에서 왼쪽으로만 할당이 가능

ㄴ. 변수끼리도 할당이 가능

ㄷ. 변수에 이미 상수가 존재하더라도 다른 것을 할당하면 마지막에 넣은 것이 최종적으로 할당됨

 

* 데이터는 할당값을 전달하지만 객체의 경우에는 할당값이 아닌 객체의 주소값이 전달됨

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

Java :: 클래스  (0) 2016.03.16
Java :: 클래스 - 도입  (0) 2016.03.15
Java :: 삼항 연산자  (0) 2016.03.13
Jsp :: jsp 페이지 구성 요소  (0) 2016.03.03
Jsp :: get vs post  (0) 2016.03.02

1. 정의

조건에 따라 두 식중 하나를 반환.

코드가 간결해지기는 하나 가독성이 좋지 않음

일반적으로 if-else 구조에서 많이 사용

 

 

2. 연산자

(조건) ? (조건이 참일 떄) : (조건이 거짓일 때)

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

Java :: 클래스 - 도입  (0) 2016.03.15
Java :: 데이터와 변수  (0) 2016.03.14
Jsp :: jsp 페이지 구성 요소  (0) 2016.03.03
Jsp :: get vs post  (0) 2016.03.02
Java :: Iterator  (0) 2016.03.01

1. 스크립트릿 (Scriptlet)

<%        %>

jsp 페이지 내에서 자바 코드 실행시 사용되는 블록

 

 

2. 표현식 (Expression)

<%=        %>

어떤 값을 출력 결과에 포함시키고자 할 때 사용

변수 또는 문자나 숫자를 직접 입력

 

 

3. 선언부 (Declaration)

<%!        %>

jsp 페이지의 스크립트릿이나 표현식에서 사용할 수 있는 함수(메소드) 작성시 사용

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

Java :: 데이터와 변수  (0) 2016.03.14
Java :: 삼항 연산자  (0) 2016.03.13
Jsp :: get vs post  (0) 2016.03.02
Java :: Iterator  (0) 2016.03.01
Java :: HashMap  (0) 2016.02.28

1. get

<a href="list.jsp?pageNo=2&id=admin&password=1234"></a>

<form method="get" action=" " name=" "> </form>

http://localhost/example/list.jsp?pageNo=2&id=admin&password=1234

 

클라이언트로부터 데이터를 이름 + 값이 결합된 스트림 형태로 전달함

각 이름과 값의 쌍은 &을 이용하여 구분

웹브라우저의 주소 입력란에 직접 입력해도 데이터를 서버로 전송 가능

데이터를 쿼리의 일부로 전달

기본적으로 DB에 대한 질의어 데이터와 같은 요청 자체를 위한 정보

데이터 용량이 클 시 데이터가 절단됨(초과된 용량의 데이터만큼)

=> URL로 전달되기 때문에 255자 이상은 절단

퍼머링크로 사용 가능

아무리 hidden 타입을 써서 전송해도 get방식으로 보내면 url에 전부 노출되어 버린다.

 

* 퍼머링크 : 정보를 식별하는 고유 식별자. 고유 주소 체계

* 이클립스에서 get방식 한글 인코딩이 깨질 시에는 이클립스의 server.xml을 수정해줘야 한다.

 

 

2. post

<form method="post" action=" " name=" "> </form>

http://localhost/example/list.jsp

 

클라이언트와 서버간 상호 정의되어 있는 형식대로 값을 인코딩한 뒤 다음 서버로 전송

내부의 구분자가 각 파라미터(이름 + 값)을 구분

백엔드 프로그램에 사용

서버 : 전달된 스트링을 디코딩 > 각 파라미터 구분 > 필요한 값들을 추출

클라이언트로부터의 데이터가 HTTP 헤더에 포함되어 전송됨

브라우저의 주소 입력란에 내용이 나타나지 않음

특정 페이지로 많은 양의 파라미터를 전송하거나 보안상 노출되어선 안되는 파라미터를 전송하는 경우

(일정한 크기 이상의 데이터 전송시 사용)

get 방식에 비해 처리 속도가 다소 늦음

퍼머링크로 사용 불가

charset 설정으로 데이터 인코딩 가능

보통 form을 이용하여 submit 하는 형태를 갖출 때 사용

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

Java :: 삼항 연산자  (0) 2016.03.13
Jsp :: jsp 페이지 구성 요소  (0) 2016.03.03
Java :: Iterator  (0) 2016.03.01
Java :: HashMap  (0) 2016.02.28
Java :: for문과 foreach문  (0) 2016.02.28

배열의 경우, 배열의 특정 객체를 참조하기 위해 인덱스를 이용한 참조가 바로 가능하지만 Collection은 가장 일반적인 객체의 모임이라는 의미밖에 가지고 있지 않으므로 인덱스를 가지고 원하는 객체를 찾을 수가 없다.

 

컬렉션 (ex. List, Set)이라면 Iterator의 인터페이스를 사용 가능하다.

표준화가 되어 있지 않으면 각각의 클래스에 접근이 힘들어지는데, 모든 컬렉션으로부터 접근 가능한 인터페이스

 

ArrayList<String> list = new ArrayLlist<String>();

itr = list.iterator();

처럼 뒤에 iterator()를 붙여 형을 변환한다.

 

 

 boolean hasNext()

(int형 : hasNextInt())

다음 값의 존재를 true로 리턴하고

다음 데이터가 없을 때까지 반복한다.(없을 시 false 리턴)

if나 while문에서 사용한다. (ex. while(itr.hasNext())

 Object next()

읽어올 요소가 남아있는지 확인하고

다음 데이터를 true/false로 리턴.

 void remove()

next()로 읽어온 요소를 삭제.

next() 메소드를 호출한 다음에만 호출 가능.

<Iterator 메소드 종류>

 

 

보통 메소드의 구현 순서는 hasNext() > next() > remove() 순이다.

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

Jsp :: jsp 페이지 구성 요소  (0) 2016.03.03
Jsp :: get vs post  (0) 2016.03.02
Java :: HashMap  (0) 2016.02.28
Java :: for문과 foreach문  (0) 2016.02.28
Jsp :: 자바빈 액션태그  (0) 2016.02.24

1. 정의

key값과 value값을 하나의 쌍으로 관리하므로 Enumeration이나 Iteration 개체를 사용하여 데이터를 추출하지 않고 해당 키에 대한 데이터 값을 추출하는 Connection

 

 

2. 장점

동기화가 포함되지 않으므로 HashTable에 비해 속도가 빠름

 

 

3. 단점

value값의 중복은 허락하지만 key값의 중복은 허락하지 않으므로 null을 가지는 key가 두개일 수는 없다.

 

 

4. 메소드 종류

 

 put(key, value)

put(기존 key, 다른 value)

삽입

기존 key를 다른 value값으로 수정(가능)

get()

지정 키에 해당하는 데이터 value값을 반환

containsKey(key)

지정 키가 존재하는지의 여부를 true / false로 반환

 containsValue(value)

지정 value가 존재하는지의 여부를 true / false로 반환

size() 

HashMap 객체의 요소 갯수를 반환

 isEmpty() 

HashMap이 비어있는지의 여부를 true / faluse로 반환

 

 

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

Jsp :: get vs post  (0) 2016.03.02
Java :: Iterator  (0) 2016.03.01
Java :: for문과 foreach문  (0) 2016.02.28
Jsp :: 자바빈 액션태그  (0) 2016.02.24
Servlet :: Servlet 과 Servlet Container 정의  (0) 2016.02.23

1. for 문

for (초기화식; 조건식; 업데이트식) {

     실행부분;

 

1
2
3
4
5
6
7
8
9
10
11
package com.java.example;
 
public class ForTest_Main {
    public static void main(String[] args) {
//        일반 for문
        int array[] = {1020304050};
        
        System.out.println("console> array.length : " + array.length);
        
        for (int i = 0; i < array.length; i++)
            System.out.println("console> array[i] : " + array[i]);

    } 

cs

 

- 반복적인 업무를 처리하기 위한 배열. ArrayList 등과 함께 자주 사용됨.

- for 문에서 이용하는 변수는 배열 인덱스로 겸용하여 쓰여지는 경우가 많음.

 

 

2. foreach 문

for (변수타입 변수이름 : 배열이름) {

     실행부분;

} 

 

1
2
3
4
5
6
7
8
9
10
11
12
package com.java.example;
 
public class ForTest_Main {
    public static void main(String[] args) {
//        for each문
        int array[] = {1020304050};
        
        System.out.println("console> array.length : " + array.length);
        
        for (int number : array)
            System.out.println("console> number : " + number);
    }

cs

 

- 배열 요소의 갯수에 맞게 loop를 돌림.

- 배열 요소 갯수를 몰라도 간단히 for loop를 돌릴 수 있음 (enum 타입에도 사용 가능).

- 오직 배열의 값을 가져오는 것만 가능(read), 수정 불가(write).

- JDK 5.0 버전부터 foreach 지원.

- 반복 횟수를 임의로 주는 형태가 아닌 경우에만 사용이 가능(무조건 1스탭씩 순차적으로 반복하는 경우만 사용 가능)

- 배열 이름 부분에는 Array, Collection, Iterable<E>를 상속받은 객체 또한 가능.

 

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

Java :: Iterator  (0) 2016.03.01
Java :: HashMap  (0) 2016.02.28
Jsp :: 자바빈 액션태그  (0) 2016.02.24
Servlet :: Servlet 과 Servlet Container 정의  (0) 2016.02.23
Java :: java version과 eclipse project version 똑같이 맞추기  (0) 2016.02.17

1. 자바빈

프로그래머가 jsp 페이지에 자바 코드를 입력했을 때, 디자이너 입장에서는 해석하기가 어려워지고 비효율적이다.

이런 비효율적인 부분인 지원하기 위해 제공되는 기능의 형태가 jsp 액션 태그.

jsp 페이지의 디자인과 로직 부분을 나눔으로서 복잡한 자바 코드는 줄이고 프로그램의 재사용성을 증가시킨다.

자바 클래스의 객체를 생성하여 jsp 내의 원하는 데이터의 저장 영역에 배치되게 하는 것

스크릿트릿에서 필요한 객체를 생성하여 사용하려면 자바 코드를 작성해야만 하는데

자바 코드를 사용하지 않고 태그를 쓰는 방법. xml 문법을 따른다

 

 

일반적인 HTML 태그처럼 보이게 하는 jsp 기술의 특별한 구문. 어떤 작업을 수행하기 때문에 액션 태그라고 한다.

클래스 파일 경로 : 클래스가 패키지 내에 소속되어 있어야만 돌아가도록 되어있다.

(ex. WEB-INF / classes / myapp / connection.class)

 

 

2. <jsp:useBean> 액션 태그

<jsp:useBean id="빈 이름"     class="자바빈 클래스 이름"    scope="범위" />

 

 

id : 생성될 자바빈 객체(인스턴스)의 이름. 생략 불가

class : 객체가 생성될 자바빈 클래스명. 자바 클래스의 풀네임 기입. 생략 불가

scope : 자바빈 객체의 유효 범위. 자바빈 객체가 공유되는 범위를 지정.

종류로는 page, session, application가 있으며 생략시에는 기본값이 page로 지정된다.

 

* useBean으로 사용되는 class는 반드시 getter, setter 메소드를 가지고 있어야 한다.

 

 

 

3. <jsp:setProperty> 액션 태그

 

<jsp:setProperty name="빈 이름"       property="프로퍼티 이름"       value="프로퍼티에 저장할 값" /> 

name : 자바빈 객체의 이름 기입. 생략 불가.

property : 프로퍼티명 기입. 생략 불가.

프로퍼티가 "*"일 경우(아스테리스크) 모든 프로퍼티 값이 세팅됨.

(form으로 넘어오는 파라미터 이름과 갯수가 프로퍼티의 이름과 갯수와 일치해야 한다)

value : 프로퍼티에 저장할 값 기입. 생략 가능

 

 

4. <jsp:getProperty> 액션 태그

 

<jsp:getProperty name="빈 이름"    property="프로퍼티 이름" /> 

 

name : 자바빈 객체의 이름 기입. 생략 불가능.

property : 프로퍼티명. 생략 불가능.

 

 

* request.getParameter()와 같은 기능이라고 볼 수 있으나 자바빈 액션 태그를 사용하는 것이 훨씬 high level의 기술이다.

* 구조 : 서블릿 - 서블릿 컨테이너 - 웹서버

 

1. Servlet

웹에서 자바 프로그래밍 구현을 위해 탄생함

자바 프로그램이 서버 역할을 잘 할 수 있도록 확장해주는 것

보안성이 있고, 이식이 가능함. 사용이 쉬워서 CGI로 대체 가능

클라이언트(웹서버)의 요청에 따라 동적으로 모듈을 처리하고 그 결과를 다시 클라이언트에게 전송하는 서블릿 클래스

HTTP 프로토콜 서비스를 지원하는 Javax.http:.HttpServlet 클래스를 상속한다 (Servlet은 Container에 의해 실행되고 관리된다)

JVM에서 작동함. 서버 측 프로그램이라 브라우저를 가리지 않는다

HTML 변경시 Servlet을 재컴파일 해야 한다

 

ㄱ. 역할 : request header와 user가 보낸 데이터를 받음 > 결과 생성 > response header와 생성된 결과를 보여줌

 

ㄴ. 구성 : javax.Servlet = 보편적인 서블릿 인터페이스

javax.Servlet.http = HTTP용 서블릿 인터페이스

 

ㄷ. 자바 서블릿의 생명 주기 : public void init = 서블릿이 처음 적재될 때 호출되는 초기화 함수

   public void service = 클라이언트의 요청이 들어올 때마다 호출(doGet / doPost 호출)

   public void destroy = 서블릿이 메모리에서 해제될 때 호출되는 종료 함수

 

 

2. Servlet Container (서블릿 관리)

서블릿 생명 주기를 관리하고 요청에 따른 스레드를 생성한다

HTTP를 요청 받아서 Servlet 을 실행시키고 결과를 사용자 브라우저에게 전달해주는 기능을 가진 컴포넌트

서블릿과 웹 서버(Apache)가 서버로 통신하는 방법을 제공

멀티스레딩을 지원하여 클라이언트가 다중 요청을 알아서 처리한다

 

ㄱ. 역할 : 통신 지원

생명 주기 관리

멀티스레딩 관리

선언적 보안 관리

jsp 지원

 

ㄴ. 대표적인 컨테이너 : Tomcat, jetty, jboss etc

 

 

 

* Web Server : 웹서버로 들어온 클라이언트의 요청을 받아 컨테이너로 전송하고 웹 컨테이너의 결과값을 받아

클라이언트로 전송한다.

클라이언트가 get, post 등의 메소드를 이용하여 요청하면, 프로그램이 어떤 결과를 돌려준다.

정적인 data를 처리하는 서버.

단순 이미지나 html과 같은 리소스를 제공하는 서버 전달시 WAS보다 빠르다.

사용자의 요청을 효율적으로 처리 가능

(ex. apache)

 

 

* Web Application Server(=WAS) : 웹서버 + 웹컨테이너

다양한 기능을 컨테이너에 구현하고 다양한 역할을 수행하는 서버

넘겨받은 요청을 내부적인 연산으로 처리한 후 출력할 내용을 웹서버로 전달하여 웹서버가 다시 클라이언트로 전송한다.

동적인 data를 처리하는 서버.

DB와 연결되어 데이터를 주고받거나 프로그램으로 데이터의 조작이 필요한 경우 활용한다.(java, jsp, css 등)

(ex. apache tomcat)

 

 

* 보통 대용량의 DB가 오고 가는 곳에서는 web server와 was를 동시에 사용하는데, 그 이유는 정적인 데이터 / 동적인 데이터를 나누어서 처리할 수 있기 때문에 효율성을 극대화할 수 있어서이다(속도).

Java version과 eclipse project version이 맞지 않으면 프로젝트 실행시 컴파일 에러가 발생하곤 하는데,

소스가 잘못된 것이 아니기 때문에 자칫하면 이유를 모르고 몇 날 몇 일을 샐 수도 있다.

 

외부의 프로젝트를 import 했거나 새 프로젝트를 만들었을 시에는 작업 하기 전 무조건 버젼부터 맞추고 시작하는 편이 낫다.

 

 

1. cmd로 java와 javac version 확인

 

 

java와 javac 모두 1.8.0_71 이다. 그러므로 이클립스 상에서도 프로젝트 버젼이 1.8 이어야 한다.

 

* cd.. : 상위 폴더로 이동

  java -version : java (jdk) version 확인

  javac -version : javac (jre) version 확인

 

 

2. Properties > Project Facets

 

 

 

Project Facets에 들어가면 Java 등의 버젼을 맞출 수 있다. (일반적인 경우)

 

 

 

그러나, 위와 같이 설정이 되지 않는 경우도 있다.

아래 창에 Cannot~라고 뜨면 다른 방법으로 설정해야 한다.

 

 

3. Navigator > .settings > org.eclipse.~.facet.core.xml

 

 

Project Explorer가 아닌 Navigator로 들어가서,

프로젝트를 열고 폴더 중 .settings를 열면 여러 파일 중에 ofg.eclipse.wst.common.project.facet.core.xml 파일을 연다.

 

<installed facet="java" version="1.8"/> : java version

<installed facet="jst.web" version="3.0/> : Dynamic Web Module version

 

수동으로 직접 수정해준다.

 

 

4. Build Path > Configure Build Path > JRE System version 수정

 

 

 

 

버젼 수정을 수동으로 해주면 프로젝트에서 원인 모를 오류가 발생할 것이다.(아마도)

왜냐하면, 이미 Build Path를 한 JRE의 라이브러리 버젼이 수정되지 않았기 때문이다.

 

 

5. Edit > JRE version 수정

 

 

Execution environment 버튼을 누르고 1번에서 cmd 창으로 확인했던 javac version(jre) 과 동일한 버젼을 클릭하고 Finish를 누른다.

 

버젼을 동일하게 맞췄으면, eclipse를 종료시키고 다시 켠다.

+ Recent posts