분류 전체보기

반응형

변수와 자료형

  1. 변수는 프로그램에서 데이터를 저장하는 공간을 말하고, 자료형은 변수에 저장할 데이터의 유형을 말한다.
  2. 변수 이름 규칙
    • 변수 이름의 길이에는 제한이 없다.
    • 반드시 문자나 언더바(_), 달러 기호($)로 시작해야 한다.
    • 자바의 연산자(+, -, *, /)는 변수 이름에 넣을 수 없다.
    • 대소문자를 구분한다(int result와 int Result는 다른 변수).
    • 첫 글자에 숫자가 올 수 없고, 이름 사이에 빈칸을 넣어서도 안 된다. 빈칸 대신 언더바(_)를 사용한다.
    • 자바의 키워드(예약어)는 변수 이름으로 사용할 수 없다. https://java119.tistory.com/21
  1. 자바에서 변수 선언은 명시적으로 데이터형을 지정하게 되어 있으며, 선언된 데이터 유형과 대입된 데이터값에 차이가 있을 때 오류나 오버플로, 언더플로가 발생하므로 주의한다.
  2. 자바의 변수는 유형에 따라 인스턴스 변수, 클래스 변수, 지역 변수, 파라미터로 구분한다.
  3. 자바에서 지원하는 기본 자료형(Primitive Data Types)은 크게 정수형, 실수형, 논리형으로 나눈다.

 

정수형 타입

 

byte 변수이름

byte a = -128;
byte b = 127;

char(문자 타입) 변수이름

char a = 'a';

short 변수이름

short a = -32768;
short b = 32767;

 

int 변수이름(가장 많이 쓰임)

int a =  -2147483648;
int b = 2147483647;

long 변수이름

long a = 123567890L; //끝에 L  붙여야함 .
long b = 123567890l; // 소문자 l 가능

 

크기순

1.long 8바이트

2.int 4바이트

3.short 2바이트

4.char 2바이트

5.byte 1바이트

 

실수형 타입

 

float 변수이름

float a = 123f;

 

double 변수이름

double a = 12323232.4242;

 

크기순

1.double 8바이트

2.float 4바이트

 

논리형 타입

 

boolean 변수이름

boolean a = true;

 

크기순

1.boolean 1바이트

 

클래스(문자열) 타입

 

String 변수이름

String str1 = new String("hello JAVA!");
String str2 = "hello JAVA!";
String str3 = new String("");

 

 

 

반응형
반응형

글은 이클립스(IDE) 기반으로 설명합니다.

 

어제까지 잘되던 프로젝트가 내일 출근하고 보니 맛(?)이 갈 때가 있습니다. 바아로 따라해봅시다

 

1.Project

2.Clean

 

 

1.Servers

2.Tomcat version Server at localhost [] 마우스 우클릭

3.Clean or Clean tomcat work directory

 

Tomcat Clean VS Clean tomcat work directory

 

Clean… : 모든 파일(java, jsp, xml)등의 파일들을 컴파일하여 재적용

기존 컴파일 Class 덮어쓰기

 

Clean tomcat work directory : context별 폴더에 저장된 컴파일 Class 파일들을 지우고 재컴파일

기존 컴파일 Class 파일들 삭제 다시 생성

 

이 방법에도 안된다면 Java Build Path 재컴파일...아니면 Git Pull 할때 이상한 파일이 딸려왔는지 확인

 

pom.xml maven 디펜던시 추가 안될

1.이클립스 프로그램 종료

2.C:\Users\사용자이름\.m2\repository 폴더 삭제 다시 이클립스 재가동

3.우측 하단에 Building workspace ( ?% ) 없어질 까지 대기 Run on Server

반응형
반응형

 

개념


GET과 POST는 HTTP프로토콜을 이용해서 서버에 무언가를 전달할 때 사용하는 방식입니다.

 

전달하는 방식~ 전달하는 방식이에요 방식!

 

큰 차이점은 데이터가 어디에 위치하는가에 있습니다. POST 요청시에 URL에 파라미터가 보이지 않는 이유는 데이터가 요청 바디에 포함되기 때문입니다. 그렇기 때문에 GET과 POST에 따라 데이터를 URL에 추가해야할지 요청 바디에 추가해야할지를 알고 있어야만 합니다. 

 

 

