1. 스프링 DB연결 1단계
- 흐름 순서
1) url 요청값 처리
2) controller호출
3) 모델 데이터 처리(dao 호출 후, 데이터 설정)
4) view 화면 호출, 모델 데이터 출력
- 처리 순서
1) 처리할 데이터 sql, dao 처리
2) controller 작성 및 초기화면 로딩
3) dao 호출 및 모델 데이터 할당
4) 모델 데이터에 맞게 화면단 구현
# 사원정보 조회
@Controller
public class A01_EmpController {
private A02_EmpDao dao;
public A01_EmpController() {
dao = new A02_EmpDao();
}
// http://localhost:7080/springweb/empList.do
@RequestMapping("/empList.do")
public String empList(Emp sch,Model d) {
// 초기화면에 전체 데이터가 출력되도록 설정
if(sch.getEname()==null) sch.setEname("");
if(sch.getJob()==null) sch.setJob("");
if(sch.getToSal()==0) sch.setToSal(9999);
// 모델 데이터 생성
d.addAttribute("empList",dao.getEmpSch(sch));
return "WEB-INF\\views\\a02_dao1\\a01_empList.jsp";
}
}
@ View단
<div class="container">
<form id="frm01" class="form" method="post">
<input name="ename" value="${emp.ename }" class="form-control mr-sm-2" placeholder="사원명" />
<input name="job" value="${emp.job }" class="form-control mr-sm-2" placeholder="직책" />
<input name="frSal" value="${emp.frSal }" class="form-control mr-sm-2" placeholder="급여시작" />
<input name="toSal" value="${emp.toSal }" class="form-control mr-sm-2" placeholder="급여끝" />
<button class="btn btn-info" type="submit">Search</button>
<button class="btn btn-secondary" data-toggle="modal" data-target="#exampleModalCenter" type="button">등록</button>
</form>
<table class="table table-hover table-striped">
<thead> <tr class="table-success text-center">
<th>사원번호</th>
<th>사원명</th>
<th>직책</th>
<th>급여</th>
<th>부서번호</th></tr></thead>
<tbody>
<c:forEach var="emp" items="${empList }">
// 전송된 모델데이터를 반복문을 통해 출력
<tr><td>${emp.empno }</td><td>${emp.ename }</td>
<td>${emp.job }</td><td>${emp.sal }</td>
<td>${emp.deptno }</td></tr>
</c:forEach>
</tbody>
</table>
</div>
- 초기화면

- 검색어 입력 후 화면

2. 스프링 등록 처리
- DAO : sql ==> vo ==> 메서드
- controller 초기화면구성
- 등록처리 controller 기능메서드 추가
1) 등록요청값 vo
2) 등록 후, 처리할 controller 선언
- 화면에서 등록할 데이터 form 만들기
# 사원정보 등록
@ Controller
@RequestMapping("/insertEmp.do")
public String insertEmp(Emp ins) {
dao.insertEmp(ins);
// redirect 방식으로 해야 초기화면(사원정보리스트 조회)에 전체 데이터가 로딩된다.
// forward 방식으로 하면 요청값도 함께 넘어가서 방금 등록한 데이터만 출력됌
return "redirect:/empList.do";
}
@ view 단
<form id="frm02" class="form" method="post" action="${path }/insertEmp.do">
<input type="text" class="form-control" placeholder="사원명 입력" name="ename">
<input type="text" class="form-control" placeholder="직책명 입력" name="job">
// select를 통해 관지자 번호와 부서번호를 입력받음
<select name="mgr" class="form-control">
<option value="0000">관리자 선택</option>
<option value="7698">BLAKE</option>
<option value="7839">KING</option>
<option value="7782">CLARK</option>
<option value="7900">JAMES</option>
<option value="7902">FORD</option>
<option value="7566">JONES</option>
</select>
<select name="deptno" class="form-control">
<option value="00">부서번호 선택</option>
<option value="11">인사</option>
<option value="12">재무</option>
<option value="19">총무</option>
<option value="20">RESEARCH</option>
<option value="30">SALES</option>
<option value="40">OPERATIONS</option>
</select>
<input type="number" class="form-control" placeholder="연봉 입력" name="sal">
<input type="number" class="form-control" placeholder="보너스 입력" name="comm">
<input type="text" onfocus="this.type='date'" onblur="this.type='text'" class="form-control" placeholder="입사일자 입력" name="hiredateS">
</form>
// focus 했을 때 type이 date 형으로 바뀌고 blur 되면 text 타입으로 변경됌
- 등록버튼 클릭시 초기화면

- 등록할 사원 정보 입력

- save 버튼 클릭시(조회 화면으로 이동되고, 방금 등록한 사원 정보도 함께 조회된다)
