D+59::사원관리페이지만들기_실습(시험예제)

Am.Vinch·2022년 9월 21일
0
post-thumbnail

20220920_tue

실습 예제(기출)

사원관리 페이지 만들기_스프링부트

프로젝트생성: Emp(springBoot)

프로젝트 생성 기초 세팅


  • porm.xml
    : dependency 태그 3개 추가
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.7.3</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>Kh.study</groupId>
	<artifactId>Shop</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>Shop</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>11</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-jpa</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.2.2</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.h2database</groupId>
			<artifactId>h2</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- log4jdbc : 쿼리실행은 콘솔에 출력하기 위해 추가 -->
		<dependency>
			<groupId>org.bgee.log4jdbc-log4j2</groupId>
			<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
			<version>1.16</version>
		</dependency>

		<!-- 타임리프의 fragment 기능 사용을 위한 추가 -->
		<dependency>
			<groupId>nz.net.ultraq.thymeleaf</groupId>
			<artifactId>thymeleaf-layout-dialect</artifactId>
			<version>3.1.0</version>
		</dependency>
		<!--  validation처리 추가 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-validation</artifactId>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>
s
  • application.properties
    : 연동할 DB 계정 아이디와 비밀번호 값 정확히 설정하기
# PORT 포트
server.port=8081

# thymeleaf 캐쉬 설정
spring.thymeleaf.cache=false

#spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
#spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521/xe
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:oracle:thin:@localhost:1521/xe
spring.datasource.username=MYDB
spring.datasource.password=ORACLE

#xml location
#mybatis.mapper-locations=classpath:mappers/**/*.xml
mybatis.mapper-locations=classpath:mappers/*.xml
  • log4jdbc.log4j2.prperties
    : 복사 붙여넣기
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
  • logback.xml
    :복사 붙여넣기
<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{yyyyMMdd HH:mm:ss.SSS} [%thread] %-3level %logger{5} - %msg %n</pattern>
    </encoder>
  </appender>
  
  <logger name="jdbc" level="OFF"/>
  
  <logger name="jdbc.sqlonly" level="OFF"/>
  <logger name="jdbc.sqltiming" level="DEBUG"/>
  <logger name="jdbc.audit" level="OFF"/>
  <logger name="jdbc.resultset" level="OFF"/>
  <logger name="jdbc.resultsettable" level="DEBUG"/>
  <logger name="jdbc.connection" level="OFF"/>
  
  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
  
</configuration>

1. 홈화면 만들기


회사에서 직원을 관리하기 위한 웹 프로그램을 개발하려고 한다.
우리는 프로그램을 통해 부서와 직원을 등록하고,등록된 직원의 목록을 보여주는
화면을 개발해야 한다.
이를 위해 데이터베이스를 생각해본 결과, 사원정보를 관리하는 테이블과
부서 정보를 관리하는 테이블이 필요할 것으로 보인다.
아래 정보는 테이블 정보와 개발에 필요한 파일명을 나열한 것이다.
문제를 풀어나가며 프로그램을 완성해보자.

  • DB: 테이블 정보
    부서정보(TEST_DEPARTMENT) - 부서번호(PK),부서명, 지역
    직원정보(TEST_EMP) - 사원번호(PK), 사원명, 직급, 나이, 성별,연락처, 부서번호(FK)
    두 테이블에서 연락처를 제외한 모든 데이터는 필수 입력값으로 설정한다.
    부서번호는 DEPT001,DEPT002,DEPT003… 의 패턴으로 등록된다.
    사원번호는 EMP001,EMP002,EMP003…의 패턴으로 등록된다.
    위의 이미지 예시는 프로그램 시작 시 나타나는 화면이다. 또한, 상단 메뉴에서 ‘홈‘
    메뉴를 클릭해도 위의 페이지가 나타나야 한다.

2. 부서관리 화면 만들기


부서관리화면에서는 부서를 등록할 수 있고, 등록된 부서목록을 표의 형태로
나타내어야 한다. 아래의 요구사항을 만족할 수 있도록 해당 페이지를 구현하세요.
-메뉴에서 ‘부서관리’ 클릭 시 해당 페이지가 나와야 한다.
-부서번호(PK)는 DEPT001,DEPT002…의 패턴으로 등록되어야 한다.
-지역은 서울,부산,대전,대구,인천 등의 데이터만 들어갈 수 있도록 셀렉트
박스로 구현한다.
-‘등록’버튼 클릭 시 다시 ‘부서관리'페이지로 이동해야 한다.
-부서명은 임의로 등록하면 된다.
-부서목록은 위의 예시와 유사하게 출력하도록 한다.(표의 디자인은 제외)
-만약 부서번호(PK)를 제시한 패턴으로 만들기 어렵다면 1,2,3…의 패턴으로 1씩 자동증가되도록 구현한다.

3. 사원등록 화면 만들기


사원등록 화면은 위의 예시처럼 만든다. 요구사항은 다음과 같다.

  • 연락처를 제외한 모든 데이터는 필수 입력값이다.
    -사원번호(PK)는 EMP001,EMP002…의 패턴으로 등록되어야 한다.
    -직급은 부장,과장,대리,사원 데이터만 입력받을 수 있도록 셀렉트박스로 구현한다.
    -부서 정보는 데이터베이스에 입력된 부서 정보 중 선택할 수 있도록 셀렉트박스로
    구현한다.
    -나이는 최소값1,최대값 70으로 설정하고, DEFAULT값으로 20을 설정한다.
    -연락처는 세 개의 INPUT태그로 구성되어있고,세 개의 값을
    연결하여 연락처 정보가 된다.
    -만약 사원번호(PK)를 제시한 패턴으로 만들기 어렵다면 1,2,3…의 패턴으로 1씩 자동증가되도록 구현한다.
    -등록 버튼을 클릭하여 사원이 등록되면 사원목록페이지로 이동해야 한다.

4. 사원목록 화면 만들기


사원등록 화면은 위의 예시처럼 만든다. 요구사항은 다음과 같다.

  • 모든 회원의 정보가 목록으로 나와야한다.
  • 사원 목록은 사전 편찬순으로 정렬되어야 한다.
  • 모든 정보는 가로 가운데 정렬로 한다

이 날은 하루종일 실습만 했다..
D+60 인 다음 날,위의 최종 실습 프로젝트 파일 모두 작성되어있다.

profile
Dev.Vinch

0개의 댓글