오늘 한 일

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 선언하기


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

내일 할 일

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

어려웠던 점

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

0개의 댓글