서블릿에서 원하는 HTTP Response 보내기
·
Spring
서블릿에서 원하는 HTTP 응답을 보내기 위해서는 HttpServletResponse 을 설정하면 된다.TMI ✨이렇게 서블릿 중에서도 HTTP 요청과 응답을 다루는 서블릿을 HTTP servlet 이라고 부른다.서블릿은 웹 서버에서 동작하는 작은 자바 프로그램이다. 서블릿은 웹 클라이언트로부터 요청을 받고, 이에 응답하는데 다들 알다시피 일반적으로 HTTP 요청/응답을 처리하는데 사용된다. 1. setContentType()을 통해 응답할 response의 content type을 정해주자. 이때 옵션으로 인코딩 방식도 정해줄 수 있다. res.setContentType("text/html;ISO-88859-4"); 2. 응답 헤더를 지정하자. setHeader()를 이용하면 된다. res.setHea..
인코딩과 디코딩
·
여러가지 모르는 지식들
문자 인코딩문자 인코딩이란 사람이 사용하는 문자를 컴퓨터가 읽을 수 있는 언어인 바이트코드로 바꾸는 것이다.그런데, 문자를 바이트코드로 변환하는 공통적인 기준이 있어야 하지 않을까? A 컴퓨터를 사용하는 A양과, B 컴퓨터를 사용하는 B양이 ‘Hello!’이라는 문자를 주고 받고 싶을 때, A 컴퓨터와 B 컴퓨터가 H는 이진수로 1001000 , e는 1100101 … 이라는 사실을 약속해야 문자를 잘 주고 받을 수 있을 것이기 때문이다.그래서 초기에 미국에서 정립되어 사용되었던 것이 그 유명한 아스키 코드, American Standard Code for Information Interchange 이다.아스키 코드는 알파벳 A는 숫자로 65, B는 66… 을 정의하여 문자를 주고받기에 용이했다. 덕분에..
@ResponseBody를 통한 객체 직렬화 과정
·
Spring
참고로, Http Request의 accept 헤더 값이 application/json이라는 가정 하의 직렬화 과정이다. @RestController@RestController는 @Controller를 기반으로 하는 어노테이션으로, 해당 어노테이션을 붙인 컨트롤러의 존재하는 모든 메서드에 @ResponseBody를 적용한다.즉, @RestController 는 @Controller와 @ResponseBody 를 합친 어노테이션이라고 할 수 있다. @ResponseBodyController 어노테이션이 있는 컨트롤러(handler) 메소드에서 사용할 수 있다. 해당 어노테이션을 Controller method(Handler method)에 적용하면 Controller method에서 반환되는 value가 ..
8월 30일 과제
·
과제
08:00 - 12:00 (4H)- 하이퍼텍스트와 하이퍼미디어와 차이, HTTP, HTML 등 관련 개념 정리 (1H 30M)- HttpServletResponse와 HttpOutMessage 차이 (30M)- ResponseEntity 반환하는 경우 디버깅 및 디버깅 결과 정리 (2H)14:00 - 18:30(4H 30M)- 스프링 객체 반환 디버깅 포스트 작성 완료 및 게시 (2H 30M)- 코테 2문제 (2H) 8:30 - 12:00(3H 30M)- 함수형 프로그래밍과 객체지향 프로그래밍 방식 비교, 함수형 인터페이스, 람다식 개념 정리, 직접 써보기 (2H)- 자바 공부 (1H)- 최근 탐색한 음악 조회 API 개발 시작(30M)
오버라이딩
·
JAVA
B 클래스가 A 클래스를 상속받는 관계, 즉 B extends A 에서 B 클래스는 (A 클래스를) 상속받는 클래스, A 클래스는 (B 클래스가) 상속하는 클래스라고 표현한다. 상속받는 자식(서브) 클래스는 상속하는 부모(슈퍼) 클래스의 메서드를 재정의 할 수 있다. 이를 오버라이딩(Overriding)이라고 한다. 이러한 오버라이딩에는 제한 조건이 붙는다. 1. 메소드 이름이 같아야 한다.2. 자식 클래스의 접근 제어자는 부모 클래스 메서드의 접근제어자의 범위와 같거나 넓어야 한다.예시) A 클래스의 exam 메소드 접근 제어자가 protected라면 이를 오버라이딩하는 B 클래스의 exam 메소드는 protected, public만 가능하다. private, defalut는 불가능하다. 3. 반환타입..
springboot Could not move temporary workspace 오류
·
Error
새로 프로젝트를 만들고 프로젝트 빌드 진행 시 springboot Could not move temporary workspace 오류가 발생했다.아래 글과 같은 상황이었고, 보안 프로그램의 실시간 보호 기능을 비활성화해서 해결했다. 3월초에 프로젝트 생성할 때는 이런 오류가 안났던 것 같은데...  https://www.inflearn.com/questions/1209468/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%B2%AB-%EC%8B%A4%ED%96%89%EB%B6%80%ED%84%B0-%EA%B3%84%EC%86%8D-%EC%98%A4%EB%A5%98%EA%B0%80-%EB%82%98%EC%9A%94-%E3%85%A0..
pull 했는데 FETCH_HEAD warning: skipped previously applied commit
·
Error
$ git pull -r origin developFrom https://github.com/Booksly/BOOKSLY-SERVERbranch develop -> FETCH_HEAD warning: skipped previously applied commit ca1bab1 hint: use --reapply-cherry-picks to include skipped commitshint: Disable this message with "git config advice.skippedCherryPicks false" 오류는 아니고, 깃의 어시스트라고 할 수 있겠다.예를 들어 현재 있는 #10 브랜치에서 커밋한 변경사항이 develop 브랜치에 이미 반영되어 있는 내용이라면,해당 커밋을 skip한다. 실제로 ..
@JoinColumn의 name과 referencedColumnName 속성
·
Spring/스프링 Data JPA
@JoinColumn은 왜 사용할까요? 외래키 만드려고 사용해줍니다. 그런데 테이블과는 다르게 객체에서는 참조하는 테이블의 pk가 아닌, 참조 객체 그 잡채를 외래키로 작성하잖아요? 즉 DB와 다른 방식을 사용하는 것이므로 무언가 처리가 필요합니다. 그리고 그 처리를 해주는게 JPA 인데,JPA는 우리가 참조 객체를 써주면 자동으로 해당 객체의 pk를 찾아서 DB에 외래키로 작성해줍니다. (그래서 JPA를 ORM 기술이라고도 부르죵.) 기본적으로, JPA가 생성해주는 외래키 이름(name)은 "참조 필드 이름_참조하는 객체의 pk"예요. 근데 우리가 기본으로 생성해주는 외래키 이름말고, 다른 이름으로 바꿔서 테이블에 저장하고 싶을 수 있져? 그때 쓰라고 나온게 name 속성입니다. name 속성 알아보기..