인프런에서 김영한님 스프링 강의에서 빌드하는 과정 중 cmd창에서 gradlew build가 되지 않았다. 이 때, 환경변수 설정이 되지 않아 설정된 위치를 찾지 못해 빌드되지 않는 것 같아 환경 변수 설정을 해주었다. * 참고로 스프링 부트는 톰캣 서버가 내장되어 있기에 jar 형식으로 빌드하면 별도의 서버 구축 없이 해당 파일만 실행 시키면 동작하게 된다. 따라서 만약 서버가 구축된 환경이라면 war 형식으로 빌드하여 해당 파일을 서버에 배포해주면 된다. 이클립스 프로그램을 사용할 때(자바 개발 시) JAVA가 설치된 위치를 찾게 해주기 위해서 환경변수 설정을 해야한다. 제어판 검색 제어판 > 시스템 및 보안 클릭 제어판 > 시스템 및 보안 > 시스템 클릭 제어판 > 시스템 및 보안 > 시스템 > 고..
1. 어제 이어서 로그인, 마이 페이지 1) 인터셉터 - 위와 같은 단점으로 인터셉터 개념 사용 - 인터셉터는 컨트롤러 들어가기 직전에 요청을 가로채서 검사를 해줄 수 있는 기능 - 필터와 인터셉터의 개념은 똑같으나 위치가 다르다는 차이점이 존재함 - 부가적으로 AOP는 필터 개념은 아니고, 컨트롤러나 메서드가 실행될 때마다 검사를 하고 싶을 때 사용할 수 있는 기능 - 로그, 트랙잭션 같은 개념이 AOP에 속함 - 인터셉터의 사용은 HandlerInterceptor 인터페이스(2번째 사진에 3, 6, 9번-3,6만 자주 사용 됨)를 상속 받아 사용함. - 3번은 진입 전에 요청을 받아서 확인 하는 것, 6번은 컨트롤러가 수행 되고 나서 내가 검사하고 싶은 기능이 있으면 사용, 9번은 마지막(최종 뷰로 ..
1. 이미지 파일 불러오기 1) 첫번째 방법 * ajaxController package com.coding404.myweb.controller; import java.io.File; import java.io.IOException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.GetMapping; import org.sprin..
1. 파일 업로드 - 업로드: 1) 일반 업로드: form 형식, 2) 비동기 업로드 AJAX(드래그 하면 바로 올라가는 거) - 저장: 1) 데이터 베이스 2) 하드 디스크 3) 클라우드 1) 일반 업로드 - 4번째 사진 참고 사항 - 파일 업로드에서는 enctype(인코딩 타입)을 multipart/form-data 반드시 써줄 것! - 파일 type은 file - 아래는 컨트롤러 - trasferTo: 파일 업로드를 진행해줍니다. - 일반 업로드 실습 1] 단일 2] 단일 태그로 다중 파일 업로드 3] 복수 태그로 여러 파일 업로드: list에서 빈 값 제거 넣을 것! list.stream().filter( (x) -> x.isEmpty() == false ).collect(Collectors.to..
1. 카테고리 처리 - 테이블 생성 - 첫번째 카테고리부터 끝까지 전부 드래그 해서 ctrl + shift + enter(46개) - SELECT * FROM PRODUCT_CATEGORY; 이거 확인 - 그 다음에 위에 코드블럭 쳐서 구조 파악하기 SELECT * FROM PRODUCT_CATEGORY A1 LEFT OUTER JOIN PRODUCT_CATEGORY A2 ON A1.CATEGORY_PARENT_LV = A2.CATEGORY_LV AND A1.CATEGORY_DETAIL_PARENT_LV = A2.CATEGORY_DETAIL_LV AND A1.GROUP_ID = A2.GROUP_ID; * 확인(1) SELECT A1.CATEGORY_NM, A2.CATEGORY_NM, A3.CATEGORY..
1. 어제 검색 기능 이어서 설명 1) 검색 폼에서는 키워드, page, amount 데이터를 넘깁니다. 2) 목록 조회 and total 동적 쿼리로 변경 * productMapper.xml select * from PRODUCT where prod_writer = #{user_id} = date_format( #{cri.startDate}, '%Y-%m-%d')]]> and prod_name like concat('%', #{cri.searchName}, '%') and prod_content like concat('%', #{cri.searchContent}, '%') order by prod_price asc, prod_price desc, prod_id desc limit #{cri.pageSt..
1. 어제 이어서 mySQL에서 테이블 생성 CREATE TABLE PRODUCT( PROD_ID INT PRIMARY KEY AUTO_INCREMENT, ## PK 자동증가값 PROD_REGDATE TIMESTAMP DEFAULT NOW(), ## 등록일 기본값 시간형 PROD_ENDDATE VARCHAR(20), ## 판매종료일 문자형 시간 PROD_CATEGORY VARCHAR(20), ## 카테고리 키 PROD_WRITER VARCHAR(20), ## 작성자 FK PROD_NAME VARCHAR(300), ## 상품명 PROD_PRICE INT NOT NULL, ## 가격 PROD_COUNT INT NOT NULL, ## 재고 PROD_DISCOUNT INT DEFAULT 0, ## 할인율 기본값..
1. 유효성 검사 - 메이븐 레파지토리 → 추가 한 다음에 refresh gradle * VaildController, ex01, ex01_result, validVO 더보기 - VaildController package com.simple.basic.controller; import java.util.List; import javax.validation.Valid; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.Errors; import org.springframework.validation.FieldError; import o..