GET 방식과 POST방식의 장단점 및 차이점


1.Select 기능을 원한다면 GET 메서드, Update 기능을 원한다면 POST 메서드  

2.검색 결과 등 고정적인 주소 및 링크 주소로 사용될 수 있다면 GET 메서드를 사용  

3.정보를 담을 URL길이(최대 2048자)는 한계가 있기 때문에 이를 해결하고 싶다면 POST 메소드를 사용

4.POST 메서드를 쓰면 정보를 숨길 수 있다. 하지만 SSL(Secure Sockets Layer)를 사용안하면 GET과 마찬가지

5.GET은 캐시가 남아있어 전송 속도가 빠르고 POST는 캐시가 남지 않아 보안적인 면에서 유리 

6.GET은 브라우저 히스토리에 파라미터가 남고 POST는 저장되지 않는다.  

 ) http://url/.javatis.com?id=22&pw=11 URL 중요 파라미터 노출

7.GET은 ASCII캐릭터만 허용하나 POST는 한계가 없다. POST는 바이너리 데이터가 허용된다. 따라서 파일 입출력을 위해 POST메소드가 이용된다

 

 

정리

사람 : 누구야 get post 차이가 뭐냐?

누구 : 두가지 모두 HTTP 전송 방식의 타입입니다.

GET 일단 SELECT 기능면에서 우수하여 SELECT 기능으로 많이 쓰고,캐시가 남아있어 보안적인 측면이 좋지 않으나, 전송속도가 우수하고 파라미터가 url 노출되는 점이 있습니다.

POST 주로 CREATE,UPDATE,DELETE 사용되며,캐시가 남지 않아 보안적인 면에서 좋고 요청 Request Body 데이터가 들어가기 때문에 파라미터가 노출 되지 않는점이 차이점입니다.


 

일단 이론은 대충 알겠고, 그래서 어떻게 어느 상황에 써야 하는거야?

 

HTTP 결국엔

클라이언트 -> 서버 요청 방식인데..

이걸 보낼때 전송방식 대표로 GET,POST 있답니다. 외에도 PUT, DELETE 나중에

 

GET(Read) 즉 SELECT 할때쓰는것이적당합니다.

SELECT

서버에 데이터를 가져와 보여주기 위함

 

POST(Create) INSERT 할때 쓰는것이 적당합니다.

INSERT,update,delete

서버의 ,상태를 바꾸기 위함

 

 

문법


공통

$(document).ready(function() {

signUp();

getUserList();

})

 

GET 방식


Client

function getUserList(){
$.ajax({
type : "GET",
data : { id : "gildong", pw : 119}),
url : "/jquery/signUp.do",
success:function(data){
console.log(data);
}
})
}

 

Server (Spring mvc Controller)

@RequestMapping(value="jquery/getUserListEx.do",method=RequestMethod.GET)

@ResponseBody

public List<Object> getUserListEx(SignUp signUp){

System.out.println("getUserListEx.do GET & id / PW : " + signUp.toString());

List<Object> list = null;

//list = service.getmethod();

return list;

}

GET 정보


 

POST JSON.stringify() 방식


VO Class

public class SignUp {

	private String id;
	private String pw;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	
	@Override
	public String toString() {
		return "SignUp [id=" + id + ", pw=" + pw + "]";
	}
	
}
//pom.xml dependency 추가

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.9.5</version>

</dependency>

//이 라이브러리를 추가 안해주면 HTTP 415 에러를 만나게된다.

 

(Client 형식 JSON === Server 형식 JSON 맞춰줘야한다.)

 

Client

function signUp(){

$.ajax({
type : "POST",
dataType : 'json',
contentType : "application/json;charset=UTF-8",
data : JSON.stringify({
id : "gildong",
pw : 119,
}),
url : "/jquery/signUp.do",
success:function(data){
console.log(data);
}
})
}

(@ResponseBody @RequestBody 헷갈림 주의 부릅)

 

Server (Spring mvc Controller)

