일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- JPA
- SQL
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- Redis
- 이벤트루프
- 정처기
- 다이나믹프로그래밍
- MongoDB
- Spring Boot
- 게시판
- 분할정복
- document database
- NoSQL
- 동적계획법
- 호이스팅
- in-memory
- 스프링 부트
- 캐시
- spring security
- github
- 실행 컨텍스트
- 스프링 시큐리티
- 스프링부트
- VMware
- 영속성 컨텍스트
- 정보처리기사
- 레디스
- sqld
- 깃허브
- 자바의 정석
- Today
- Total
목록Web (27)
FreeHand
@RequestMapping @Slf4j @RestController public class MappingController { @RequestMapping("/hello-basic") public String helloBasic() { log.info("helloBasic"); return "ok"; } } @RequestMapping 애노테이션은 URL과 메서드를 매핑한다. 스프링 부트 3.0 이전에서는 /hello-basic과 /hello-basic/을 같은 요청으로 매핑했다. 스프링 부트 3.0 부터는 서로 다르게 매핑한다. 따라서 필요시 배열로 다중 설정을 해줘야 한다. @RequestMapping({"/hello-basic", "/hello-basic/"}) @RequestMapping 애노테..

로그 라이브러리는 Logback, Log4J, Log4J2 등이 있는데, SLF4J는 이것들을 통합해서 인터페이스로 제공한다. SLF4J 인터페이스의 구현체로 Logback 같은 라이브러리를 사용한다. @RestController public class LogTestController { // 로그 선언 private final Logger log = LoggerFactory.getLogger(getClass()); // private static final Logger log = LoggerFactory.getLogger(Xxx.class) @RequestMapping("/log-test") public String logTest() { String name = "Spring"; // 로그 출력 log..

이전글 Servlet과 JSP 애플리케이션 요구사항 회원 정보 이름(username) 나이(age) 기능 요구사항 회원 저장 회원 조회 회원 도메인 @Getter @Setter @NoArgsConstructor public class Member { private Long id; private String username; private int age; pressky99.tistory.com MVC 패턴 여기서는 request 객체의 내부 저장소를 모델로 사용한다. 회원 등록 폼 - 컨트롤러 @WebServlet(name = "mvcMemberFormServlet", urlPatterns = "/servlet-mvc/members/new-form") public class MvcMemberFormServ..
애플리케이션 요구사항 회원 정보 이름(username) 나이(age) 기능 요구사항 회원 저장 회원 조회 회원 도메인 @Getter @Setter @NoArgsConstructor public class Member { private Long id; private String username; private int age; public Member(String username, int age) { this.username = username; this.age = age; } } 회원 저장소 public class MemberRepository { private static Map store = new HashMap(); private static long sequence = 0L; // 싱글톤 priva..
서블릿 등록 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @ServletComponentScan // 서블릿 자동 등록 @SpringBootApplication public class ServletApplication { public static void main(String[] args) { SpringApplication.run(ServletApplication.class, args); } } import jakart..

field-name: field-value 형식으로 이루어짐 Content-Type 데이터의 형식 Content-Type: text/html;charset=UTF-8 Content-Type: application/json Content-Type: image/png Content-Encoding 데이터의 압축 방식 Content-Encoding: gzip Content-Encoding: deflate Content-Language 데이터의 자연어 Content-Language: ko Content-Language: en Content-Length 데이터의 길이 Referer 현재 요청된 페이지의 이전 페이지 주소(유입 경로를 알 수 있음). 요청에서 사용 User-Agent 클라이언트의 애플리케이션 정보(..
상태 코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Informational): 요청이 수신되어 처리중 2xx (Successful): 요청 정상 처리 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 4xx (Client Error): 클라이언트의 잘못된 요청으로 서버가 요청을 수행할 수 없음 5xx (Server Error): 서버가 정상 요청을 처리하지 못함 코드 메시지 설명 200 OK 오류 없이 전송 성공 201 Created 요청 성공해서 새로운 리소스가 생성됨 202 Accepted 요청이 접수되었으나 처리가 완료되지 않음 204 No Content 요청을 성공적으로 수행했지만 응답에 보낼 데이터가 없음 301 Moved Permanently ..

주요 메서드 GET 리소스 조회 서버에 전달할 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달 바디를 통해 데이터를 전달할 수 있지만 권장하지 않음(지원하지 않는 서버가 많음) POST 요청 데이터 처리 바디를 통해 데이터를 전달 주로 새로운 리소스 등록(생성), 프로세스 처리에 사용 클라이언트는 /members에 리소스 생성 요청 서버가 /members/100에 리소스 생성. Response의 Location으로 알려줌 PUT 리소스를 대체(덮어쓰기) 해당 리소스가 없으면 생성 클라이언트가 리소스 위치를 알고 URI 지정 (POST와 차이점) 예: PUT /files가 아닌 PUT /files/car.jpg로 리소스의 URI를 지정 PATCH 리소스 부분 변경 DELETE 리소스 삭제 ..
URI 설계 회원 목록 조회 /read-member-list 회원 조회 /read-member-id 회원 등록 /create-member 회원 수정 /update-member 회원 삭제 /delete-member 리소스와 행위를 분리, 계층 구조 활용 회원 목록 조회 /members 회원 조회 /members/{id} 회원 등록 /members/{id} 회원 수정 /members/{id} 회원 삭제 /members/{id} 조회, 등록, 수정, 삭제(행위)는 HTTP 메서드로 구별한다. REST API URI Naming Conventions and Best Practices (restfulapi.net)
HTTP 메시지 구조 start-line header empty line message body 시작 라인 start-line = request-line(요청) / status-line(응답) request-line = method request-target HTTP-version (예: GET /search?q=hello&hi=ko HTTP/1.1) status-line = HTTP-version status-code reason-phrase (예: HTTP/1.1 200 OK) 헤더 HTTP 전송에 필요한 부가정보 field-name: field-value 예: Content-Type: text/html;charset=UTF-8 바디 실제 전송할 데이터 (HTML, 이미지, 영상, JSON 등)