1.
execute(request, response) 메서드를 공통적으로 사용하는,
Action 류 POJO 클래스들이 구현하는 Action 이라는 이름의 인터페이스 이다.
>> 항상 사용 되며,
>> 정의 하지 않으면, 메서드 생성 과정에서, 실수가 발생 할 수 있는 가능성이 있고,
>> 반복을 줄이기 위해, (하드 코딩 XXX)
이 공통의 메서드의 설계 메서드인 추상 메서드 (미완성 메서드) 를 구현 == 인터페이스.
2.
C에서, V로 갈 때,
데이터 값이 있는지랑, 경로가 어디인지를 set 하기 위해 필요한 POJO 클래스 이다.
3.
1 : N 구조의 POJO 클래스 생성 하기.
1 : N 구조는 다음과 같다.
글 + 댓글
댓글 + 대댓글
상품 + 후기
공지 + 답변
..
..
..
즉, 1 : N = 글 : 댓글
"Set"
(집합의 SET 뜻이 아니라, 모음집을 의미하는 Set 이다..)
4.
게시글을 의미하는 BoardVO 클래스.
댓글을 의미하는 ReplyVO 클래스.
게시판 객체와 댓글 객체를 다루기 위한 BoardSet 클래스를 생성 한다.
해당 클래스에 멤버변수를 확인 해 보자.
멤버변수는 이미지와 같다.
BoardVO 타입의 board가 선언 되어 있다.
ReplyVO 타입의 배열리스트 rdatas가 선언 되어 있다.
이 둘을 멤버변수로 선언함으로써, BoardSet 클래스는 두 클래스를 포함관계로 사용 하게 된것이다.
그래서, setter getter 로 BoardSet 타입으로 참조변수 (주체) 로 set, get 을 할 수 있는 개념 이다.
5.
BoardSet (VO) 클래스를 생성했으니, DAO 클래스도 생성 해주면 된다.
static final private String SQL_SELECTALL_BOARD = "SELECT * FROM BOARD ORDER BY BID DESC LIMIT 0, ?";
static final private String SQL_SELECTALL_REPLY = "SELECT * FROM REPLY WHERE BID = ?";
쿼리문은 위와 같다.
첫번째 쿼리문의 ORDER BY DESC는 게시글을 BID를 기준으로 내림차순으로 정렬 하겠다.
BID는 게시글의 숫자를 의미 한다.
즉, 이후에 만들어지는 게시글 == 숫자가 높다.
따라서, 내림차순으로 정렬한다 ? == 5 4 3 2 1 == 최신 게시글 순으로 정렬 하겠다.
LIMIT 0, ? 은 다음과 같다.
?의 개수만큼 ~ 게시글을 보여주겠다는 의미 이다.
BOARD 테이블에 게시글이 가령, 100개가 있더라도, LIMIT 0, 2 이면,
게시글을 최신 게시글 순으로 2개를 보여주게 된다.
두번째 쿼리문은 게시글의 번호를 WHERE 절의 조건으로 사용 했다.
즉, 어떤 댓글은 어떤 게시글에 달리는 개념이기 때문에,
댓글을 SELECT 해서 가져올 때,
BID 조건을 통해서,
그 게시글의 댓글을 SELECT 하게 된다.
6.
selectAll() 메서드에 인자가 2개가 있는것을 확인 할 수 있다.
이는, 결합도가 높기 때문에 유지 보수에 불리한 코드이다.
그래서, count 값을 bVO 객체 set 해서 보내주는 방식이 훨씬 좋은 코드 이다.
현재,
SQL_SELECTALL_BOARD = "SELECT * FROM BOARD ORDER BY BID DESC LIMIT 0, ?";
위의 코드 때문에, LIMIT 0, ?
즉, ? 에 필요한 값을 int 타입의 매개변수 count로 받아서 사용 한다.
7.
Model 패키지에는,
1 : N 구조의 기능을 구현 하기 위해 만든 BoardSet (VO) / DAO 이외에,
아래의 POJO 클래스가 작성 되어 있다.
멤버 테이블에 해당하는 Member VO / DAO
게시글 테이블에 해당하는 Board VO / DAO
댓글 테이블에 해당하는 Reply VO / DAO
Controller 패키지에는,
Model 에서 DB로 데이터를 주고 받는 기능을 수행 하고,
데이터를 Controller 에게 넘겨 줘야 하므로,
데이터를 받아서 View 에게 넘겨주기 위한 서블릿 (Not POJO) 이 존재 한다.
그리고, 해당 서블릿 파일 내부에 코드 작성시, 모듈화 및 유지보수의 용이함을 위해,
Action 인터페이스를 구현하는 어쩌구Action POJO 클래스들이 존재 한다.
8.
페이지네이션 이란 ?
9.
Action 클래스 정리
FrontController.java == 서블릿 이다.
get방식으로 데이터가 오던, post 방식으로 오던, 상관없이 doAction() 메서드를 호출.
내부 코드는 위의 이미지와 같이 되어 있다.
MainAction
View 로 부터 count 라는 매개변수를 받아서 String count에 저장.
count가 없거나, 비었거나, 공백값이거나, 암튼 예외 적인 부분 다 때려 박은 상황에 부합되면,
count = "2"; 로 값을 부여 하기 ~
request.getParameter("count") 는 String 타입이기에, int 타입으로 형변환 ~
메인 페이지에 게시글 1 : 리플 N 을 보여 주기 위해서,
bsDAO 참조변수로, selectAll() 메서드를 진행 하고,
request 주체가 값을 set 해서 forward 객체를 return 한다.
selectAll() 메서드의 SQL 문을 보면 ? 에 값이 필요 하고,
이떄 count의 값이 없으면 안되는 상황이라, 위와 같이 코드가 작성 되어 있다.
나머지도 추가 정리 하기.
10.
.jsp 파트 정리
'Front-end (국비) > 이론' 카테고리의 다른 글
비동기 처리 (0) | 2023.07.20 |
---|---|
서블릿 (Servlet) 개념 정리 & 필요한 개념 정리 (0) | 2023.07.14 |
리스너 클래스 (0) | 2023.07.06 |
필터 클래스 (0) | 2023.07.05 |
커스텀 태그 (0) | 2023.07.05 |