[2023.12.13] 개발자 교육 58일 차 : 강의-서블릿&JSP 실습 [구디 아카데미]

DaramGee·2023년 12월 14일
0

Servlet ![[Servlet]]

✅서블릿(servlet)은 자바 기반으로 데이터를 동적으로 멀티스레드 개념을 통해 처리하기 위해 등장한 프로그램

  • 여기서 중요한 것은 멀티 스레드!! 프로세스 1개가 있고 그 내부에 스레드 풀이라는 스레드들이 생성될 수 있는 공간을 만들어 멀티스레드로 처리
  • 처리마다 프로세스를 생성하여 실행하는 것 x
  • 서블릿이 실행되는 환경을 제공해주는 컨테이너 필요!!
    [!quote] 대표적인 컨테이너
    웹 애플리케이션 서버(예: Apache Tomcat, Jetty, JBoss 등)에서 동작
    서블릿의 실행, 생명주기 관리, 요청 및 응답 처리 등을 담당
  • POJO2 실습에 앞서 가장 먼저 front 단에서 업무와 페이징 처리를 하는 ActionServlet에 대해 다시 생각해 보았다.
  • 기존에는 업무를 upmu[]배열에 담아 처리를 했다면 이제는 업무를 처리하는 내려갈 때, 업무처리 후 올라와서 다시 화면을 처리하는 부분은 pageMove[]에 담아서 처리를 하는 방식으로 진행할 예정이다.
  • 여전히 각 업무와 페이지 처리에서 많은 if문을 사용하는 한계가 있어서 이는 추후 POJO3 에서 스프링이 갖고 있는 어노테이션으로 보다 쉽게 처리해 볼 예정이다.
  • 모든 것은 스프링으로 가기에 앞서서의 세부적인 과정과 흐름에 대한 이해의 시간이었다.

강의 내용

게시판 추가- ActionServlet 수정- boardList.jsp & board.xml 추가 및 수정- BoardDao 추가

[[Hibernate]]를 사용할 수도 있고, [[MyBatis]]를 사용할 수도 있기 때문이다.
왜? 일괄처리를 해서 빨리 끝내야지! 그리고 업무적 깊이가 깊어질 수 있다?
공통분모가 된다? 그럼 클래스를 분리해서 설계하는게 유지보수가 쉽다.
트랜잭션 처리는 XXXLogic에서 XXXDao클래스의 메소드를 호출하여 [[AOP]]를 적용한 자동처리가 가능!(나누면 일괄처리 가능)- BoardController
어제, 해당 클래스가 메소드별 분할을 하지 않고, if문을 중첩 처리하여 결과를 내는 것에 한계가 있다고 했었다.
이것은 추후 스프링의 [[Reflection API]]로는 해결이 될 것 같음.  => POJO3에선 HandlerMapping으로 처리- BoardLogic
화면과 로직의 분리를 통해 [[POJO]]를 설계한다!!>[!danger] 웹에서 NullPointerException은?

화면 자체가 아예 열리지 않기 때문에 이를 막을 코드들을 구상해야함.
이런 막막한 상황을 마주하지 않으려면, 하나 씩 문제 가능성을 제거하고, 로그를 확인하는 것 필요
예 : 메소드 실행 이후에 인스턴스화 코드를 넣어두면 빈 깡통이어도 빈 화면이라도 출력이 됨!!
List<Map<String, Object>> bList = new ArrayList<>();---


POJO1

POJO1

POJO2

  • Contoller Logic Dao 모두 bList란 형식을 갖고 있음.---## Board 상세보기>[!tip] 전체보기와 상세보기 메소드 나눠야 할까??

    응답페이지가 다르잖아? 페이지가 board/boardList.jsp 와 board/read.jsp로 다르다.
    하나의 메소드로 하고, if문으로 사용해도 동일한 처리 가능하다 but, if문으로 구분하는 건 직관적이 않음!!----

ActionServlet- POJO에서는 ActionForward가 리턴타입이었다면 POJO2에서는 리턴타입이 String

  • 3가지 방향

  • redirect - webapp

  • forward - webapp

  • web-inf - WEB-INF / jsp/

  • 주의사항

  • String 타입으로 배열에 담아주어서 url 구성 필요

  • 올라올 때, 내려갈 때 나눠서 진행

  • pageMove[]

  • path 붙일 때 .jsp 일괄적으로 붙이거나, 없애야 함. 아니면 아래와 같은 404 에러 발생 가능


강의 마무리>[!tip] 에러

부적합한 식별자 : 쿼리문 에러

0개의 댓글