TIL/Servlet

[Servlet] mvc-1

yndev 2022. 3. 18. 04:32

EMPLOYEE 테이블에서 EMP_ID를 이용하여 사원 정보 조회해오기

 

log4j, jstl, mybatic, ojdbc 필요한 것들 다 복사해서 붙여준다.

 

Java Build Path - Source탭에서도 log4j폴더 추가

 

web하위 폴더에 index.jsp 생성

jsp 표준 액션 태그를 요청해서 요청은 인덱스 요청이 들어오지만 실제 화면은 다른 곳으로 이동시키는 작업

 

상단에서 설정해준 똑같은 경로인 main.jsp 생성

 

메인에 페이지를 하나 include(포함)시켜준다.

 

위와 동일한 경로인 header.jsp 생성

 

header.jsp

 

main.jsp

 

SelectOneEmpByIdServlet생성

 

1. 전달한 파라미터 꺼내기

값이 잘 넘어왔는지 확인

 

2. 비즈니스 로직 호출 - 사번을 이용해 사원 정보 조회

EmployeeDTO생성, EmployeeService클래스에 selectOneEmpById(empId) 메소드 생성

 

EmployeeService에서 SqlSession생성하기 위한 Template을 생성해준다.

 

Template에서 쓰일 config파일 생성해주기 위해 resources/mybatis Source Folder 생성해준 뒤 mybatis-config.xml 생성

https://mybatis.org/mybatis-3/ko/getting-started.html

 

MyBatis – 마이바티스 3 | 시작하기

Copyright © 2009–2021MyBatis.org. .

mybatis.org

mybatis 사이트에서 xml에서 sqlSessionFactory빌드하는 코드 복사해와서 값을 바꿔준다.

 

위의 mapper경로와 같게 EmployeeDAO.xml 생성

 

위의 mybatis사이트에서 매퍼파일 dtd도 복사해서 가져온다.

 

설정값들을 정의하기위한 ConfigLocation클래스 생성

 

mybatisConfigLocation에 대한 값을 가져오기 위해 web.xml에서 경로를 설정해준다.

 

수업 때 소스폴더를 잘 못 생성해줘서 Java Build Path에도 경로가 잘 못 설정되었다.

두 번째, 세 번째 폴더 삭제 후 mappers, resources 폴더를 추가해준다.

 

web.xml에 초기화 context-param을 설정했으니 common폴더 하위에 제일 처음에 초기화될 때 동작할 서블릿을 정의한다.

그리고 초기화 메소드인 init메소드를 체크하고 생성한다.

 

처음부터 인스턴스를 만들고 싶다면, 이러한 설정값을 넣으면 처음부터 인스턴스를 생성된 상태로 된다.

 

Servlet Context가 가지고 있는 초기화 파라미터 mybatis-config-location을 가져와서 얘가 가지고 있는 값을 configlocation클래스의 mybatisconfiglocation에 대입한다는 뜻이다.

즉, 이전에 설정한 param-name에 설정한 경로를 설정해주는 것이다.

 

Template에서 경로 설정을 대입한 mybatisConfigLocation을 넣어준다.

 

잘 연결이 되었는지 출력문을 만들어주고

 

Tmplate을 다 생성해줬기 때문에, sqlSession도 잘 생성되는지 확인한다.

import도 해주고, 출력문도 작성한다.

 

서버를 구동 시키는 순간 init메소드가 동작한 모습을 확인할 수 있다.

이 실제 경로값이 configLocation쪽에 선언된 mybatisConfigLoacation에 대입된 것이다.

 

id값을 넣어서 실행시키면 확인된다..수업 때 여기까지 오는데 너무 힘들었다.....

 

SqlSession생성까지 마쳤으니 SqlSession과 함께 정보를 전달하여 조회하는 코드를 작성한다.

상단에 EmployeeDAO를 선언해주고 클래스 생성하면서 메소드도 만들어준다.

 

"EmployeeDAO.selectEmpById"= namespace와 select엘리먼트의 id를 지정해줌

empId = 어떤 id기준으로 select할 것인지 전달해준다.

 

EmployeeDAO.xml(매퍼)에서 resultMap과 Select sql구문을 써준다. (위의 namespace와 동일)

 

sqlSession닫아주고 조회결과를 반환해준다. 이 값이 어디로 가냐면..

 

SelectOneEmpById서블릿으로 온다. 출력문까지 작성해주자.

 

200번 사원에 대한 정보가 조회된다...!!!!!!!

 

3. 비즈니스 로직 실행 결과에 따라 뷰 연결

 

SelectOneEmpById서블릿에서 실행 결과에 따른 뷰를 연결해준다.

 

위의 경로와 똑같이 errorPage.jsp를 만들어주자.

조회할 사번이 없다면 '직원 정보 조회 실패!'라는 문구가 뜨게 message값을 꺼내온다.

 

만약 조회할 사번이 있다면, 위의 경로와 똑같이 ShowEmpinfo.jsp 파일 생성해준다.

먼저 위에서 설정해준 헤더가 나올 수 있게 include 해주고,

서블릿에서 설정한 selectedEmp안에 있는 EmployeeDTO의 값들을 꺼내온다.

 

ㅠㅠ값이 화면에 출력된다

사원번호가 없는 것을 치면 errorPage도 잘 뜬다..

여지껏 배운 것 중 제일 어려웠던 것 같다..수업 시간에도 오류 파티였고 곧 있을 세미 프로젝트때 고생하기 싫어서 힘들게 하나하나 기록해봤다. 내가 볼 용도로..

과연 잘 써먹을지 ............하