반응형
Servlet
디자인 패턴

MVC1
Model-View-Controller
Model
- 애플리케이션의 비즈니스 로직과 데이터를 처리하는 부분
- 데이터베이스(저장,검색,변경,삭제), 파일, 외부API 처리
- Controller나 뷰에서 요청받아 처리한 후 결과 반환
- 독립적 개발, 여러 컨트롤러나 뷰에서 재사용
View
- 사용자에 데이터 표시하는 역할
- 데이터 검색,표시에 대한 형식 지정
- 컨트롤러에 의존
Controller
- 모델과 뷰 사이의 중개자 역할
- 사용자로부터 입력을 받고 응용프로그램의 적절한 부분으로 안내
- 요청처리, 데이터 쿼리문, 모델의 상태 수정과 같은 작업 결정
- 작업결정 후 모델에 대한 모든 변경 사항을 반영하도록 뷰 업데이트
사용 개념
- Scope
객체전달범위, 공통메서드
- page : 현재 페이지에서 객체를 전달(현재페이지에서 객체 유지)
- request : 현재 페이지에서 요청한 다음 페이지까지만 객체를 전달(현재페이지에서 요청한 다음페이지까지 객체유지)
- session : 상태유지, 한 사람이 한 브라우저를 이용해 한 context를 돌아 다닐 떄 자기 session에 있는 모든 객체를 사용할 수 있다(여러페이지에서 객체 유지)
- invalidate() : 사용자 세션을 종료하는데 사용되는 메서드
- getSession() : 사용자 세션의 고유 식별자를 검색하는데 사용되는 메서드
- application : 한 context내에서 모든 객체를 누구나 공유 가능, webXML에서도 사용가능(여러페이지에서 객체 유지)

- out : 웹 브라우져에 데이터를 전송하는 출력 스트림
out기본 객체의 출력 메서드println() : 데이터를 출력한다. print() : 데이터를 출력하고, \r, \n을 출력한다. newLine() : \r, \n을 출력한다.
- config : 해당 JSP의 환경(설정)정보
- exception : 예외처리용
- page : 한페이지(자신이 속한 페이지)만 쓸 수 있다
전체 흐름
- DB 설계
- 화면설계
- 구현
- DB생성
- 프로젝트 템플릿(전체적인 페이지의 화면구성)
- DTO(테이블의 컬럼들에 대한 멤버필드,생성자(오버로딩)
- DAO(DB 쿼리문과 관련된 수정,삭제,조회,입력) 기능 생성
코드
기타참고
- 용어
- request : 클라이언트의 요청
- response : 클라이언트의 요청에 대한 응답
- parsing : 엔진과 자바 사이의 용어 해석
- synch : 요청 후 응답이 올때까지 browser는 대기 (화면 전체 로딩)
- asynch : 요청 후 응답이 올때까지 browser는 다른 일함
- stateless : 응답 완료 후 연결 해제 (HTTP)
- statefull : 응답 완료 후 연결 유지(DB)
- get : 모든 주소정보 노출, header를 통해 전달
- post : 내부변수로 존재 ,노출되지 않음, body를 통해 전달
- jsp구성요소

흐름제어
- forward
- response.sendRedirect
커스텀태그 : JSP를 확장시켜주는 기능
- EL(expression language)
- JSTL(JSP Standard Tag Library) : 커스텀태그 표준화
액션 태그
(1) useBean : dao와 같은 역할, java bean
-스코프 객체 생성, 사용
- request.getParameter(“age”)제거
- Integer.parseInt(request.getParameter(“age”))파싱 제거
(2) setProperty : useBean에서 데이터를 저장할 때 사용
(3) getProperty : useBean에서 데이터를 가져올 때 사용
(4) include -> 특정한 페이지를 현재 위치에 포함시킬 때 사용(모듈화)
(5) forward -> 다른 페이지로 이동할때 사용(흐름제어: 제어권이 이동된 페이지로 넘어간다)
(6) param -> 모듈화, 흐름제어에서 파라메터 보내기
- form태그
form 태그 내부의 값들은 input이나 button으로 처리하며 전달 형태는 input의 key(name) : value(value)형태
button은 onclick형태로 자바스크립트에서 따로 함수를 지정해 location.href="Controller.jsp?command=컨트롤러에서 처리할 기능형태로 다음
action: 양식 데이터가 제출될 때 처리할 페이지 또는 스크립트의 URL을 지정
method : get/post
onsubmit : form이 제출될 때 실행될 자바스크립트 함수를 지정하는데 사용. 이 속성은 서버로 전송되기 전에 사용자가 입력한 양식 데이터의 유효성을 검사하는데 사용하는데 유효하지 않은 onsubmit함수는 true또는 false를 반환하여 제출 동작을 방지할 수 있음 - JDBC구현 (6단계)
- 드라이버로딩-Class.forName("org.mariadb.jdbc.Driver")
- DB연결 - DriverManager.getConnection
- 쿼리준비 sql,conn,psmt
- 쿼리실행 executeUpdate,executeQuery
- 쿼리결과받기 while(rs.next())
- DB닫기 close
- Controller (7단계)
- command값 받기(request.getParameter("command"))
- DAO객체 생성(DB연결,작업)
- command분기
- 전달된 파라미터받기(.equals(파라미터))
- DAO실행
- 스코프객체 담기
- 페이지이동
- pageContext.forward() vs response.sendRedirect()
pageContext.forward()와 response.sendRedirect()는 모두 사용자를 다른 페이지로 리디렉션
주요 차이점은 브라우저와 서버에서 리디렉션을 처리하는 방법
- pageContext.forward() 내부 서버 측 리디렉션을 수행합니다. 이는 브라우저가 관여하지 않고 요청이 새 URL로 직접 전송됨을 의미합니다. 브라우저는 리디렉션을 인식하지 못하고 주소 표시줄의 URL을 변경하지 않습니다.
- response.sendRedirect() 외부 리디렉션을 수행합니다. 즉, 서버가 새 URL을 포함하는 클라이언트에 응답을 보냅니다. 그런 다음 브라우저는 새 URL에 대한 새 요청을 만들고 주소 표시줄에 새 URL이 표시됩니다.
- pageContext.forward()를 사용하면 새 페이지에서 요청 속성을 사용할 수 있는 반면 response.sendRedirect()를 사용하면 속성이 손실된다는 것입니다.
- pageContext.forward()는 일반적으로 동일한 웹 애플리케이션 내의 다른 리소스(예: 다른 JSP 페이지 또는 서블릿)로 요청을 전달하는 데 사용됩니다.
- response.sendRedirect()는 일반적으로 사용자를 다른 웹사이트 또는 다른 웹 애플리케이션으로 리디렉션하는 데 사용됩니다.
- response.sendRedirect()를 사용하면 모든 URL로 리디렉션할 수 있는 반면 pageContext.forward()를 사용하면 동일한 웹 애플리케이션 내에 있는 리소스로만 전달할 수 있습니다.
요약하면 pageContext.forward()는 동일한 웹 애플리케이션 내에서 내부 서버 측 리디렉션에 사용되는 반면 response.sendRedirect()는 다른 URL에 대한 외부 리디렉션에 사용됩니다.
반응형
'back-end > JSP&Servlet' 카테고리의 다른 글
(Servlet)WebServlet어노테이션 (0) | 2023.03.24 |
---|