Spring36 @ExceptionHandler 2023. 11. 6. @Converter 사이드 프로젝트 도중 회원이 프로필을 생성했는지 여부를 체크해주는 필드를 추가해야하는 경우가 발생했다. 필드를 추가하고 값으로 0,1을 저장해야할지.... true, false로 저장을 해줘야 할지 고민이 됐다. DB 입장으로 봤을때는 전자가 더 좋은 선택일거 같고 개발자 입장에서는 후자가 좋을거 같다는 생각이 든다. 그러다가 생각이 든게 개발자는 boolean 형태로 저장을하면 DB에는 0,1으로 저장해주는 방법이 있지 않을까라는 생각이 들어서 찾아보니 @Converter 를 발견했다. AttributeConverter 인터페이스 @Converter를 사용 할려면 AttributeConverter 인터페이스를 구현 해야 한다. AttributeConverter를 살펴 봐보자 [ 인터페이스 주석 ] 이 .. 2023. 6. 7. 서블릿 필터(Servlet Filter) 사용 이유 로그인이 필요한 페이지를 들어간다가 해보자. 로그인 하지 않는 사용자도 직접 url을 입력해주면 해당 페이지에 들어갈 수 있다. 이 문제를 해결하기위해 모든 컨트롤러에서 로그인 여부를 체크 해주는 방법이 존재한다. 하지만 그렇게 되면 코드 중복량이 많아지고 실수로 그 부분을 작성하지 못할 수 도 있다. 또한 로그인 로직이 변하게 된다면 그 부분을 모두 수정해줘야한다. 아주 끔찍한 상황이다. 여러 로직에서 공통으로 인증을 해줘야하기 때문에 AOP를 생각 할 수 있지만 웹과 관련된 공통 관심사는 서블릿 필터나 스프링 인터셉터를 사용해주는 것이 좋다. 그 이유는 웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더나 URL의 정보들이 필요한데, 서블릿 필터나 스프링 인터셉터는 HttpServlet.. 2023. 5. 30. 세션(Session) - 타임아웃 설정 세션의 종료 시점 세션의 종료시점은 어떻게 될까? 한번 생성 되면 영원히 지속되는게 좋을까? session.invalidate()를 호출하면 해당 세션은 삭제 된다. 하지만 항상 모든 사용자가 로그아웃을 해주지 않는다. 그저 브라우저를 종료해버린다. 그러면 세션은 삭제가 되지 않고 몇일이 지난 뒤 사용자가 들어와도 로그인이 가능하다. 이때 문제가 발생한다. 세션 영구적 보관 문제점 1. 해킹 문제 세션과 관련된 쿠키( JSESSIONID )를 탈취 당했을 경우 오랜 시간이 지나도 해당 쿠키로 악의적인 요청을 할 수 있다. 2. 메모리 문제 세션은 기본적으로 메모리에 생성된다. 메모리의 크기가 무한하지 않기 때문에 꼭 필요한 경우만 생성해서 사용해야 한다. 10만명의 사용자가 로그인하면 10만개의 세션이 .. 2023. 5. 29. 세션(Session) - @SessionAttribute 사용 @SessionAttribute 스프링은 세션을 더 편리하게 사용할 수 있도록 @SessionAttribute 을 지원해준다. 이미 로그인 된 사용자를 찾을 때는 다음과 같이 사용하면 된다. 세션을 생성하지 않는다. @SessionAttribute 적용 2023. 5. 16. 세션(Session) - 서블릿이 제공하는 세션 사용 서블릿은 세션을 위해 HttpSession 이라는 기능을 제공해준다. 세션을 일정시간 사용하지 않으면 해당 세션을 삭제하는 기능을 제공해준다. HttpSession 서블릿을 통해 HttpSession 을 생성하면 다음과 같은 쿠키를 생성한다. 쿠키 이름이 JSESSIONID 이고, 값은 추정 불가능한 랜덤 값이다. Cookie: JSESSIONID=5B78E23B513F50164D6FDD8C97B0AD05 HttpSession 옵션 HttpServletRequest.getSession(true) or HttpServletRequest.getSession() - 세션이 있으면 기존 세션을 반환한다. - 세션이 없으면 새로운 세션을 생성해서 반환한다. HttpServletRequest.getSession(f.. 2023. 5. 16. 이전 1 2 3 4 ··· 6 다음