본문 바로가기
반응형

Develop223

[Java] String, StringBuffer, StringBuilder 실무 코드를 살펴보다보니 String을 +하기보다는 StringBuilder나 StringBuffer를 통해 append하는 것이 많았다. String에서 +가 효율성이 떨어진다고 듣기는 했는데, 구체적인 개념을 정리하기 위해 글을 쓴다. String, StringBuffer, StringBuilder는 java.lang 패키지에 속한 클래스들이다. 별도로 import를 해주지 않아도 사용이 가능하다. String 문자열 implements Serializable, Comparable, CharSequence jdk 1.5 이후부터 +연산은 StringBuilder 사용해 성능 최적화 (단, 여러줄에 걸쳐 +할 경우 StringBuilder도 여러번 선언) public final class String .. 2021. 2. 2.
HTTP 상태 코드 상태 코드 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational): 요청이 수신되어 처리중 (거의 사용하지 않는다) 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청 완료하려면 추가 행동 필요 4xx (Client Error): 클라이언트 오류. 잘못된 문법 등으로 서버가 요청을 수행할 수 x 5xx (Server Error): 서버 오류. 서버가 정상 요청을 처리 못함 2xx 200 OK 201 Created - 요청 성공해서 새로운 리소스가 생성됨 202 Accepted - 요청 접수 되었으나 처리는 x 204 No Content - 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터 x 3xx 30.. 2021. 2. 1.
HTTP 메소드와 API 설계 API URI 설계 가장 중요한 것은 리소스를 식별하는 것 리소스와 행위 분리. ( ex: 리소스: 회원, 행위: 조회, 등록, 삭제 ) ex: POST /orders/{orderId}/start-delivery (컨트롤 URI) HTTP 메소드 GET: 리소스 조회 POST: 요청 데이터 처리 (주로 등록에 사용) PUT: 리소스 덮어쓰기 (있으면 대체, 없으면 생성) PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 HEAD, OPTIONS, CONNECT, TRACE, ... HTTP 메소드 속성 안전; Safe Method 멱등; Idempotent Methods 캐시 가능; Cachable Methods 안전 호출해도 리소스 변경 X ex: GET, HEAD, OPTIONS, TRACE .. 2021. 2. 1.
[Spring] Interceptor 인터셉터 인터셉터는 말 그대로 중간에서 가로채는 일을 한다. 컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로챈다. Filter와 차이점 JSP의 Filter와 유사한 동작을 한다. 둘 다 Controller로 들어가는 요청을 가로채 특정 작업을 하기 위한 용도로 사용되지만, 여러 차이점이 있다. Filter Interceptor 접근 범위 같은 웹 어플리케이션 스프링 내의 모든 객체 호출 시점 DispatcherServlet 실행 전 DispatcherServlet 실행 후 설정 위치 web.xml spring-servlet.xml 구현 방식 web.xml 설정 spring-servlet.xml 설정 및 메소드 구현 제공 J2EE 표준 스펙 Spring .. 2021. 1. 29.
Web Server와 WAS 차이부터 연동 방법까지 AJP에 관해서 알아보면서 삽질하다보니 웹서버, 와스까지 흘러들어왔다. 찾아보는 김에 개념을 정리해둔다. 서버의 흐름하면 보통 위 그림과 비슷한 형식으로 그려져있다. 사용자는 80번 포트를 통해 웹서버(Apache)에 요청을 보내고, 만약, 서블릿이 필요한 요청이라면 웹서버(Apache)가 WAS(tomcat)에 요청을 보낸다. 웹 서버와 WAS의 차이 Web Server 웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고 html 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램 정적 컨텐츠(html, css, javascript, image, ...)를 제공하는 서버 ex: Apache, NGINX, ... WAS; Web Application Server 인터넷 상에서 HTTP 프로토콜을 통해 .. 2021. 1. 28.
[java] this와 this() this : 인스턴스 자신을 가리키는 참조 변수 - 객체의 주소를 가리킨다 this() : 클래스 내부의 생성자를 호출 - 생성자에서만 호출 가능 - 제일 첫 문장에서 호출 가능 - 생성자 자기 자신 호출 불가 (재귀호출 불가) 예제 public class User { private Integer id; protected String account; public String password; public User(Integer id, String account, String password) { this.id = id; this.account = account; this.password = password; } public User(Integer id) { this(id, "a", "b"); } } 참조.. 2021. 1. 26.
[Spring Boot] Request method 'DELETE' not supported Request method 'DELETE' not supported @DeleteMapping을 이용해 게시글 삭제 기능을 구현하고 있었는데, 405 에러가 떴다. Spring boot에서 put, delete 요청에서 @DeleteMapping이나 @PutMapping을 사용할 경우에는 application.properties에 다음 설정을 추가해야한다. spring.mvc.hiddenmethod.filter.enabled=true 다만, 추가적인 이슈가 있다면 tomcat과 연동해 사용할 경우에는 request의 body 내용을 HTTP POST Method일 때만 파싱해올 수 있다 tomcat에서 설정을 바꿔주거나 스프링에서 제공하는 필터 등을 사용하면 된다. (방법은 참고2 링크) 참고 (1) p.. 2021. 1. 20.
[eclipse] mustache 이용하기 intellij와는 다르게 eclipse에서는 mustache 플러그인이 존재하지 않는다. *.mustache 형식으로 파일을 생성할 수는 없지만 하이라이트, 기울기 등의 효과가 없어 코드를 작성, 수정이 힘들다. html 파일로 생성한 뒤에 파일 이름 수정을 통해 .mustache로 바꾸는 경우도 있지만, 매번 이렇게 하기는 힘들 것이다. 그래서 나는 아예 mustache 형식의 파일은 html 문법을 따르도록 설정해두었다. window - preferences - General - Content Types Add Root 버튼 클릭 후 Mustache 입력 (이름은 자유롭게 지정해도 된다.) File associations의 Add 버튼을 누르고 *.mustache 추가 Associated edito.. 2021. 1. 19.
[JPA] 더티 체킹 (설명만 보려면 게시글 아래로) 게시글을 수정하는 코드를 작성하고 있다. 순서대로 Controller와 Service 코드의 일부이다. @PutMapping("/api/v1/posts/{id}") public Long update(@PathVariable Long id, @RequestBody PostsUpdateRequestDto requestDto) { return postsService.update(id, requestDto); } @Transactional public Long udpate(Long id, PostsUpdateRequestDto requestDto) { Posts posts = postsRepository.findById(id) .orElseThrow(() -> new Illega.. 2021. 1. 18.
반응형