공부?/국비 지원 일기장

프로젝트 진행중 - WAS JAVA 연동, DB 구축

무무요 2024. 10. 4. 05:44

힘 들 다

=======

 

3 Tire 중 제일 어려울것 같은 WAS(tomcat9), DB(mariadb) 연동은 끝났고 jsp파일을 넣고 띄우기 위해 was에 java에서 코딩한 jsp 를 넣으려고 했다.

was 세팅 자체는 틀린게 없었는데 인터넷에서 찾은 코드를 제대로 수정하지 않아서 오류가 많았다.

 

1. jsp 파일 코딩을 위한 이클립스 EE 다운

 너무 높은 버전은 호환이 안될수도 있을것 같아서 2021-03 버전으로 다운

 

2.  이클립스 Dynamic Web Project 프로젝트 파일 생성

New - Dynamic Web Project로 생성 (이클립스 자체 설정은 기본적으로 되있거나 자료가 많으니 패스)

 

3. 연동을 위한 JDBC 드라이버, tomcat 서버 등록하기(이클립스)

JDBC 드라이버 등록

생성한 프로젝트 우클릭 - Properties - Java Build Path - Labraries - Add External JARs ... - 설치한 JDBC 드라이버 설치(tomcat에 넣은 드라이버 그대로 넣기)

 

tomcat 서버 등록(기본 tomcat 구축은 전글에 있는 그대로, 이클립스)

Window - Preferences - Server칸에있는 Runtime Environments - Add - 생성한 프로젝트 우클릭 - Properties - Java Build Path - Labraries - Add Library .. - Server Runtime - Apache 폴더에서 설치한 tomcat 버전 선택후 next - tomcat이 지정된 경로 설정(나같은 경우 톰캣 주 파일들이 폴더 두개뒤에 있어서 두번 안 까지 들어갔다 필수 확인) - Window - Show view - Server(하단에 서버 메뉴창 생성을 위함) - 하단에 뜬 Server 메뉴창에서 Click this link to .. 클릭 - 선택한 tomcat 버전 클릭 후 Finish 

 

4. 이클립스 

 

구성

 

코드 참조 - https://github.com/wkdrudgh/JSP-Notice-Board-Development-

 

GitHub - wkdrudgh/JSP-Notice-Board-Development-: JSP를 이용한 게시판 만들기입니다.

JSP를 이용한 게시판 만들기입니다. Contribute to wkdrudgh/JSP-Notice-Board-Development- development by creating an account on GitHub.

github.com

코딩이 메인이 아니기 때문에 자세하게 다루지 않겠다. (근데 대부분의 오류가 코드에서 나왔다.)

핵심은 webapp 밑에 띄울 페이지를 세팅해주면 된다(ROOT 디렉터리 or 자체로 만든 디렉터리)

 

5. WAS(tomcat) 세팅

 

project.war 파일 배포

프로젝트 이름 우클릭 - Export - WAR File - 저장 경로 정한뒤 Finish.

리눅스 /home/ 에 옮긴 뒤  

cp /home/moo/project.war /opt/tomcat/webapps/
cd /opt/tomcat/webapps/ 
chown tomcat:tomcat project.war 
systemctl restart tomcat

 

경로 지정을 위한 server.xml 수정

Vi /opt/tomcat/conf/server.xml

 

Host name 안에 

<Context path="" docBase="project" sessionCookiePath="/"/>
//sessionCookiePath는 세션 쿠키가 유효한 URL 경로를 지정하는 설정입니다.
/로 설정하면 사이트 전역에서 세션 쿠키가 유효하고, 특정 경로로 설정하면 그 경로에서만 세션 쿠키가 유효합니다.

 

6. Maria DB 생성 세팅

 

사용 DB - MariaDB

MariaDB 버전 확인

 

연결 DB 생성과 유저 생성 및 권한 부여

create database projects;
grant all on *.* to 'moomi'@'%' identified by '1234';
flush privileges;

 

로그인 유저 DB 테이블

create table user(
    userID varchar(20),
    userPassword varchar(20),
    userName varchar(20),
    userGender varchar(20),
    userEmail varchar(50),
    primary key (userID)
);

 

게시판 DB 테이블

create table bbs(
    bbsID int,
    bbsTitle varchar(50),
    userID varchar(20),
    bbsDate datetime,
    bbsContent varchar(2048),
    bbsAvailable int,
    primary key (bbsID)
);

 

DB안에 들어온 정보 확인

select * from user; // user 테이블안에 들어온 정보 확인
select * from bbs; // bbs 테이블안에 들어온 정보 확인

 

테이블 안쪽 정보 지우기

delete from user;
delete from bbs;

 

결과물

 

회원가입

회원가입 정보가 DB에 입력된것을 확인할 수 있다.

 

게시판

수정 삭제 모두 가능하다.

 

DB에 올라온 게시판 글 정보

 

=======

 

실수한것

여기서 1차적으로 실수점을 찾았다

원 코드는 jdbc:mysql://.. 인데 나는 mariadb를 써서 mysql부분을 mariadb로 변경 그러다보니 

Class.forname 쪽까지 이어졌다.

원코드는 Class.forname("com.mysql.cj.jdbc.Driver"); 였다.

그래서 mariadb형식으로 바꿔주었다.

 

실수한것 2

 

FROM user 부분이 FROM USER 로 대문자로 되어있었다.

그러다보니 user라는 테이블을 불러와야 하는데 USER로 적혀있어서 불러오지 못해서 계속해서 데이터 베이스 오류가 떴었다.

 

실수3

원코드는 bbsDate가 아예 없어서 게시글 작성이 안됐었다. bbsDate 추가 후 오류 해결

 

실수4 

systemctl restart tomcat 안한것.... 

자잘자잘한 실수를 하고 멘탈이 나간후 세팅이 바뀌었는데 톰캣 재시작을 안해서 한번 안됐었다..

 

=======

 

코드에서 오류가 나서 머리가 너무 아팠다... 3Tier 는 이제 DB backup 서버만 만들어 연동시켜두면 끝난다!!