# 이 책은 코드로 배우는 스프링 웹 프로젝트를 기반으로 하고 있습니다.

강력추천하는 책 이오니 스프링을 배우실 분들은 꼭 사서 보시길 바랍니다.


1) 전에 빌더스 할때는 로그인 세션을 컨트롤 단에서 해결했다.

쿼리로 로그인 확인 - vo가 존재 할 경우 session에 값 부여...

당시에는 이렇게 하는게 최고로 생각했다.



문제는 이렇게 할 경우 세션여부를 view에서 일일히 확인해줘야 했다. 위에처럼.. nav 단에서 일일히 확인하는 식으로..



이번에는 인터셉터가 그 역할을 하는것으로 바꾸었다.




아래 친구가 컨트롤러 이다. DB에서 id, pwd로 vo 값을 가져온다. vo가 있어야 로그인이 되므로 null이면 종료시켜야한다.



아래 친구는 인터셉터이다. 위에 model로 건네 준 값을 통해서 session을 부여한다.(아직 작업중이라 뭔가 많다...)


인터셉터는 막 사용할 수 있지 않다. xml에다가 아래처럼 꼭 등록을 해줘야한다.

첫번째처럼 전체 경로에 따른 interceptor가 있을 수 있고 아니면 특정 경로에 맞추어서 가능하다.



근데 웃긴점은 잘못된 아이디 / 비밀번호의 경우도 세션이 넘어가진다는 점 ㅡ,.ㅡ;; res가 null로 나오는데도 불구하고 그렇게 작동되니 참으로 신기할 따름이다.


두번째로는 파일 업로드 이다.

나의 경우엔 이미지 게시판이 주 이므로 메인 페이지에서 modal창을 통해 파일 업로드를 하는 식으로 구성 하였다.

파일 업로드의 경우 신경써야할 것이 몇가지 있다.

1. DB 구성, 게시판 테이블, 파일 경로가 저장될 테이블을 잘 설정 해놔야 한다.

2. LAST_INSERT_ID(); : 1번의 연장선이다.


내가 파일을 업로드 한다면 DB에는 크게 2가지 작업이 진행된다. 하나는 게시글의 저장이고, 다른 하나는 파일경로의 저장이다.

즉 10번 게시글에 hoya.jpg 가 올라간다고 하면 이 두가지가 각각 나눠져서 진행이 된다. 그렇기에 파일경로가 저장되는 테이블의 경우

필수적으로 10번, 즉 게시물의 넘버링이 붙어야 한다.


빌더스 때는 이런 비슷한 상황을 트리거를 만들어서 해결 했으나 이번엔 LAST_INSERT_ID()를 통해 해결하였다.

(가장 최근이 insert된 auto_increment를 가져온다)



컨트롤러에서 mutipart로 값을 가져온다. 얘네는 util class에서 정제된다(경로생성이 됨)


그 다음에 서비스 단에서 create를 하고 난 다음에 addAttach를 해준다. 이때문에 위에 Transctional이 필요로 하다.

오늘 이 부분때문에 매우 오랫동안 헤맸다...


쿼리문과 실제 삽입이 된 결고



서비스 단에 트랜잭션을 걸기위에선 위에 bean을 꼭 등록 해줘야한다. 나같은 경우 책을 부분부분 보다 보니 설정이 곳곳이 비어 있어서

안되는 경우가 발생하였고 이걸 모른체 2시간을 해맸다. 


막상 적어보니 오늘 한거 엄청 없는거 같다...


원래 계획은 오늘 war빼서 도메인 등록하는 거였는데... 내일로 미뤄야겠다.






+ Recent posts