오늘 한 일

1. 게시판 설계 완성

테이블 설계서

다이어그램
다이어그램 툴은 dbdiagram.io를 사용했다.

어제 테이블을 3개로 나누기로 한 것을 정리한 모습이다. 중심이 되는 것은 tbBusinessTrip 테이블로 출장 신청에 대한 정보가 담겨있다.
tbBusinessTraveler는 출장 관련자 테이블로 출장자, 결재자, 수신자 3가지 타입의 관련자들을 전부 저장할 수 있다. 이렇게 출장에 관련된 사람 테이블을 분리하여 하나의 출장에 여러 관련자를 저장할 수 있도록 했다.
tbBtExpenses는 출장 경비 테이블로 경비별 타입, 결제방법, 금액 등의 정보를 저장한다. 역시 이 방법으로 하나의 출장과 여러 경비 리스트를 연결할 수 있다.

화면정의서

어제 리스트 페이지를 만든데 이어서 오늘은 게시물 생성/수정 페이지, 게시물 상세조회 페이지의 화면 정의서를 만들었다. 넣어야 할 정보가 많아서 일단 표로 만들었는데, html 페이지로 구현하는게 꽤 까다로울 것 같다.

1. 게시물 생성/수정 페이지

  • 필수입력정보 별도 표시
  • 복수 입력 가능한 부분 표시
  • 일부 정보는 드롭다운에서 선택하도록 함
  • 버튼 클릭 시 이벤트, 페이지 이동 표시

2. 게시물 상세 조회 페이지

  • 추후 세션 사용해서 접속한 사람의 정보 가져올 것을 고려해 접속자가 결재자일 경우, 작성자일 경우 보이는 버튼 표시

테이블 생성 SQL 쿼리

사용한 다이어그램 툴에 sql 파일로 export 할 수 있는 기능이 있어서 사용해보았다. mysql에서 열어보니 int에 (unsigned)를 붙일 수 없는 것 같았다. 그 부분을 제외하고 데이터베이스 생성 후 create 해 보니 원하는대로 잘 실행이 되었다.

2. 게시판 프로젝트 생성 및 시작

  • egov 3.8 / tomcat8 / mysql8.0.27 / jdk1.8 버전으로 재설치 후 예제 프로그램 실행 확인. egov 버전만 바꾸면 되서 그런 것도 있지만 처음 했을 땐 이틀을 고민했던 것을 이제 5분 만에 할 수 있게 되었다.
  • 아직 프로젝트의 구조나 jsp의 개념과 사용법 등에 대해 잘 모르는 상태였기 때문에 개념 조사를 먼저 했다.

개념 조사

  • jsp: Java Server Page의 약자로 jsp 확장자로 저장된다. html와 java 코드를 하나의 파일에 혼용할 수 있도록 만들어진 언어이다. servlet 클래스에서 클라이언트 요청을 받아 정보를 jsp로 넘겨주면, 서버에서 jsp안 변수에 해당되는 정보를 가져와서 html로 변환해서 브라우저에 띄운다.
  • 예전에 php로 웹 프로젝트를 잠시 해 본적 있는데 사용법이 비슷하게 느껴졌다. html 코드 사이사이에 적절하게 스크립트럿(scriptlet, java코드 작성하는 블록)을 사용한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>Hello World by html</h1>
	<% String str = "Hello World by java"; %>
	<h1><%=str %></h1>
	
	<% for(int i=0; i<5; i++){  %>
	<p>i = <%=i %></p>
	<% } %>

</body>
</html>

새로운 프로젝트 준비하기

정말 쉽고 꼼꼼하게 작성해주신 블로그 글을 참고했다. 참고 블로그

VO (Value Object) 변수, getter, setter 선언하기

BtBo-1
테이블 설계한 내용에 맞게 VO를 만들어주었다. DB 테이블 구조에 맞게 java에서 데이터를 받을 그릇을 만든다고 이해했다. 변수를 먼저 선언하고, get(), set() 함수는 generate getters and setters 기능을 한번에 만들어주었다..
generate_getters_and_setters

내일 할 일

  • DB 데이터 전체 조회 기능을 위한 공통DAO 작성, Service 작성, Controller 작성
  • 화면을 어떻게 구성할지 더 구체적으로 생각하기

어려웠던 점

  1. 테이블 설계 시 왜 반드시 새로 생성된 값으로 pk를 만들어야 된다고 생각했을까? 출장 관련자 테이블과 출장 비용 테이블에는 별도 id값이 없고 출장번호 값을 pk로 가지게 바꾸었다.
  2. 미리 주어진 여러 개의 값 중 하나를 선택해서 입력하게 하는 방식을 사용하는 column에는 숫자코드를 사용하기로 했다.
  3. Controller - Service - ServiceImpl - DAO, VO의 관계는 어느 정도 정리가 되었는데 sample 예제에는 그 외에도 defaultVO 등 좀 더 복잡한 구조로 이루어져 있어서 헷갈린다. 내일 예제 파일의 코드가 어떤 역할을 하는지 자세히 살펴보고 필요없는 부분을 없애봐야겠다.
profile
문서화를 좋아하는 개발자

0개의 댓글