기존에 스프링으로 추가한 것을 스프링 부트로 구현한 것에 검색 세부조건(신상품, Best, 할인)과 정렬조건을 추가로 하였다.

관리자 화면에서 스타일 숍 상품에 대한 검색과 함께 일반 사용자 화면에서 검색 기능을 합하여 구현을 하였다.

github에 소스코드를 다시 push를 하였다.

https://github.com/KYUNGSUB/springboot-lala-market.git

 

GitHub - KYUNGSUB/springboot-lala-market

Contribute to KYUNGSUB/springboot-lala-market development by creating an account on GitHub.

github.com

세부 기능은

- 주 검색 기능

- 세부 검색 기능

- 신상품, Best, 할인 등에 따른 검색

- 정렬조건으로 최신순, 낮은 가격순, 높은 가격순이 있다.

동작 확인은 http://43.200.20.11/product/list이다

물론 관리자로 로그인을 하여야 한다. (user9/!pw09)

로그인하면 관리자 페이지 http://hostname/aindex로 이동 한 후 메뉴 상품 관리->상품 리스트를 선택하면 된다.

Posted by 세상을 살아가는 사람
,

지난 번에 스프링을 이용해서 이정원씨가 지은 "Do it 웹사이트 기획 입문"의 기획서인 라라마켓 쇼핑몰을 일부 구현을 하였고, 블로그에 기술하였다. (https://blog.naver.com/ksseo63/222750784956 ~ https://blog.naver.com/ksseo63/222770023453)

여기서는 스프링 부트를 이용하여 구현해 본다. 같은 기능을 스프링 부트를 이용해서 빨리 구현을 하다보니 기능을 자세히 검증하지 못하고 주 기능만 구현하였다.

구현한 것을 자세히 기술할 필요가 있지만, 남은 기능을 계속 구현할 필요성도 있어서 고민이다. 그래서 우선 여기서 현재까지 구현한 것을 간단하게 기술하고, 앞으로 남은 기능을 계속 추가해 보고자 한다.

우선 개발환경은 다음과 같다.

- Windows 10 Home 또는 Pro OS

- JDK-11.0.16

- STS4 IDE

- MySQL (AWS RDS상에서 동작

구현해야 할 기능에 대한 설계서는 이정원씨가 지은 "Do it 웹 사이트 기획입문"에서 나온 화면정의서(라라마켓_관리자_화면정의서, 라라마켓_이용자_화면저의서)와 여러 기획자료를 참고하였다.

구현한 기능은 다음 순서에 따라 구현하였다. 이것은 스프링으로 개발했던 것을 기반으로 하다보니 같은 순서를 따랐다.

- 라라마켓 레이아웃 추가

- Security 적용

- 관리자 페이지

- 상품 카테고리 관리

- 상품관리 -> 상품등록

- 상품관리 -> 상품 리스트

- 정책관리 -> 정책

- 정책관리 -> 약관관리

- 관리자기능 -> 배너관리

- 회원가입

소스 코드는 github에 등록을 하였다. (https://github.com/KYUNGSUB/springboot-lala-market)

구현된 것을 아마존 클라우드 AWS EC2를 사용하여 동작 시켜 본다.

EC2는 Linux Ubuntu OS를 사용하기 때문에 Windows 환경과는 약간 차이가 있다. 따라서 다음과 같이 수정해 주어야 한다.

github 원격 레포지토리에 있는 소스 코드를 $ git clone https://github.com/KYUNGSUB/springboot-lala-market.git명령어를 입력하여 clone 한다.

$ cd springboot-lala-market을 사용하여 폴더 내로 이동한다.

src/main/resources/application.properties 파일의 설정 정보를 다음과 같이 수정한다.

# server.port=80    # Linux에서 80 포트를 사용하려면 sudo(슈퍼유저) 권한으로 앱을 실행하여야 한다. 따라서 8080 포트를 사용하도록 주석으로 처리해 준다.

spring.servlet.multipart.location=/home/ubuntu/upload

kr.talanton.upload.path=/home/ubuntu/upload

# port
# server.port=80

# 생략된 부분이 있음...
spring.servlet.multipart.enabled=true
#spring.servlet.multipart.location=D:\\zzz\\upload
spring.servlet.multipart.location=/home/ununtu/upload
spring.servlet.multipart.max-request-size=30MB
spring.servlet.multipart.max-file-size=10MB

#kr.talanton.upload.path=D:\\zzz\\upload
kr.talanton.upload.path=/home/ubuntu/upload

# 생략된 부분이 있음...

파일 업로드 시 임시로 생성되는 파일과 파일을 저장할 폴더로 /home/ubuntu/upload를 지정하고 폴더를 생성해 준다.

gradlew 파일에 실행 권한을 부여한다.

$ chmod +x ./gradlew

앱의 실행파일을 생성한다.

$ ./gradlew bootJar./

성공적으로 build가 되고 build/libs 폴더 밑에 springboot-lala-market-0.0.1-SNAPSHOT.jar가 생성됨을 알 수 있다.

생성된 jar 파일을 홈으로 복사한 후 다음 명령어를 사용하여 실행한다.

$ java -jar springboot-lala-market-0.0.1-SNAPSHOT.jar &

AWS EC2는 Ubuntu Linux OS를 사용하므로 Windows OS에서 동작할 때와 약간 차이가 있다. 따라서 일부 수정이 필요하다.

1. basic.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<th:block th:fragment="setContent(content)">
        <th:block th:replace="~{./layout/header :: header}">
        </th:block>
    <div class="container-fluid">
        <th:block th:replace = "${content}"></th:block>
    </div>
    <th:block th:replace="~{./layout/footer :: footer}">
    </th:block>
</th:block>
</html>

windows OS에서는 <th:block th:replace="~{/layout/header :: header}"> 라고 하여도 동작하나 "./layout"으로 수정을 해주어야 한다. 이하 다른 파일도 동일하다.

2. HomeController.java

package kr.talanton.lala.main.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import lombok.extern.log4j.Log4j2;

@Controller
@Log4j2
public class HomeController {
        @GetMapping("/")
        public String home(Model model) {
                log.info("home...");
                return "home";
        }
}

home() 메소드의 반환형으로 view 페이지를 지정하기 위하여 Windows OS에서는 "/home"을 사용하나, AWS EC2에서는 "home"을 사용하여야 한다. 다른 Controller일 경우도 이와 같이 처리해 주어야 한다.

아래는 브라우저에서 AWS EC2의 주소를 사용하여 접속한 경우이다.

다음과 같이 iptables을 설정하면 80 port 번호로 들어오는 패킷을 8080 포트로 port forwarding할 수 있으며, 외부에서 80 port로 접속할 수 있다.

$ sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

Posted by 세상을 살아가는 사람
,

이제 2주면 현재 강의하고 있는 과정이 끝난다.

11명이 남았는데, 3명이 취직을 해서 나오지 않고 있다.

한 명은 취직을 위해 오늘도 면접을 본다.

나머지 7명

그중 휴가 한 명(?)

3명은 나와서 포트폴리오 작업 중

한 명은 지각한다고(?)

한 명은 연락 두절(?)

한 명은 또 지각(?)

고지가 이제 얼마 남지 않았는데, 꾸물거릴 시간이 없다.

꾸준히 노력을 해서 더 좋은 직장, 더 나은 대접을 받아야겠다.

나는 그렇게 생각하는데, 요즘 젊은이들 이해가 안된다...

내가 재벌집 막내 손자로 다시 태어나도 그럴까?

나는 후회없는 하루를 보내고 싶다.

나는 한번 경험을 해서 안다. 지금은 꾸물거릴 때가 아니다.

꾸준히 최선을 다해서 공부를 해야할 때이다.

그래야 인정을 받는다...

동정을 받지 말고, 비굴하지 말고, 한심한 존재로 평가받지 말아야 한다...

 

'old_인생사' 카테고리의 다른 글

OOP  (0) 2015.07.27
기술의 발전에 따른 교육의 어려움  (0) 2015.07.25
속이 보일땐  (0) 2015.07.17
티스토리를 다시 시작하면서  (0) 2015.07.12
Posted by 세상을 살아가는 사람
,