2022-04-12(화)

Jeongyun Heo·2022년 4월 12일
0

MyList를 서블릿으로 프로그래밍 하기

BoardListServlet -> BoardService -> BoardDao -> MyBatis (JDBC Driver) -> DB
BoardAddServlet
BoardDetailServlet
BoardUpdateServlet               Board 도메인으로 데이터를 주고받는다
BoardDeleteServlet

board/list
board/add
board/detail
board/update
board/delete

GET 요청이 들어오면 최종적으로 doGet()이 호출된다

service()는 내부적으로 오버로딩된 service()를 호출한다.
오버로딩된 service()는 내부적으로 GET 요청이면 doGet()을 호출한다.

http://localhost:8080/board/list

http://localhost:8080/board/update

http://localhost:8080/board/delete

웹 애플리케이션 서버를 시작할 때 만들어야 한다
그래야 요청이 들어오면 쓸 수 있다

Listener

id "io.freefair.lombok" version "6.4.1"

gradle cleanEclipse

gradle eclipse

  // MariaDB JDBC 드라이버
  implementation 'org.mariadb.jdbc:mariadb-java-client:3.0.3'
  
  // Mybatis 프레임워크 (직접 구성)
  implementation 'org.mybatis:mybatis:3.5.9'

라이브러리 추가만 한 경우에는 gradle eclipse만 하면 된다

https://mybatis.org/mybatis-3/getting-started.html

https://mybatis.org/mybatis-3/configuration.html#typeAliases

DAO 객체 자동 생성

스레드마다 sql session이 달라야 함

세션마다 commit, rollback이 있음

그래서 세션을 공유하면 commit 하면 다 commit 되어 버림

똑같은 BoardAddServlet을 실행하는데
클라이언트 요청이 들어오면 스레드가 생성됨
클라이언트A, 클라이언트B, 클라이언트C
각각의 클라이언트가 각각의 스레드를 의미
스레드가 서블릿을 호출하는 거
서블릿이 하나의 서비스 객체를 쓴다
DAO가 SqlSession을 사용해서 DBMS에 작업을 수행한다
근데 SqlSession을 같은 걸 쓰면
한 놈이 커밋하면 다 커밋되어 버림
그래서 SqlSession은 공유하면 안 된다
SqlSession은 매번 따로 생성해야 한다

그나마 getMapper가 DAO 자동 생성은 해줌

메서드를 호출할 때마다 DAO 만들어서 쓴다

세션을 기준으로 커밋, 롤백이 이루어짐

서버에서 태그를 만드는 서버 렌더링 방식

클라이언트가 보낸 문자열이 UTF-8로 인코딩 되어 있다는 걸 알려줘야 함
그래야 한글 안 깨짐

req.setCharacterEncoding("UTF-8");

내일은 별도 파일로 분리시켜서 include

0개의 댓글