✅서블릿(servlet)은 자바 기반으로 데이터를 동적으로 멀티스레드 개념을 통해 처리하기 위해 등장한 프로그램
- 여기서 중요한 것은 멀티 스레드!! 프로세스 1개가 있고 그 내부에 스레드 풀이라는 스레드들이 생성될 수 있는 공간을 만들어 멀티스레드로 처리
- 처리마다 프로세스를 생성하여 실행하는 것 x
- 서블릿이 실행되는 환경을 제공해주는 컨테이너 필요!!
[!quote] 대표적인 컨테이너
웹 애플리케이션 서버(예: Apache Tomcat, Jetty, JBoss 등)에서 동작
서블릿의 실행, 생명주기 관리, 요청 및 응답 처리 등을 담당
[[Hibernate]]를 사용할 수도 있고, [[MyBatis]]를 사용할 수도 있기 때문이다.
왜? 일괄처리를 해서 빨리 끝내야지! 그리고 업무적 깊이가 깊어질 수 있다?
공통분모가 된다? 그럼 클래스를 분리해서 설계하는게 유지보수가 쉽다.
트랜잭션 처리는 XXXLogic에서 XXXDao클래스의 메소드를 호출하여 [[AOP]]를 적용한 자동처리가 가능!(나누면 일괄처리 가능)- BoardController
어제, 해당 클래스가 메소드별 분할을 하지 않고, if문을 중첩 처리하여 결과를 내는 것에 한계가 있다고 했었다.
이것은 추후 스프링의 [[Reflection API]]로는 해결이 될 것 같음. => POJO3에선 HandlerMapping으로 처리- BoardLogic
화면과 로직의 분리를 통해 [[POJO]]를 설계한다!!>[!danger] 웹에서 NullPointerException은?
화면 자체가 아예 열리지 않기 때문에 이를 막을 코드들을 구상해야함.
이런 막막한 상황을 마주하지 않으려면, 하나 씩 문제 가능성을 제거하고, 로그를 확인하는 것 필요
예 : 메소드 실행 이후에 인스턴스화 코드를 넣어두면 빈 깡통이어도 빈 화면이라도 출력이 됨!!
List<Map<String, Object>> bList = new ArrayList<>();---
POJO1
POJO2
응답페이지가 다르잖아? 페이지가 board/boardList.jsp 와 board/read.jsp로 다르다.
하나의 메소드로 하고, if문으로 사용해도 동일한 처리 가능하다 but, if문으로 구분하는 건 직관적이 않음!!----
3가지 방향
redirect - webapp
forward - webapp
web-inf - WEB-INF / jsp/
주의사항
String 타입으로 배열에 담아주어서 url 구성 필요
올라올 때, 내려갈 때 나눠서 진행
pageMove[]
path 붙일 때 .jsp 일괄적으로 붙이거나, 없애야 함. 아니면 아래와 같은 404 에러 발생 가능
부적합한 식별자 : 쿼리문 에러