@RequestMapping(value="jquery/signUp.do",method=RequestMethod.POST,produces = "application/json;charset=UTF-8")
@ResponseBody
public SignUp signUp(@RequestBody SignUp signUp){
//menuservice.signUpMethod(signUp);
System.out.println("signUp.do POST & id : " + signUp.toString());
return signUp;
}

POST 정보

 

 

GET & POST 결과

 

 

외에도 $("#form").serialize() , $.get , $.post , 폼 파라미터 넘기기 방식이 있습니다.

 

대표로 자주 쓰이는 문법을 정리 해봤습니다.

반응형
반응형

익명 즉시실행 함수

 

개념


*익명 함수(무명 함수) 즉시 실행 함수 합쳐진 이름이 바로 익명 즉시실행 함수 이다.

, 익명 함수인데 즉시 실행하는 함수가 익명 즉시실행 함수가 되는것 이다.

 

기존의 함수 호출 방식과는 다르게 선언과 동시에 실행되는 것이 익명 즉시실행 함수이다.

 

한마디로, 함수를 호출하지 않아도 자동으로 로드되는 함수 라고 표현 있다.

 

*익명 함수 : 이름이 없는 함수를 말합니다.

var myFunc = function() {
};

setTimeout(function() {
}, 5000);

 

문법


//1번 (jquery 필요)
$(document).ready(function(){
alert('hello');
});

//2번 (jquery 필요)
 $(function(){
    alert('hello');
});

//3번
(function(){
    alert('hello');
 })();

//4번
 window.onload=alert('hello');

우선순위


  1. (function(){  })();
  2. window.onload = function(){};
  3. $(document).ready(function(){ }); , $(function(){ });

 

(function(){  })();


javascript 권장 익명 즉시실행 함수 

 

 

$(document).ready(function(){ }); == $(function(){ }); 동일 (jquery 필요)


document 곧 HTML 문서의 처음부터 끝까지를 모두 웹브라우저가 인식한 다음에 실행

이미지 리소스 다운로드까진 기다리지않음

 

 

window.onload = function(){};


DOM레벨 0방식의 자바스크립트 이다.

document 곧 HTML 문서의 처음부터 끝까지를 모두 웹브라우저가 인식한 다음에 실행

이미지 리소스 다운로드까지 기다렸다가 실행

 

이미지를 기다린 실행해야할 경우는 window.onload 이용

 

 

 

 

 

문법만 빠르게 알아봤고 자세한 개념은 HTML 랜더링과 함께 다루겠습니다.

반응형

[Spring] annotations 정리

2019. 10. 16. 14:15
반응형

Annotation(어노테이션 || 애너테이션 || 애노테이션)이란?

아하영어사전 - 애너테이션

http://aha-dic.com/View.asp?word=Annotation

대중적인 발음 - 어노테이션

여기선 어노테이션이라 칭하겠음

 

1.본래 주석이란 뜻으로 사용됨

2.인터페이스를 기반으로 문법

3.클래스에 특별한 의미 부여 || 기능 주입 가능

 

종류

1.built-in annotation

) Override

2.Meta annotation

) @Target

3.Custom annotation

)public @interface AnnotationName{}

 

쨋든 글에서 다루어볼것은 Spring 프레임워크에 들어있는 자주쓰이는 기본 어노테이션들을 다루어 보겠습니다.

 

[@Controller]

해당 클래스가 Controller임을 나타내기 위한 어노테이션

 

[@RequestParam]

Controller 메소드의 파라미터와 웹요청 파라미터와 맵핑하기 위한

어노테이션

 

[@ModelAttribute]

Controller 메소드의 파라미터나 리턴값을 Model 객체와 바인딩하기 위한 어노테이션

 

[@SessionAttributes]

Model 객체를 세션에 저장하고 사용하기 위한 어노테이션

 

[@RequestPart]

Multipart 요청의 경우, 웹요청 파라미터와 맵핑 가능한 어노테이션

 

[@CommandMap]

Controller메소드의 파라미터를 Map형태로 받을 때 웹요청 파라미터와 맵핑하기 위한 어노테이션(egov 3.0부터 추가)

 

[@ControllerAdvice]

