분류 전체보기 57

토이 프로젝트 1 | 상품의 분류를 나눈 카테고리를 셀프조인으로 짜기

셀프 조인(Self Join)을 사용하는 이유Self Join은 같은 테이블을 두 번 이상 사용하여 자기 자신과 조인하는 방식이다.특히, 계층적인 관계(Hierarchical Relationship)를 표현할 때 유용하다.이제, 왜 Self Join을 사용하는지 구체적으로 알아보자.   1. 계층적 데이터 표현 (Hierarchical Data)쇼핑몰의 카테고리, 회사 조직도, 댓글 대댓글처럼 상위-하위 관계를 표현할 때 사용한다.📌 예제: 쇼핑몰 카테고리SELECT c1.id AS category_id, c1.name AS category_name, c2.id AS parent_id, c2.name AS parent_name FROM category c1 LEFT JOIN category c2 ON ..

Spring MVC | redirect와 forward

redirect와 foward 처리 과정 비교Redirect클라이언트가 /ch2/write/jsp를 요청했다. write.jsp가 302번으로 응답을 했다. 상태 코드 300번대는 리다이렉트(다른 URL로 재요청)를 의미한다. 상태코드가 300번대인 리다이렉트는 응답 헤더만 있고 바디는 없다.>> 어디로 요청해야할지 location을 헤더 정보에 준다.  브라우저가 자동으로 이 location에서 알려준대로 새로운 요청을 한다.1번 요청은 클라이언트가 요청한 것이고, 3번 요청은 브라우저가 자동으로 요청한 것이다. 1번 요청이 GET/POST 상관없이 리다이엑트에서 자동으로 요청되는 3번은 GET으로 요청된다.   Forward클라이언트가 write.jsp한테 요청을 한다.write.jsp가 자기가 처리..

Spring MVC | @GetMapping, @PostMapping, URL인코딩

@GetMapping, @PostMapping //@RequestMapping(value = "/register/add", method = {RequestMethod.GET, RequestMethod.POST})//@RequestMapping("/register/add") //신규회원 가입화면@GetMapping("/register/add")public String Register(){ return "registerForm"; //WEB-INF/views/registerForm.jsp} RequestMapping을 간단하게 쓸 수 있도록하는게 GetMapping과 PostMapping이다.   @GetMapping("/register/add") public String Register(){ ..

Spring MVC | WebDataBinder, @ModelAttribute, @RequestParam

매개변수 타입이 HttpServletRequest 선언하면 request객체에서 year를 직접 꺼낸다.사용자가 요청할 때 보낸 year값을 읽어볼 수 있다.@Controllerpublic class RequestParamTest { @RequestMapping("/requestParam") public String main(HttpServletRequest request) { String year = request.getParameter("year");// http://localhost/ch2/requestParam ---->> year=null// http://localhost/ch2/requestParam?year= ---->> year=""/..

Spring MVC | @ModelAttribute

더보기package com.fastcampus.ch2;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import java.util.Calendar;@Controllerpublic class YoilController { @RequestMapping("/yoil") public String yoli(MyDate myDate, Model model){ //매개 변수가 너무 많아질 경우 MyDate타입으로 정의 char yoil = getYoil(myDate); ..

@WebFilter 어노테이션, javax.servlet 임포트 문제

WebFilter 어노테이션이 임포트가 안되는 문제 발생 나는 자바서블렛 관련된 api가 잘 불러와지지 않은 것이다.이 때는 maven 레포지토리에서 해당 dependency를 긁어오면 된다.https://mvnrepository.com/위는 메이븐 레포지토리 링크이다!  링크에 들어가 검색창에 java servlet을 검색했다.마음에 드는 버전을 클릭하면 위의 페이지처럼 나온다.(보통 Usages 수가 많을 것을 선택하는 게 무난하다.) 나는 maven 프로젝트를 하고 있기 때문에 maven을 눌러서 나온 dependency코드를 모두 복사했다. pom.xml 파일에 복사한 코드들을 붙여넣기하고 빌드해준다. 임포트가 정상적으로 이루어지고 어노테이션이 잘 사용되는 것을 볼 수 있다!

트러블 슈팅 2025.02.28

Spring MVC | 서블릿과 JSP (2)

HTTP는 상태 정보를 저장하지 않는 프로토콜로, 상태를 유지하려면 저장소가 필요하다.이를 위해 웹 애플리케이션은 여러 종류의 저장소를 제공한다.저장소는 주로 Map 형태로 데이터를 저장하며, 다양한 범위와 생존 기간을 가진 저장소들이 존재한다.HTTP의 상태 정보 저장HTTP는 기본적으로 상태 정보를 저장할 수 없다.이는 매번 요청마다 새로운 연결을 맺기 때문에, 예를 들어 로그인 정보나 장바구니 정보 같은 사용자 상태를 유지할 수 없다는 것을 의미한다. 이를 해결하기 위해 저장소가 필요하다.저장소 종류웹 애플리케이션은 4가지 종류의 저장소를 제공한다:pageContext: 현재 페이지에만 접근 가능한 저장소로, 요청할 때마다 새로 초기화된다.application: 애플리케이션 전체에서 접근할 수 있는..

1 과목. 데이터 모델링의 이해 | ORACLE, SQL Server, ANSI 표기 차이점 정리

ORACLESQL ServerFrom 절 생략 불가(의미상 필요없는 경우 DUAL 테이블 선언)From절 필요없는 경우 생략 가능SYSDATEGETDATEADD_MONTHSDATEADDMONTHS_BETWEENDATEDIFFTO_NUMBER, TO_DATE, TO_CHARCONVERTVARIANCE 분산VARSTDDEV 표준편차STDEV문자 상수의 경우 대소문자 구분문자상수의 대소문자 구분XNULL을 마지막에 배치NULL을 처음에 배치   ORACLEANSI  표준조인 (INNER, CROSS, NATURAL, OUTER)INNER JOIN기본 조인 연산,FROM절에 테이블을 컴마로 구분,WHERE절에 조인 조건 나열USING이나 ON 조건절을 필수적 사용ON 조건의 괄호는 생략가능USING 조건절 괄호..

자격증/SQLD 2025.02.25

Spring MVC | 서블릿과 JSP (1)

서블릿과 JSP는 거의 같다.Spring은 JSP를 발전시킨 것이다. 서블릿과 컨트롤러의 비교@WebServlet은 @Controller + @RequestMapping 과 유사한 역할을 합니다서블릿@WebServlet("맵핑할 URL 주소") 를 사용하여 URL을 맵핑합니다.URL 맵핑이 클래스 단위로 이루어지므로, 새로운 요청을 처리하려면 클래스를 추가해야 하는 단점이 있습니다.HttpServlet 클래스를 상속받아야 합니다.service(HttpServletRequest request, HttpServletResponse response) 메서드를 항상 사용해야 하며, 요청과 응답 객체를 매개변수로 받습니다.throws IOException을 사용하는 이유는 PrintWriter를 활용하여 응답을 ..

Spring MVC | 관심사의 분리, MVC 패턴

관심사: 해야할 작업 OOP 5대 설계 원칙 : SOLID1. SRP: 단일 책임 원칙             , 하나의 메서드는 하나의 책임(관심사)만 진다.  분리 방법: 관심사의 분리, 변하는 것과 자주 변하지 않는 것의 분리, 중복코드의 분리 출력(view)의 분리 : 변하는 것과 변하지 않는 것의 분리 Model 데이터를 주고받는 객체View 출력Controller 처리 [MVC 패턴]클라이언트 요청 -> DispatcherServlet (입력&변환) -> Controller -> DispatcherServlet (모델 생성) -> View