본문 바로가기

Study/Web

JSP CRUD 게시판 만들기 - 2

오늘은 지난번 게시글에 이어, Category Update 기능을 추가할 것이다. 

  • DB table 변경
  • Package Class 수정
  • JSP page source 수정
  • CRUD Project Deploy -->  누구나 웹 페이지에 접근할 수 있도록 변경
    • heroku.com server와 public DB server(db4free) 를 사용

 

 

 

 

 


 

 

 

 

 

1. Data Base Table 변경

     1) category 라는 필드를 추가해준다. 이 때 필드의 형식은 varchar(32)로 해주었다.  

         - 아래 사진 속 SQL 문장에서 BOARD라는 이름의 테이블에서 ALTER 을 사용해 테이블의 구조를 바꾸는 것.

 

 

 

 

 

category 생서 확인

 

 

 

 

 

2. Package class 소스 변경

     1) BoardVO.java 수정

 

      - 변경한 테이블 구조와 일치시켜야 한다. 이 때 private 데이터 추가, setter/getter method도 추가해준다.

         *BoardVO.java 파일의 역할: db 테이블의 구조를 그대로 가져와 하나의 table recoder를 넣을 수 있는 역할. --> 즉, Data들의 class.

 

 

     

BoardVO.java 수정

 

 

 

 

 

     2) BoardDAO.java 수정

 

        * CRUD 기능을 수행하는 SQL문장들을 실제로 불러서 실행시키고 그 결과를 가지고 오는 역할

 

 

 

 

          a. 추가한 필드를 사용하는 쿼리 문자열과 해당하는 method를 변경 --> 게시물 추가 기능

 

기존의 BOARD_INSERT, BOARD_UPDATE 변수에 각각 'category'를 추가해 주고, value 부분에 '?'를 하나 더 추가해 준다.

 

 

 

그리고 try문 사이에 getCategory() 부분을 추가해 준다.

 

 

 

 

 

 

          b. 추가한 필드를 사용하는 쿼리 문자열과 해당 메소드 변경을 해준다 --> 게시물 목록 기능

 

 

 

 

 

 

          c추가한 필드를 사용하는 쿼리 문자열과 해당 메소드 변경을 해준다 --> 게시물 변경 기능

 

BOARD_UPDATE = "update BOARD set category=?, title=?, writer=?, content=?, where seq=?"; 부분에서 각 '?'들을 1-5 숫자로 설정을 해줌.

 

 

 

 

그리고 바로 아래의 이 줄은, 지금 현재 읽어낸 내용이 어떤 것인지를 알려주기 위한 것이다. 

 

 

 

 

         

 

3. JSP Page 수정

 

      1) posts.jsp 수정

 

     - 목록 페이지

         : 추가한 필드인 카테고리를 목록에 표현한다

 

위에는 헤더, 밑에는 행

 

 

 

 

      2) editform.jsp 수정

 

      - 게시물 변경 폼 페이지

         : 추가한 필드인 카테고리 내용을 수정할 수 있도록 폼에 추가

 

 

 

 

 

 

 

 

 

 

완성된 결과

 

 

위의 수정 과정을 거치고 server에서 파일을 실행시키면, category부분에 아무것도 없는 상태이다. 그래서 Edit으로 10번째 글의 카테고리를 수정하여 입력하였다.

 

 

 

 

 

 

4. Deploy 

 

기존에는 자신이 만든 웹 페이지를 localhost를 입력해 확인할 수 있었다. 하지만 이제는 외부의 웹서버(heroku)를 이용해 다른 컴퓨터에서도 접속이 가능하게 해볼 것이다.

 

 

 

     1) Deploy 준비

         - 현재 project를 maven project로 변환 Configure>Convert to Maven Project

maven project

 

 

 

         - Java build path의 JRE version 확인 Configure>Java Build Path

              *heroku에서는 JRE 1.8을 지원하기 때문에 버전을 맞춰주어야 한다. 기존 버전과 다르다면 Add Library or Edit

 

 

 

 

     - pom.xml 수정

 

pom.xml 파일 수정

 

 

     기존 폼에서 WebContent 아랫줄을 추가로 입력해 준다.

 

          * maven war 파일을 생성할 때 발생할 수 있는 에러를 미리 방지하기 위함인데, war파일은 heroku에 올릴 때 사용되는 파일이다.

 

 

 

 

 

     - war파일 생성 Run As>Maven install

          

 

 

이때 maven이 잘 설치되면, project-target 디렉토리 안에 war 파일이 생성되어있어야 한다.

 

war파일 생성 완료

 

 

 

이 때 JRE 버전을 바꾸면 프로젝트 이름에 에러가 표시되는데, maven update를 해주어야 한다.

 

 

 

 

 

 

 

