✍ Today I Learned
[Detail(SelectOne)]
- List에서 ename을 클릭하면 Detail을 볼 수 있도록 a 태그를 이용해 "detail.em"으로 쿼리 스트링에 empno를 실어 요청한다. 이때 EL태그를 이용하면 훨씬 효율적이다.
<a href="./detail.em?empno=${evo.empno }">${evo.ename}</a>
- 클릭한 데이터의 empno 정보를 가지고 다음과 같은 순서로 요청한다.
Controller → Action(여기까진 request객체) → Service → DAO → 데이터베이스에서 empno로 Select 후 EmpVO 객체를 다시 detail.jsp까지 전달한다. - list와 마찬가지로 JSTL을 이용하여 datail.jsp를 작성한다.
- Action에서 setAttribute를 evo로 설정했기 때문에 jsp에서도 evo로 받아줘야 한다.
- WAS가 웹 브라우저로부터 Servlet 요청을 받으면,
전달받은 정보를 HttpServletRequest 객체를 생성하여 저장하고,
웹브라우저에 응답을 반환할 HttpServletResponse 객체를 생성하고,
생성된 HttpServletRequest, HttpServletResponse 객체를 Servlet에 전달한다. (전달 담당) - JSP/Servlet 내장 객체에는 request, response 외에도 session, application 등이 있다.
- Servlet = 총체적 컴파일러라고 생각하자!
[Modify(Update)]
- 업데이트에는 크게 2가지 방식이 있다.
- 동일한 주소체계에서 자바스크립트를 이용하여 html을 동적 컨트롤하는 방법
- 별도의 modify.jsp를 만드는 방법 → 당첨!
- Detail에서 Modify 버튼을 누르면 수정을 할 수 있도록 a 태그를 이용해 "modify.em"으로 쿼리 스트링에 empno를 실어 요청한다.
- 전달받은 empno 정보를 가지고 다음과 같은 순서로 요청한다.
Controller → Action(DetailAction과 요청 내용이 같으므로 DetailAction을 이용함) → Service → DAO → 데이터베이스에서 empno로 Select 후 EmpVO 객체를 다시 modify.jsp까지 전달한다. - modify.jsp의 화면은 register.jsp와 거의 비슷하다. 다른 점은 Controller로부터 전달받은 EmpVO 객체를 input 태그의 value 속성으로 작성하는 것이다.
- readonly와 disabled의 차이점은? form으로 값을 보낼 때 disabled의 값은 전송되지 않는다.
- 유저가 데이터 수정을 하면, 수정된 데이터를 "update.em"으로 요청한 후 다음과 같은 순서로 요청한다.
Controller → Action(이번엔 ModifyAction을 이용함) → Service → DAO → 데이터베이스에 Update 후 성공 여부를 로그에 출력하고 해당 VO객체의 detail 페이지로 이동한다. (request 객체를 이용)
destPage = "detail.em?empno="+req.getParameter("empno");
[Remove(Delete)]
- Detail에서 Remove 버튼을 누르면 삭제를 할 수 있도록 a 태그를 이용해 "remove.em"으로 쿼리 스트링에 empno를 실어 요청한다.
- 전달받은 empno 정보를 가지고 다음과 같은 순서로 요청한다.
Controller → Action → Service → DAO → 데이터베이스에서 empno로 Delete 후 성공 여부를 로그에 출력하고 list 페이지로 이동한다. 이때 list.jsp로 직접 이동하지 않고 Controller를 거치기 위해 list.em으로 이동한다.
[Product CRUD]
- 지금까지는 흐름을 이해하기 위해 하나의 기능을 데이터가 전달되는 순서대로 만들었다면, 이번엔 데이터베이스부터 화면단까지 패키지 단위로 만들어보자.
DB → VO → Controller → DAO → Service → Action → 다시 Controller → JSP 페이지 만들어서 바로바로 테스트 - 이클립스 전체 임포트 단축키 : Ctrl + Shift + O
String uri = req.getRequestURI();
// 프로젝트 + 파일경로 출력 ex) /project/list.jsp
String context = req.getContextPath();
// 프로젝트 path만 출력 ex) /project
String path = uri.substring(context.length());
path = path.substring(path.lastIndexOf("/")+1);
// uri에서 contextPath를 제외한 나머지 부분 출력 ex) list.jsp
'📝 TIL' 카테고리의 다른 글
[TIL] JSP 웹페이지 만들기(MyBatis, Member) (0) | 2022.06.17 |
---|---|
[TIL] JSP 세션(session)으로 로그인/로그아웃 구현 (0) | 2022.06.16 |
[TIL] JSP로 CRUD 구현 (0) | 2022.06.14 |
[TIL] JSP 개발 환경 설정 (0) | 2022.06.13 |
[TIL] MySQL 쿼리 문제 풀이 (0) | 2022.06.04 |