1. 프로젝트 환경 STS 3.9.9 Java 8 Apache Tomcat 8.5 MySQL MyBatis 2. 프로젝트 생성 2-1. Project name 생성 2-2. Spring MVC Project 클릭 2-3. Next 2-4. 패키지명 입력 후 [Fi
의존성 주입 스프링은 ApplicationContext를 통해서 객체들을 관리하여 의존성 주입을 구현합니다. 스프링에서 ApplicationContext가 관리하는 객체들을 '빈(Bean)'이라고 불립니다. 빈과 빈사이의 의존관계는 'xml설정', 'Java설정' 방식
MySQL은 공식으로 Maven을 지원합니다. 따라서 pom.xml에 <dependency> 태그 추가를 통한 라이브러리 설치Maven repository 사이트에서 "mysql"을 검색하고 MySQL connector/j 를 선택 후, 본인에게 맞는 버전을 선택
라이브러리 추가는 pom.xml에 Maven코드를 추가만 시켜주면 되기 때문에 매우 간단하지만 라이브러리 추가만으로 'HikariCP 커넥션 풀'을 사용할 수 없습니다. root-context.xml에 DataSource에 대한 설정을 추가해주어야만 '커넥션 풀' 사용
1. MyBatis란?  자바 어플리케이션과 데이터베이스를 연동한 프로그래밍을 하기 위해서 JDBC를 사용합니다. JDBC를 사용할 경우 코드가 복잡, 1개의 클래스에 반복되는 코드 존재, 하나의 파일에 자바 언어와 sql언어가 같이 있어서 재사용성이 안좋은 점
SQLSessionFactory를 이용해서 코드를 직접 작성하더라고 직접 Connection 객체를 얻어서 JDBC 코딩이 가능합니다. 하지만 좀 더 편하게 작업하기 위해선 SQL을 어떻게 처리할 것인지를 별도의 설정을 분리해주고, 자동으로 처리되는 방식을 사용하는
Log4jdbc는 스프링에서 SQL문을 실행한 로그를 효과적이고 직관적으로 볼 수 있도록 해주는 라이브러리입니다.Maven repository 사이트에서 log4jdbc-log4j2를 검색하면 Maven 코드를 얻을 수 있습니다. 아래의 코드를 pom.xml에 추가합니
src/main/java 패키지를 3개 추가com.test.model : VO(Value Object) 패키지입니다. 데이터 타입을 저장합니다.com.test.mapper : DAO(Data Access Object) 역할을 하는 패키지입니다. 데이터베이스 접속하는 역
목표 가장 먼저 구현하는 기능은 "회원가입" / "로그인" 입니다. 해당 기능을 구현하기 전에 기본적인 페이지 생성과 각 페이지 접속을 위한 Controller 설정을 하겠습니다. 1. 메인 페이지 제작 메인페이지를 제작하기 간단한 메인 페이지 UI를 설계하였습니다.
회원가입 기능을 구현하기 위해서 다음과 같은 기능을 구현합니다.회원가입페이지(join.jsp)에서 필요 정보를 입력합니다.입력 후 '가입하기' 버튼을 클릭합니다.입력한 회원정보가 데이터베이스에 저장되고 메인 페이지로 이동합니다.아이디(memberId)비밀번호(membe
회원가입 페이지에서 가입하고자 하는 아이디를 입력해당 아이디가 이미 가입된 경우 아이디 입력란 안에 빨간색 경고표시, 가입된 아이디가 없을 경우 초록색 경고 표시속성 클래스가 id_input_box인 div태그 아래에 span태그 두 개를 추가합니다.각각의 span태그
목표 이메일 전송이 가능하도록 기본 환경 셋팅 View(회원가입페이지)에서 입력한 데이터(이메일 주소)를 Controller(Member Controller)로 전송 이메일을 입력한 뒤, 인증번호 전송 버튼을 클릭하면 칸에 입력이 가능하면서 입력한 이메일로 인증번호 전
주소 검색 API를 활용하여 주소를 검색하여 검색된 주소가 회원가입페이지의 주소 필드에 입력되는 것을 목표로 합니다.'주소 찾기' 버튼 클릭주소찾기 팝업창에서 자신이 찾고자 하는 주소 검색 및 선택선택된 주소 회원가입페이지 주소 필드에 입력주소 검색 API는 다음에서
유효성 검사 기능 구현을 목표로 합니다. 사용자가 입력해야 할 데이터를 잘못된 형식으로 입력하거나, 입력하지 않은 상태에서 가입하기 버튼을 눌렀을 땐 에러가 발생하게 됩니다. 따라서 개발자는 에러가 발생하지 않게 사용자가 애플리케이션을 사용하도록 유도해야 합니다.
큰 틀의 유효성 검사는 완성을 하였습니다. 작은 부분에 유효성 검사를 적용할 부분들은 많이 있습니다. 예를 들어서 아이디의 형식과 길이를 제한하도록 하는 유효성 검사나 비밀번호의 조합 등의 유효성 검사들을 만들 수 있습니다. 여러가지 유효성 검사중 이메일 형식 유효
로그인에 사용할 쿼리문은 제출받은 로그인, 비밀번호 데이터와 비교하여 일치하는 데이터가 있을 시 해당 아이디의 정보를 반환하고, 없을 시 null을 반환하도록 할 것입니다.먼저 테스트에 사용하기 위해서 회원가입된 아이디와 비밀번호를 확인해보겠습니다위의 결과 테이블에서
목표 실제 회사에서 사용할 웹 애플리케이션을 제작하고 있다 가정하고 우리는 비밀번호를 데이터베이스에 저장하고 있습니다. 데이터베이스 자체에 보안이 되어 있을 것이지만 만약 뚫리게 된다면 비밀번호가 무방비하게 노출된다는 문제점이 있습니다. 이러한 문제점을 보완하기 위해
메인페이제 로그인 성공 시 등장하는 div태그에 로그아웃 버튼을 제작하고, 해당 메서드를 제작하겠습니다.로그인 성공 시 등장하는 class속성이 "login_success_area"인 div태그 안에 아래의 a태그를 추가합니다. url경로는 "/member/logout
GNB(Global Navigation Bar)란 웹디자인 용어로써 어느 페이지를 들어가든지 공통적으로 사용할 수 있는 메뉴를 의미합니다. GNB 영역을 구현하면서 관리자 계정으로 로그인하였을 때 관리자 페이지로 이동할 수 있도록 GNB영역에 '관리자 페이지 이동' 버
목표  메인페이지에서 관리자 계정으로만 로그인하였을 때만 관리자 페이지로 이동할 수 있는 링크가 보이도록 하였습니다. 하지만 일반 계정 혹은 로그인하지 않더라도 관리자 페이지 url만 알고 있다면 접속을 할 수 있게 됩니다. AdminController.java
프로젝트 쇼핑몰의 주제를 "책"으로 합니다. 상품에 대한 CRUD(Create, Read, Update, Delete) 기능을 구현하기 전에 상품 정보에 포함될 '작가'에 대한 정보를 좀 더 세분화하여 '작가'에 대한 정보를 CRUD기능을 구현하려고 합니다. 상품에 대
목표 작가 등록 기능 구현을 위해서 '영속 계층(데이터 처리 계층)', '비즈니스 로직 계층', '도메인 모델 계층' 작업을 하고자 합니다. 도메인 모델 계층 => AuthorVO 작성 \- 작가 관련 데이터 운반 역할 영속 계층 => AuthorMapper.xml
목표 작가 관리 페이지(authorManage.jsp)에 작가 목록을 출력을 구현할 것입니다. 먼저 정해진 갯수와 페이지의 작가 정보를 출력을 구현한 뒤, 사용자가 마우스를 통해 페이지 이동을 할 수 있도록 '페이지 이동 인터페이스'를 구현하겠습니다. 0. 수정 사
'작가 관리(목록) 페이지(authorManage.jsp)'에서 "작가 이름"을 클릭하였을 때 '작가 상세 페이지'로 이동 구현을 목표로 합니다. '작가 상세 페이지'는 사용자가 선택한 작가에 대한 상세 정보를 볼 수 있는 페이지입니다.'작가 상세 페이지'에서는 '작가
작가 '수정 페이지(authorModify.jsp)'를 구현합니다. 또 서버단에서 작가 정보 수정 기능을 구현합니다.수정 페이지도 동일하게 작가 한 명의 데이터 즉, test_author테이블의 하나의 행 데이터를 가져와야 합니다. 일일이 Mapper, Service,
목표 상품 등록 기능을 구현하고자 합니다. 전체적인 구현 방향은 "회원 등록", "작가 등록"과 동일하지만 "상품 등록"구현에서는 '팝업창을 통한 작가 선택', '제이쿼리 캘린더 라이브러리 활용', 'JSON을 활용한 캘린더 데이터 출력', '위지윅' 적용과 같은 기능
목표 authorId태그에 데이터를 넣기 위해 '작가'를 선택할 수 있도록 '팝업 창'을 띄우고, 원하는 '작가'를 선택을 하게 되면 팝업창은 닫히고 태그에 해당 작가의 id값이 입력되도록 하는 것이 목표입니다. 1. 작가 선택 버튼 추가 및 css 설정 기존의 작가
목표 '카테고리 리스트'데이터를 뷰(View)로 전송하여, 사용자가 카테고리를 선택할 수 있도록 전송받은 데이터 가공한 뒤 출력하는 방법이 있습니다. 첫 번째는 작가 목록 구현때와 같이 리스트 데이터를 객체 통째로 전달하는 방법으로 뷰에서는 넘겨받은 데이터를 JSTL코
사용자가 '상품 등록'을 눌렀을 때 공란이 있는지 없는지 확인 후, 공란이 있을 시 해당 공란에 대한 경고 표시와 '상품 등록'실행을 막는 유효성 검사 구현을 목표로 합니다.추가 수정 사항으로 할인율 입력란을 소수를 입력을 해야 에러가 나지 않습니다. 하지만 일반 사용
목표 상품 목록 페이지에 구현되어야 할 '페이징화', '검색'등을 적용할 것입니다. '작가 목록' 기능 구현과 동일한 기능이기 때문에 간략하게 진행할 것입니다. 검색 기능의 경우 '책 제목'을 통한 검색 기능만 구현하겠습니다. 다른 여러 옵션을 통한 구현은 차후 일반
목표 상품 목록(goodsManage.jsp)페이지에서 상품의 이름을 클릭하였을 때 이동하는 조회 페이지를 구현하고자 합니다. 조회 페이지에는 선택한 상품에 관한 등록된 정보가 출력되어야 합니다. 앞서 구현했던 작가 조회 페이지 구현과 동일합니다. 1. Mapper메
목표 상품 수정 페이지와 수정 기능 구현을 목표로 합니다. 1. 수정 페이지 이동 수정 페이지로 이동할 수 있는 인터페이스인 버튼과 페이지 이동에 사용될 URL매핑 메서드를 작성하겠습니다. 더불어 '상품 목록 페이지(goodsManage.jsp)' 이동 버튼 기능도
'상품 수정 페이지'에서 '삭제' 버튼을 추가하여 클릭 시 해당 상품 정보의 삭제를 수행하는 기능 구현을 목표로 합니다.AdminMapper.java상품 정보 삭제 쿼리를 수행하는 메서드를 AdminMapper.java인터페이스에 추가합니다.AdminMapper.xml
목표 '작가 수정 페이지'에서 '삭제'버튼을 추가하여 클릭 시 해당 상품 정보의 삭제를 수행하는 기능 구현을 목표로 합니다. 1. Mapper 상품 정보 삭제 쿼리를 수행하는 메서드를 AuthorManage.java인터페이스에 추가합니다.
목표 '상품 등록 페이지'에서 상품 이미지를 업로드하고 등록한 이미지의 정보를 DB에 저장하는 기능을 구현하고자 합니다. 1. 전체적 방향
서버에서 업로드(컴퓨터에 저장) 처리하기 위해서는 기본적으로 사용자가 뷰(view)에서 업로드할 이미지를 선택하고, 선택된 이미지 파일을 서버로 전송을 해야 합니다. 사용자가 이미지를 선택할 수 있도록 UI를 추가하고 선택된 파일이 개발자가 허용하는 파일인지 체크하는
목표 이미지 저장까지 구현을 하였습니다. 앞으로 저장한 이미지를 호출하여 홈페이지 화면에 띄우는 것을 구현을 할 것입니다. 하나의 페이지에 저장된 이미지가 한 개인 경우 크게 문제는 없습니다. 하지만 이미지가 여러 개인 경우 특히 저장된 이미지가 용량이 큰 경우 홈페이
뷰에서 이미지 파일을 서버로 전송하기 전에 사용자가 업로드를 위해 선택한 파일이 이미지 파일인지 체크를 하도록 코드를 작성하였습니다. 하지만 엄연히 뷰 단계에서의 파일 체크일 뿐, 만약 이미지 파일 체크 코드가 작동을 하지 않거나 다른 경로를 통해 업로드 url매핑 메
목표 비동기 방식으로 url을 호출하면 이미지를 반환해주는 url매핑 메서드를 구현할 것입니다. 이 메서드는 구현해야할 상품 등록 페이지에서의 미리 보기 이미지뿐만 아니라 앞으로 사용자가 검색을 하였을 때 볼 수 있는 이미지들을 출력하는데도 사용될 것입니다. 1. 전
목표 이미지 삭제 기능 구현이며 서버 단계에서 이미지 삭제를 처리하는 url매핑 메서드 구현을 목표로 합니다. 1. 방향 이미지 삭제 기능을 수행하는 url매핑 메서드를 작성할 것입니다. 이미지 파일 삭제를 위해 가장 핵심이 되는 메서드는 File클래스의 delete