1. git이 설치되어 있는지 확인하기 위해 터미널을 열어 아래 명령어를 입력한다.

git version 2.39.3 (Apple Git-145)

 

 

git이 설치되어 있다면

git version 2.39.3 (Apple Git-145)

 

이런식으로 git의 버전이 출력된다.

만약 git이 설치되지 않았다면 구글에서 git 설치 방법에 대해 검색해서 설치하고 시작하자

 

 


2. git 저장소 생성하기

자신의 git에 접속해서 대시보드 왼쪽 상단 녹색 New 버튼을 클릭해 저장소를 생성한다.

 

 


3. 터미널에서 git 초기 세팅을 한다.

$ git config --global user.name "닉네임"
$ git config --global user.email "메일주소"

git에서 사용할 닉네임과 메일 주소를 입력한다.

 

 


4. git에 만들어 놓은 저장소와 연동할 로컬 폴더를 생성하고 init 하기

$ cd /Users/hoon/git/springBootBoard
$ git init

git 저장소에 연결하고 싶은 폴더를 하나 생성한다.

생성된 폴더로 이동한다. (위 예제에서는 springBootBoard를 git 로컬 폴더로 지정하기 위해 만들었음)

cd [이동할 폴더 경로] 혹은 cd 입력 후 해당 폴더를 터미널로 드래그앤 드랍해도 된다.

 

이후 해당 폴더 경로로 접속되면 git init 명령어를 작성해 해당 폴더를 git 폴더로 전환한다.

Initialized empty Git repository in /Users/hoon/git/springBootBoard/.git/

라는 문구가 나오면 init 성공.

 

 


5. git 원격 저장소 연결

$ git remote add origin "https://github.com/mipoung/springBootBoard.git"
$ git remote -v
$ git pull origin main

해당 저장소의 Code를 누르면 나오는 저장소 주소를 복사해서 위 명령어로 연결한다.

-v 명령어로 잘 연결되었는지 확인한다.

 

연결이 잘 되었다면 pull 명령어를 통해 원격 저장소의 내용을 로컬 폴더로 복사한다.

 

 

만약 pull 혹은 push 할때에 username과 password를 물어보면

username 에는 github 아이디를 적고

password는 git에서 토큰을 발급 받아 토큰을 적어야 한다. (깃허브 패스워드로 접속 불가함)

 

 

 


6. 토큰 발급 방법

github 로그인 후 오른쪽 상단 프로필 사진 클릭 -> setting -> 왼쪽 아래 developer setting -> 

Personal access tokens (classic)

이후 오른쪽 상단 Generate new token 을 클릭 후 classic을 눌러 토큰을 생성하면 된다.

Note는 생략 가능

Expiration는 토큰의 사용 기한

Select scopes는 권한 설정 (나는 전부 체크)

 

이후 토큰 생성 버튼을 눌러 토큰을 생성하는데, 생성된 후 나오는 토큰주소는 이 페이지를 나가면 다시는 못 보게 되니까 어딘가에 잘 저장해두어야 한다.

 

 


7. 이 외에 여러 명령어들

-- 깃 상태확인
$ git status

-- 원격 저장소 복제
$ git clone [url]

-- 변경된 모든 파일 스테이징
$ git add .

-- 변경된 사항 커밋(스테이징에 올라간 것)
$ git commit -m "Commit message"

-- 커밋 히스토리 보기
$ git log

-- 원격 저장소 확인
$ git remote -v

-- 변경 사항을 원격 저장소에 푸시
$ git push origin [branch-name]

-- 원격 저장소의 변경 사항을 로컬로 가져오기
$ git pull origin [branch-name]




-- 새 브렌치 생성
$ git branch [branch-name]

-- 브렌치 변경
$ git checkout [branch-name]

-- 다른 브렌치를 현재 브렌치로 병합
$ git merge [other-branch]

 

1. 자바, 스프링 부트 기초 다지기 (게시판 처음부터 끝까지 만들기)

 

2. jpa를 활용해 새로운 프로젝트 완성하기 + 배포

 

3. 리액트, 리액트 네이티브를 공부해 앱 만들어보기

 

4. git 사용법 익히기

 

5. json 데이터 등 여러 자료형 파싱방법

 

+ a

쿠버네티스 알아보기

기본적인 Map의 개념

Java에서 Map 인터페이스는 키-값 쌍을 저장하는 데 사용되는 자료구조입니다. Map은 인터페이스이기 때문에 직접 인스턴스화할 수 없으며, 대신 여러 구현체를 사용할 수 있습니다. 각 구현체는 서로 다른 특성을 가지고 있어, 사용 목적에 따라 적합한 구현체를 선택할 수 있습니다.

