전체 글395 [Spring] 쇼핑몰 - 17 상품 등록(INSERT) DB , ItemVO 먼저, 상품을 등록할 테이블 하나 생성후, ItemVO로 변수들을 생성해준다. admin-mapper 상품을 등록할 쿼리문을 하나 만들어준다. AdminService 인터페이스, AdminServiceImpl 클래스 reg_item.html form태그로 th:action을 주어 경로를 admin 컨트롤러에 있는 regItem에 넣어주고, method를 post로 한다. 각 name 속성을 각각 알맞게 넣어준다. AdminController 컨트롤러 상품등록 페이지에서 이전에 만들었던 쿼리문을 model에 넣어 리스트를 조회한다. reg_item.html 컨트롤러에서 이름을 지정해준 catagoryListInUse 객체를 category라는 이름으로 카테고리 이름을 반복 출력해준다... 2023. 3. 29. [Spring] 쇼핑몰 - 16 페이지 권한 막기 (IntercepterConfig) 위와 같이 관리자 전용 관리페이지를 띄울 시 로그인이 안되어있는데, 지금은 악의적으로 사용자가 주소창에 주소를 쳐서 들어올 수 있는 보안에 아주 취약한 사이트이다. 이걸 막아줘보자. 하지만, 관리자페이지에 연관되어있는 곳에마다 다 해주면 또 응집도가 떨어질 수 있으니, intercepter를 사용해서 해보자. AuthoIntercepter 클래스 preHandle을 Override로 받아와주었다. preHandle은 특정 메소드가 실행되기 전에 가장 처음으로 호출해준다. 위와 같이 HttpSession을 이용해서 session 값을 요청받아왔고, MemberVO 객체에 loginInfo 데이터를 저장했다. 이후 조건문을 주어 페이지 이동처리를 하였다. intercepterConfig 클래스 AuthoIn.. 2023. 3. 29. [Spring] 쇼핑몰 - 15 IntercepterConfig로 응집도▲ AdminController 메뉴목록, 서브메뉴 목록 조회 쿼리문 삭제 해도 정상 실행. MenuIntercepter 클래스 intercepter 패키지를 하나 만들고 그 안에 MenuIntercepter 클래스를 만든다. 이후 HandlerInterceptor를 implemnets한다. 즉, MenuIntercepter에서 HandlerInterceptor를 구현하게 만들어주었다. 그리고 @Override를 통해 postHandle을 가지고왔다. 이후 생성되어있는 ModelAndView를 통해 Object 객체에 AdminController에 있는 adminService쿼리문을 넣어주었고, 각각 이름을 menuList, subMenuList로 Html로 넘겨주게 된다. AdminController 컨트.. 2023. 3. 29. 응집도를 높이는 기능 Intercepter 사용법. 응집도를 높이는 기능 intercepter Admin컨트롤러에 있는 카테고리 관리 페이지나 상품 등록 페이지 상품 재고관리 페이지 상품 정보 수정 페이지에 있는 메뉴 목록 조회, 서브 메뉴 목록 조회 model 을 쓴것과 같이 이 기능들은 어쩔수 없이 화면에 보여지기 위해 컨트롤러에 계속 반복해서 집어 넣었다. 이런 중복된 코드들을 없애서 좀 더 단편화된 코드로 바꿔보자. 그렇게 해야 응집도가 높아지면서 보다 나아진다. 이렇게 응집도를 낮추는 intercepter에 대해서 공부해보자. 먼저 프로젝트를 하나 만든다. 이번 프로젝트에서는 Lombok, Spring Boot DevTools, Spring Web, Thymeleaf 이 4개를 쓸 것이다. html을 t1, t2 ,t3 이렇게 3개 만들어주었다... 2023. 3. 29. [Spring] 쇼핑몰 - 14 서브메뉴 클릭시 classappend 적용하기 사이드 메뉴에서 메뉴를 출력할때마다 subMenuCode가 콘솔창에 출력되니까, subMenuCode를 데이터로 넘겨준다. 따라서 admin 컨트롤러로 가서 상품등록페이지 컨트롤러에 해당 커맨드 객체를 추가해주면 된다. AdminSubMenuVO 커맨드 객체 추가. 커멘드 객체는 내가 굳이 html로 데이터를 보내지 않더라도 자동으로 넘어간다. admin_side.html 이곳에서 위 컨트롤러에서 추가한 커맨드 객체를 불러와준다. 따라서 4개의 subMenu페이지에서 상품등록 페이지만 아래와 같이 SUB_MENU_002가 뜨는 것을 확인할 수 있다. 왜? 상품등록 페이지 컨트롤러에서만 커맨드 객체를 추가 해줬으니까. 카테고리 관리 컨트롤러와 상품 재고 관리 컨트롤러, 상품 정보 수정 페이지 컨트롤러에도 .. 2023. 3. 29. [Spring] 쇼핑몰 - 13 관리자 메뉴, 서브메뉴 띄우기 side_layout 상품 정보 테이블과 상품 이미지 정보 테이블 두개를 만들었다. 관리자 메뉴와 관리자 서브 메뉴 데이터 베이스도 만들어주었다. AdminController 컨트롤러 이곳에 메뉴 목록이 조회될 쿼리문이 들어올 것이다. adminMenu-mapper.xml 관리자 메뉴 정보 DB를 끌어와 resultMap에 데이터를 저장시켜준다. AdminService 인터페이스 매개변수 및 리턴 타입 결정 방법(우선적으로 실행 시 쿼리를 작성) 매개변수 : 쿼리 실행 시 빈 값을 채울 용도 1. 쿼리에서 채워 줄 값이 없을 경우 : 매개변수 없음 2. 채워줄 값이 하나일 경우 2-1) 채워줄 값이 숫자인 경우 : 매개변수 int형 하나 2-2) 채워줄 값이 문자인 경우 : 매개변수 String형 하나 3. 채워줄 값이 여러.. 2023. 3. 28. [Spring] 쇼핑몰 - 12 Session이용해서 로그인, 로그아웃시키기 header.html header.html에 회원가입에도 id가 memId가 있고, 로그인에도 id가 memId가 있다. 중복으로 줬는데 오류는 안나지만 썩 좋은 코드는 아니다. 하지만 잘 갖고만 오면 문제는 없다. 자바스크립트에서 이런식으로 memId를 불러온다면 코드 젤 처음에 실행된 memId를 가지고온다. 따라서 이런식으로 loginModal 안에 있는 memId를 들고오겠다고 정확하게 명칭을 줘야한다. MemberController 컨트롤러 member-mapper STATUS에 != 3 을 준 이유는 위와 같이 데이터베이스에서 3은 탈퇴회원으로 분류하였기 때문이다. MemberService 인터페이스 매개변수 및 리턴 타입 결정 방법(우선적으로 실행 시 쿼리를 작성) 매개변수 : 쿼리 실행 시.. 2023. 3. 28. [Spring] 쇼핑몰 - 11 회원가입시 다음 API로 주소 넣기 https://postcode.map.daum.net/guide#usage Daum 우편번호 서비스 우편번호 검색과 도로명 주소 입력 기능을 너무 간단하게 적용할 수 있는 방법. Daum 우편번호 서비스를 이용해보세요. 어느 사이트에서나 무료로 제약없이 사용 가능하답니다. postcode.map.daum.net 위 주소로 들어가게 되면 API를 사용할 수 있는 코드들을 확인해볼 수 있다. 위 첫번째 줄에 있는 script 태그를 복사해서 html에 붙여넣기 해준다. admin_layout.html 과 user_layout.html 복사 위치는 내용에 나오는 js보다 위에 해주면 된다. 이후 위 스크립트 안에 있는 코드 내용들을 복사해서 js파일에 붙여넣어주면 되는데, header.js 이렇게 함수를 생성.. 2023. 3. 28. [Spring] 쇼핑몰 - 10 회원가입시 전화번호 배열, ID 중복검사 join 할때, id 중복체크 검사하기. header.html memberVO에 있는 java로 생성된 변수에서 전화번호는 memTell이다. 하지만, 여기서 배열로 줄 것이기 때문에 memTells로 name속성을 주자. header.html DB에서 MEMBER 테이블을 하나 생성해준다. MemberVO 이곳에서 새롭게 배열 변수 memTells를 하나 만든다. member-mapper.xml 회원가입 쿼리에서 memberVO에서 새롭게 만들어준 memTells를 사용했다. 하지만 이것을 배열 형태로 바꿔줄 것이다. MEM_TELL 부분에 #{memTells} 값으로 바꿔주고, foreach문으로 돌려준다. open은 foreach문이 실행될때 최초에 한번만 할 거, separator는 foreach.. 2023. 3. 28. [Spring] 쇼핑몰 - 9 부트스트랩 문법 hide.bs.modal 적용 Bootstrap은 모달이 켜지거나 꺼질때 자동으로 값이 ' ' 이 되도록 해주는 기본적인 기능이 있다. header에 login 모달 창을보면 아이디와 비밀번호 input 박스에 값을 넣고 끄고 다시 들어와도 똑같이 채워져있다. BootStrap hide.bs.modal이란, 인스턴스 숨기기 메서드가 호출되면 즉시 시작되는 이벤트이다. 위 함수를 한번 해보기 위해 header의 자바스크립트를 하나 만들어주자. html에서 loginModal 이라는 id 값에 담긴 데이터를 js로 가지고 온 뒤 loginModal 이라고 저장한다. 어떤 데이터를 가지고 올지는 아래 html에서 확인해보자. header.html form태그에 id를 만들자. user_layout이 열리면 어차피 header도 함께 열리니.. 2023. 3. 28. [Spring] 쇼핑몰 - 8 BootStrap으로 로그인과 회원가입 폼 만들기 LOGIN 부트스트랩에서 Modal을 찾아 Static backdrop으로 찾아간 후 코드를 저장한다. header.html header.html에서 작업할 것이기 때문에 복사 붙여넣기를 해준 후 data-bs-toggle~~ 머시기 빨간 박스를 복사한다. 그리고 id 값을 loginModal로 바꿔준다. 헤더 부분에 있는 LOGIN에 와서 span 태그로 감싸 복사 붙여넣기를 한 후 , 아이디를 설정해주면 된다. 이렇게 LGOIN을 눌러주면 부트스트랩에서 끄집어온 디자인이 잘 된다. 계속해서 header에서 LOGIN 페이지를 제대로 바꿔보자. 위처럼 일단 디자인만 손봐보았다. LOGIN을 눌렀을떄 폼 모달 화면. 다음에 데이터를 넣어 가입을 완료해보자. JOIN 똑같이 이것을 복사하여 body 태그에.. 2023. 3. 28. [Spring] 쇼핑몰 - 7 관리자 사용 여부에 따른 사용자 화면 리스트 관리자가 사용여부 (IS_USE)에 Y 준것만 상품 리스트에 조회시켜보는 기능을 해보았다. user_layout.html 먼저, user_layout.html로 들어와 admin_layout.html에 있는 파일을 모두 복사한후, side는 필요없으니까 적절하게 지워준 후 헤더부분과 내용부분을 연동시킨다. item_list.html 여기는 item_list.html인데, 관리자 모드에서 콘텐츠 부분에 나올 부분이므로 지금은 비워두었다. item 기능 부분을 본격적으로 만들어 볼것이다. controller와 Service, mapper들을 활용해야 하므로 없으면 만들어주자. item-mapper.xml 매퍼에서 이렇게 쿼리를 짜주면 된다. namespace는 이전에 이미 만들어져있던것이다. ItemServ.. 2023. 3. 28. 이전 1 ··· 19 20 21 22 23 24 25 ··· 33 다음