2) Heroku.com

     Heroku란 무엇인지에 대해 잠깐 정리해본다.

 

     먼저 Cloud Computing이란, "서로 다른 물리적인 위치에 존재하는 컴퓨터들의 리소스를 가상화 기술로 통합해 제공하는 기술" 이다.

 

     이것은 크게 3가지 종류로 나뉘는데, PaaS, IaaS, SaaS가 있다.

 

 

 

         1) PaaS (Platform as a Service)

                   --> 개발자들이 infrastructure에 신경쓰지 않고 앱을 개발할 수 있게 해줌. 사용자는 OS, Sever 하드웨어, 네트워크 등을 고려                           하지 않아도 됨. 

                                      구현할것: Applications, Data

 

                 --> IaaS와 다른 점은, 아마존과 같은 서비스가 VM을 제공하는 IaaS라면, PaaS는 node.js Java같은 runtime을 미리 깔아놓고,                            거기에 소스코드를 넣어 실행시키는 구조. 즉, 우리는 소스코드만 적어 build하는 것. Compile은 클라우드에서 해서 결과만                          가져오는 것이다.

 

                    장점_ 이미 설치된 미들웨어 위에 코드만 실행시키면 되기 때문에 관리가 매우 편함

                    단점_ 하나의 인프라를 기반으로 개발할 수 있음, 어플리캐이션이 플랫폼에 종속되어 개발되기 때문에 다른 플랫폼으로 이                            동이 어려움

 

                 ex. Heroku, Google App Engine, IBM Bluemix, Openshift, SalesForce 등

 

 

 

        2) IaaS (Infrastructure as a Service)    

                   --> Infrastructure 레벨을 제공하는 서비스를 의미. 사용자는 OS를 직적 올리고 그 상위 계층만 구성하면 됨

                                      구현할것: Application, Data, Runtim, Middleware, O/S            

 

                   -->  관리 측면에서 개발자와 인프라 관리자의 역할을 분리시킬 수 있음.

                   --> 가상 서버 하위 레벨에 대해 고객이 접근할 수 없음. 즉, 가상 서버 하위 레벨에 대해 고려할 필요가 없는 사용자가 적합함.

 

                 ex. AWS의 EC2 : 이것을 이용하면 우리는 물리적인 서버와 Network, Storage 등 직접 구비하지 않아도 원하는 OS를 설치해 

                                           서버로 사용할 수 있음.

 

 

 

        3) SaaS (Software as a Service)

                   --> 설치할 필요도 없이 클라우드를 통해 제공되는 SW

 

                   장점_ Public Cloud에 있는 SW를 웹 브라우저로 불러와 언제 어디서나 사용할 수 있다. 사용자는 웹에만 접속하면 된다.

                  단점_ 반드시 인터넷에 접속해야만 사용할 수 있음, 외부 데이터 노출에 대한 위험

 

                  ex. G-mail, Dropbox, Naver Cloud 

 

 

 

 

  

heroku.com/

 

Cloud Application Platform | Heroku

Heroku is a platform as a service (PaaS) that enables developers to build, run, and operate applications entirely in the cloud.

www.heroku.com

먼저 위의 사이트로 들어가 회원가입을 해준다.

 

 

 

그리고 heroku를 사용하기 위한 몇 가지 설정을 해야 한다.

 

     a. Install Heroku CLI (Command Line Interface)

 

     b. cmd promt/terminal에서

             1. 설치확인      heroku --version

 

 

             2. java plug-in 설치      heroku plugins:install java

 

 

             3. 로그인 heroku login

 

 

 

 

 

3) Deploy my app-Heroku war:deploy

     - project war파일을 deploy 해야한다.

         : 터미널에서 project/target 이동 후      heroku war:deploy [war파일명] --app [앱이름]

 

 

먼저 나는, heroku에 미리 만들어 놓은 'herokuu12'라는 앱에 deploy를 할 것이다. 

 

 

 

 

 

그리고 터미널에서 target 파일로 이동한다.

 

 

 

 

heroku war:deploy [war파일명] --app [앱이름]  의 명령어를 입력하면 이렇게 deploy가 된다.

 

 

 

 

 

 

그리고 이제 heroku 웹페이지로 들어가 본인이 만든 앱의 페이지로 접속해본다.

 

하지만 이런 에러가 발생했다.

 

 

 

 

 

해결 방법

 

- 이 때 

 

1. 터미널에서 해당 디렉토리로 이동 후 명령어 입력 (maven 설치)

 

 

2. mvn package

 

3. 프로젝트명-target 디렉토리로 이동 후 다시 war파일 deploy하기

 

4. 기존 heroku 앱을 삭제하고 새로 만들어서 deploy

 

 

 

 

그러면 이렇게 

 

 

 

 

+ 만약 위의 방법으로 해결되지 않는다면,

 

JRE 버전을 1.8로 변경 후 다시 maven install > deploy를 하면 된다

반응형

'Study > Web' 카테고리의 다른 글

'웹 서비스 구축' 사전 준비  (0) 2021.01.04
JSP CRUD 게시판 만들기 -3  (0) 2020.10.26
JSP CRUD 게시판 만들기  (0) 2020.10.12
[STS] JSP 개발환경 설정하기  (0) 2020.10.05
Node.js (3) - URL의 이해  (0) 2020.08.31