주요 Map 구현체:

  1. HashMap: 가장 일반적인 Map 구현체입니다. 키-값 쌍을 해시 테이블에 저장합니다. 키의 순서를 보장하지 않으며, null 키와 null 값을 허용합니다. 평균적으로 get과 put 연산은 O(1)의 시간 복잡도를 가집니다.
  2. LinkedHashMap: HashMap과 유사하지만, 삽입된 순서 또는 접근된 순서를 유지합니다. 이러한 특성 때문에 순회시 HashMap보다 약간 느릴 수 있습니다.
  3. TreeMap: 레드-블랙 트리를 기반으로 하는 Map 구현체입니다. 키에 대해 자연 순서 또는 Comparator에 의해 정의된 순서를 유지합니다. get, put, remove 연산은 O(log n)의 시간 복잡도를 가집니다.
  4. Hashtable: HashMap과 유사하지만 동기화됩니다. 멀티스레드 환경에서 안전하지만, 대부분의 상황에서는 Collections.synchronizedMap 또는 ConcurrentHashMap을 사용하는 것이 더 좋은 선택일 수 있습니다.
Map<KeyType, ValueType> map = new HashMap<>(); // HashMap 인스턴스 생성

map.put(key, value); // 키-값 쌍 추가
ValueType value = map.get(key); // 키를 사용하여 값 검색
map.remove(key); // 키-값 쌍 제거

boolean containsKey = map.containsKey(key); // 키 포함 여부 확인
boolean containsValue = map.containsValue(value); // 값 포함 여부 확인

int size = map.size(); // Map에 저장된 요소의 수
boolean isEmpty = map.isEmpty(); // Map이 비어있는지 확인

// Map 순회
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // 키와 값 사용
}

// 키 또는 값만 순회
for (KeyType key : map.keySet()) {
    // 키 사용
}
for (ValueType value : map.values()) {
    // 값 사용
}

map.clear(); // 모든 요소 제거

기본적인 map의 사용법

출처 : GPT


맵을 사용해 뷰에서 값을 컨트롤러로 받아와 바인딩 시킬 수 있다.

@Controller
public class MyController {

    @PostMapping("/submitData")
    public ModelAndView submitData(@RequestParam Map<String, String> dataMap) {
        // 데이터 처리 로직
        myService.processData(dataMap); // 서비스 레이어 호출

        ModelAndView modelAndView = new ModelAndView("resultPage");
        modelAndView.addObject("data", dataMap);
        return modelAndView;
    }
}

예를들어 뷰에서 name="age" value="12" 라고 되어 있는 요소를 전송하면 서버 컨트롤러에서

 

{ "age" : "12" }

 

라는 데이터가 map 객체에 자동으로 바인딩 된다.

이렇게 바인딩된 map 객체의 이름은 result 라고 한다면, 이 객체 result을 서비스로 보내 마이바티스 등의 매퍼에 파라미터로 보내 결과를 받아올 수 있다. 이 때에 마이바티스 XML 파일에서 파라미터의 값을 #{age}로 적어주면 age에 저장되어 있는 값이 자동으로 바인딩 된다.

예를들어

 

SELECT NAME, AGE

FROM HUMAN

WHERE AGE = #{age}

 

라는 쿼리문이 작성되어 있다면 위 경우 result에 저장된 age의 key 값을 자동으로 바인댕해 12가 입력 된다.

'Java' 카테고리의 다른 글

requestBody와 responseBody(보완예정)  (0) 2023.11.17

AJAX(Asynchronous JavaScript and XML)는 비동기식 웹 애플리케이션 개발을 위한 기술의 조합을 나타냅니다. 이 기술은 웹 페이지를 다시 로드하지 않고도 데이터를 서버로부터 비동기적으로 가져와서 웹 페이지의 일부를 업데이트할 수 있게 해주는 표준 기술입니다.

아래는 AJAX의 주요 특징과 구성 요소에 대한 설명입니다:

  1. 비동기성 (Asynchronous): AJAX는 비동기적인 통신을 지원합니다. 이는 페이지 전체를 새로 고치지 않고도 서버로부터 데이터를 요청하고 응답을 처리할 수 있게 합니다. 이는 웹 페이지의 응답성을 향상시키고 사용자 경험을 향상시킵니다.
  2. XMLHttpRequest 객체: AJAX의 핵심 요소는 XMLHttpRequest 객체입니다. 이 객체를 사용하여 브라우저와 서버 간의 데이터 교환을 처리합니다. 최근에는 JSON 형식이 더 일반적으로 사용되며, 실제로는 XML 외에도 다양한 데이터 형식을 다룰 수 있습니다.
  3. 이벤트 기반 프로그래밍: AJAX 요청과 응답은 이벤트 기반으로 처리됩니다. 즉, 비동기 작업의 성공, 실패 등의 이벤트에 대한 콜백 함수를 등록하여 처리합니다.
  4. 데이터 포맷: 초기에는 이름에서 알 수 있듯이 XML을 주로 사용했지만, 현재는 주로 JSON 형식이 더 많이 사용됩니다. JSON은 경량이면서 파싱하기 쉽기 때문에 선호되는 데이터 형식이 되었습니다.
  5. 웹 브라우저 지원: 모든 주요 웹 브라우저에서 AJAX를 지원합니다. 이는 크로스 브라우징에 유리하며, 웹 애플리케이션을 다양한 환경에서 동작시킬 수 있게 합니다.

아래는 간단한 AJAX 예제입니다. jQuery를 이용한 예제로, 최근에는 fetch APIXMLHttpRequest 객체를 직접 사용하는 추세입니다.