Controller를 보조하는 어노테이션으로 Controller에서 쓰이는 공통기능들을 모듈화하여 전역으로 쓰기 위한 어노테이션(egov 3.0, Spring 3.2.X부터 추가)

 

[@RequestMapping]

 

이름

타입

설명

value

String[]

URL 값으로 매핑 조건을 부여 (default)

method

RequetMethod[]

HTTP Request 메소드 값을 매핑 조건으로 부여

사용 가능한 메소드는 GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE (7개)

params

String[]

HTTP Request 파라미터를 매핑 조건으로 부여

consumes

String[]

설정과 Content-Type request 헤더가 일치할 경우에만 URL이 호출됨

produces

String[]

설정과 Accept request 헤더가 일치할 경우에만 URL이 호출됨

 

 

[@ResponseBody

이 어노테이션이 붙으면 View Page를 리턴하는게 아니고 '데이터'를 리턴합니다.

즉, return type이 String이며 "home"이라는 문자열을 되돌려준다고 가정해볼께요.

@ResponseBody 어노테이션을  안붙이면 "home.jsp" 페이지를 보여주지만

어노테이션을 붙이게되면 "home"이라는 문자열 자체를 보여주게됩니다. 

 

[@RequestBody]

보통 AJAX + JSON을 사용할때 사용하는 어노테이션

요청받은 데이터의 Body(내용)의 전체내용을 파라메터로 받습니다.

 

View페이지의 AJAX요청의 contentType이 "application/json"이면 @RequestBody 어노테이션을 통해서만

웹서버에서 내용을 받을 수 있어요.

 

※주의 ResponseBody,RequestBody 문법 헷갈림 

 

[@RestController]

 

스프링 4 부터 @RestController 애노테이션의 경우 기존의 특정한 JSP 같은 뷰를 만들어 내는 것이 아닌REST

  식의 데이터 자체를 서비스하는 것을 말한다.

  - 스프링 3에는 해당 메소드의 리턴 타입에 @ResponseBody 애노테이션을 추가하는 형태로 작성되었다.

  - 기능은 달라진것이 없지만컨트롤러 자체의 용도를 지정한다는 점에서 변화가 있다고   있다.

  - URI 원하는 리소스를 의미한다.(복수형으로 작성)

  - URI에는 식별할  있는 데이터를 같이 전달하는 것이 일반적이다.

 

  // 컨트롤러 위에 어노테이션을 붙혀서 사용한다.

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

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

 

 @RestController

 @RequestMapping("/sample")

 public class RestControllerExampleController {

 

 }

 

 만약 import 오류가 발생하면 maven webmvc 버전을 확인하라.

 

 @RestController JSP 같은 뷰를 만들어 내지 않는 대신에 데이터 자체를 반환하는데이때 주로 사용되는 것은 단순 문자열과 JSON, XML, 등으로 나누어   있다.

 

 

이상 글을 마칩니다. 글은 계속해서 공부하고 싶은 어노테이션들이 추가될 예정입니다.

반응형
반응형

먼저 문법부터 복붙용

1.confirm()

//다양한 방법 
function confirmTEST(){
if(confirm( ".java의 개발일기에 들어오시겠습니까?" ) == true){
alert("Hello, World!");
}else {return false;}				
}

$("#confirmBtn").click( function() {
if(confirm(".java의 개발일기에 들어오시겠습니까?" ) == false) {
return false;
 }
});

$("#confirmBtn").click( function(e) {
        return confirm(".java의 개발일기에 들어오시겠습니까?");
});

 

실행

 

 

2.prompt()

function promptTEST(){
var promptValue = prompt("블로그 이름 맞추기");
if(promptValue == '.java의 개발일기'){
alert("Hello, World!");
} else {
alert("땡!");
location.href = 'https://java119.tistory.com/';
}
}
			

 

실행

 

반응형
반응형

vi 에디터는 모든 Linux/ Unix 시스템에서 사용할 수 있습니다.

vi 에디터를 사용하기 위해서 마우스 입력 장치가 필요 없으며, 키보드 입력으로 모든 기능을 사용할 수 있기 때문에 터미널 환경에서 주로 사용되는 프로그램 입니다.

vi editor 는 vi(sual) editor  약자이며 “브이-아이 에디터” 라고 부릅니다.

 

vi 와 vim 차이점

vim은 vi IMproved의 줄임말로 vi를 더욱 개선한 버전

 

결국 지금은 똑같이 쓰이는

 

자주쓰는 명령어 && 핵심 정리

vi file 해당 파일 열기 ex) vi system.d

