2024-02-02 (40일차) - 로직 중복제거, Interceptor, 로그인 전처리

·2024년 2월 2일

📅 2024-02-02, 40일차


TODO - 2/3 토요일

[프로그래머스] (x ->일요일)

  • 문제해석/문제풀이/코딩
  • 벨로그정리

[Spring_AM] 
강의다시보고 로직이해하기

  • 작업 40, 레이아웃 수정 및 폰트 변경(x -> 일요일)
  • 작업 45, replace, history를 이용해서 게시물 삭제시 뒤로가기 또는 지정된 경로로 이동 하도록 (80%)
  • 작업 46, Rq 클래스 생성, 로그인 정보 저장 및 관리에 대한 중복 로직 제거 (80%)
  • 작업 47, BeforeActionInterceptor 구현, registry 등록 (20%)
  • 작업 48, Rq 객체를 BeforeActionInterceptor 에서 한번만 생성 하도록 (85%)
  • 작업 49, NeedLoginInterceptor가 등록된 액션이 실행되기 전에 로그인 체크를 미리 수행 (20%)
  • 작업 50, 로그인 폼 및 로그인 처리 구현 ( x ->일요일)
  • 작업 51, 로그인 여부에 따라서 head.jspf 의 버튼 표시 컨트롤( x -> 일요일)

Teacher's Advice

  • 콘솔에 찍어보기! -> 제일 쉬운 디버깅 방법
    System.err.println("");

요구사항

  • 중복제거
    로그인여부 확인하는 로직이
    컨트롤러에 있는 모든 메서드에 다 들어가있으니까
    그 로직은 공공자원처럼 사용하면 되지 않을까?
    그럼 container 클래스 만들어도 되지 않을까?
    기존 Ut 클래스 사용해도 될꺼같기도하고..
    xxx

  • Container도 아닌 Ut클래스도 아닌 rq클래스가 필요했음

  • HttpSession을 HttpServletRequest로 변경해야했음


HttpServeltRequest와 HttpSession,세션과 로그인 로그아웃

HttpserveltRequest와 HttpSession


Interceptor

  • 요청을 가로채서 체크하고 보내주는 역할 (가드느낌)
  • 인터셉터를 사용하려면 WebMVCConfigure을 implement 받고 등록을 해줘야 함
  • new Rq가 중복으로 만들어지기 때문에 인터셉터가 미리 체크를 하고, 요청을 보낼때 만들어지게끔 한다.
  • 우리 프로그램에서 Rq가 너무 많다 (new Rq 때문에), 인터셉터에서 Rq를 만들어주면 한번만 만들어서 하나로 돌려 쓸 수 있음.
  • 인터셉터 클래스 안에 Rq객체 선언해주고 setAttribute해준다
    Rq rq = new Rq(req)
    req.setAttribute("rq", rq");
  • 컨트롤러 안 메서드들 안에 getAttribute해서 가져와서 rq를 돌려 쓸 수 있다!
    그럼 new를 하는게 아니기때문에 rq가 계속 생성되지 않는다
    Rq rq = (Rq) req.getAttribute("rq);

로그인 폼 구현 ㅇ

  • 컨트롤러에 로그인 메서드 만들고 ㅇ
  • 로그인jsp만들기 ㅇ

로그인 처리 x

로그아웃 처리 o

form tag input tag
끌어와서 쓰긴 썼고 뭔 역할인지 알것 같긴 한데
확실하지않으니 검색해보자
table > tbody > tr > th > tr > td
뭐냐 이거. 대충 알아 너무. 구글링 다시 해.


로그인 했을 때는 로그아웃 버튼
로그아웃 했을 때는 로그인 버튼 표시 되도록

  • 망함

로그아웃 후처리 (1/2)

  • 로그아웃은 되지만 historyback때문에
    로그아웃 하면 뒤로가기가 되는 문제 발생
  • 뒤로가기되면서 로그아웃버튼이 그대로이고, 새로고침을해야 로그인버튼으로 바뀜.

modify

  • modify.jsp 생성 o
  • 컨트롤러안에 modify 메서드 생성 o
  • 디테일에서 수정버튼 누르면 modify 페이지로 갈 수 있게 해야 함 o
  • 되네? 개이득?
  • 제목과 내용을 입력하면 저장 할 수 있게 해야 함
    • 쿼리 만들어

write (login)이랑 비슷
join

profile
hello world

0개의 댓글