$.ajax({
    url: 'https://api.example.com/data',
    method: 'GET',
    dataType: 'json',
    success: function(data) {
        console.log('Data received:', data);
        // 받아온 데이터를 이용한 작업 수행
    },
    error: function(error) {
        console.error('Error:', error);
    }
});

이 예제에서는 $.ajax 함수를 사용하여 서버로부터 데이터를 비동기적으로 요청하고, 성공 또는 실패에 따라 적절한 콜백 함수를 실행하고 있습니다.

ajax 양식에서 data는 서버로 보낼 데이터 형식을 지정하고 dataType 은 서버에서 받아온 데이터 타입을 어떻게 활용할지 지정한다.

클라이언트에서 ajax를 통해 서버로 데이터를 json 형식으로 보내면 서버에서는 dto나 map 형식을 통해 데이터를 받아 처리할 수 있다. (@requestBody 어노테이션이 사용된다)

formData 형식으로 보낼 경우 @requestParm 형식이 주로 사용된다.

formData를 사용할 때에

formData = $('#submitForm').serialize();

와 같이 사용하기도 하는데 주로 form에 작성된 간단한 text 데이터만 사용 가능하다.
파일 업로드와 같은 바이너리 데이터를 사용하기 위해서는

var formData = new FormData();  
formData.append("username", $("#username").val());  
formData.append("email", $("#email").val());  
formData.append("profilePicture", $("#profilePicture")\[0\].files\[0\]);

와 같이 사용된다.

데이터 타입:

serialize(): 주로 텍스트 데이터를 처리하는 데 사용됩니다.
FormData: 텍스트와 바이너리 데이터 모두를 처리할 수 있습니다.
사용 용도:

serialize(): 주로 간단한 폼 데이터 전송에 사용됩니다.
FormData: 파일 업로드와 같이 바이너리 데이터가 필요한 경우에 사용됩니다.

간단히 말하자면

 

requestBody는 클라이언트(뷰)에서 서버(컨트롤러)로 데이터를 보낼 때 사용한다.

뷰에서 전송된 데이터를 받기 위해 컨트롤러에서 @requstBody 어노테이션을 매개변수 자리에 적어줌.

주로 ajax를 이용한 비동기 방식의 전송에서 사용됨.

 

responseBody는 서버(컨트롤러)에서 클라이언트(뷰)로 데이터를 전송하기 위해 사용한다.

컨트롤러 매서드 위에 작성된다.

 

 // Ajax를 사용하여 데이터 전송
    $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "/api/yourEndpoint", // 실제 서버 엔드포인트에 맞게 수정
        data: JSON.stringify(dataToSend),
        success: function (response) {
            // 성공 시 처리
            console.log("Data sent successfully");
            console.log(response);
        },
        error: function (error) {
            // 실패 시 처리
            console.error("Error sending data");
            console.error(error);
        }
    });

 

 

주로 이런 형식으로 데이터를 보내게 된다.

 

 

 

뷰에서 requestBody를 이용해 서버로 데이터를 전송할 때에는 주로 세가지 형식이 사용된다.

1. formData

2. json

3. xml

 

formData로 전송하면 서버에서는 @requestParm 어노테이션을 이용해 form 태그 내부에 있는 input 태그의 name 속성을 매핑해 데이터를 파싱한다. 파싱된 데이터는 setter를 이용해 객체에 저장해 주어야 한다.

 

json으로 보낼 경우에는 서버에서 @requestBody 어노테이션을 활용해 바로 객체에 매핑하고 저장할 수 있다.

// FormData에서 직접 JSON 객체 생성
var jsonData = {
    num: $('#insertForm input[name="num"]').val(),
    codeType: $('#insertForm select[name="codeType"]').val(),
    name: $('#insertForm input[name="name"]').val(),
    title: $('#insertForm input[name="title"]').val(),
    content: $('#insertForm textarea[name="content"]').val()
};

// Ajax 요청
$.ajax({
    type: "POST",
    url: "your_server_url",
    data: JSON.stringify(jsonData),  // JSON 데이터를 문자열로 변환
    contentType: "application/json",  // Content-Type을 application/json으로 설정
    success: function(response) {
        console.log('Success:', response);
    },
    error: function(error) {
        console.error('Error:', error);
    }
});

json 객체를 만들고 값을 가져온다음 ajax에서 data, contentType을 지정해주면 된다.

 

 

 

 

 

xml으로 데이터를 보내고 컨트롤러에서 파싱할 경우에는

@PostMapping(value = "/submitXml", consumes = MediaType.APPLICATION_XML_VALUE)
    public String handleXmlData(@RequestBody String xmlData) {
        // XML 데이터를 자동으로 파싱하여 처리
        System.out.println("Received XML data: " + xmlData);

        // 처리 로직...

        return "XML data received and processed successfully!";
    }

이런 형식으로 파싱해준다. 이때 받아온 xml 데이터는 문자열로 처리된다.

xml 라이브러리를 이용해 자동으로 매핑하는 방법이 주로 사용됨 (추후 작성)

'Java' 카테고리의 다른 글

map 사용법  (0) 2023.11.22

+ Recent posts