view file

 

vi 모드 종류

사용자가 예시 vi system.d 실행시 명령모드로 시작(처음은 명령모드)

 

1.명령 모드

ESC 명령모드로 전환

커맨드를 입력하는 모드

 

처음 vi 사용하시는 분들 필독!

 

저장하는

 

예시

1.insert or i 누르고 입력 모드로 전환 내용 변경

2.ESC 키로 다시 명령 모드 전환

3.Shift + : 키를 누르면 제일 밑줄에 : 생긴다.

4.w 입력해 :w 만든 엔터 저장 성공

 

파일 저장 종료

:w 저장

:w [파일명] 다른이름으로 저장

:w! [파일명] 다른이름으로 저장 같은 이름이 존재하여도 덮어쓰기

:wq 저장 종료

:wq! 강제저장 종료

:q! 저장하지 않고 강제종료

:q 저장하지 않고 종료

 

이동 명령

:set number 줄번호 보기

gg 맨위 이동

Shift + g , :$ 맨밑 이동

→←↑↓ 화살표 발향으로 이동

[BackSpace] 한 문자 왼쪽으로

[Enter] 다음 라인의 시작으로

 

페이지 단위 이동

[Ctrl]-f 한 페이지 위로

[Ctrl]-b 한 페이지 아래로

[Ctrl]-u 반 페이지 위로

[Ctrl]-d 반 페이지 아래로

 

파일에서의 이동

nG 또는 :n n번째 라인으로 이동

 

복사 명령

라인 단위 복사

yy 한 라인 복사

nyy n개의 라인 복사

y0 또는 y^ 커서 위치부터 라인의 처음 까지 복사

y$, Y 커서 위치부터 라인의 끝 까지 복사

단어 단위 복사

yw 커서 위치에서 오른쪽 한 단어 복사

yb 커서 위치에서 왼쪽 한 단어 복사

붙여 넣기

p 커서 위치에서 오른쪽에 붙여 넣기

P 커서 위치위 윗 줄에 붙여 넣기

 

취소(되돌리기) 명령

u 취소(되돌리기) undo (window Ctrl + z 동일)

U 커서가 위치한 줄에서만 취소(되돌리기)

Ctrl+R 되돌리기를 되돌리기 redo

 

삭제 명령

문자 단위 삭제

x 커서가 위치한 곳의 한 문자 삭제

라인 단위 삭제

dd 한 라인 삭제

 

2.입력 모드(편집 모드)

INSERT or i 입력모드로 전환

메모장같이 텍스트를 입력할 있는 모드

 

텍스트 편집 명령

a 커서 뒤에 삽입

A 줄의 마지막에 삽입

i 커서 앞에 삽입

I 줄의 시작에 삽입

o 현재 커서의 다음에 빈 라인을 생성

O 현재 커서의 앞에 빈 라인을 생성

 

w 한 단어 오른쪽으로 이동, 새 단어의 시작 문자에 위치,구두점을 한 단어로 인식

b 한 단어 왼쪽으로 이동, 새 단어의 시작 문자에 위치,구두점을 한 단어로 인식

핵심 명령어와 기본 사용법을 다루어봤습니다.

제 생각엔 개발자는 이정도만 알아도 톰캣,자바의 xml 파일은 다 수정가능할꺼라고 생각합니다.

 

반응형
반응형

이클립스로 열심히 웹 개발을 하던 중 갑자기 log4j 로그나 System.out.println()이 Console에 찍히지 않는다.

 

해결 방법 : 이클립스 상단 메뉴 -> Project -> Build Auomatically 체크

- 체크되어 있는 경우 저장시 자동으로 소스파일이 컴파일 된다.

 

 

반응형

+ Recent posts