IT수업/JSP_SERVLET

IT 수업 17주차 (101) Filter 2

워제하 2024. 4. 19. 11:04

앞에서 작성한 코드에 이어서 하면 된다.

 

 

● 문자 셋 설정

MainPageServlet.java에서 아이디와 비밀번호를 확인하기 위한 코드를 작성한다.

 

 

 

 

 

 

 

 

 

 

그리고 loginServlet.java 파일에서 서비스 실행을 위한 코드를 주석처리한 뒤 실행시켜본다.

 

영어가 아닌 한글로 아이디를 넣어본다.

그러면 한글이 깨져서 나오는 것을 확인 할 수 있다.

 

 

한글이 깨져서 나오는 문제를 해결해보기 위해 MainPage에서 작성해본다.

유니코드 문자가 사용가능하도록 코드를 작성한다.

 

그러면 한글로 아이디와 비밀번호를 넣어도 깨지지 않고 출력되는 것을 확인 할 수 있다.

 

 

 

이번에는 유니코드가 적용되도록 일일이 복사 붙여넣기 하면 귀찮기 때문에 Filter를 사용해서 모든 곳에 적용되도록 할 것이다.

Filter 폴더안에 UTF_8 인코딩되도록 작성할 파일을 하나 만들어 준다.

 

main에서 작성했던 유니코드 문자셋 코드를 잘라내어 이 파일에 붙여넣기 해준다.

그리고 main에서 작성했던 코드는 삭제하면 된다.

 

 

xml 파일로 가서 filter작성을 해준다.

/* 이렇게 작성한 이유는 모든 곳에서 적용되도록 하기 위함이다.

 

 

그리고 실행시켜보면 작동이 잘 되는 것을 확인 할 수 있다.

 

 

 

 

 

 

● 권한 설정

이번에는 권한 설정을 해볼 것이다.

web.xml 파일에 가서 각 페이지의 주소들을 필터하는 코드를 작성한다.

 

 

그리고 Filter 폴더에 PermissionFilter 파일을 만들어 준다.

 

Override/implement로 doFilter를 넣어주고 코드를 작성해준다.

 

 

마우스 오른쪽을 눌러 source의 override / implement 에서 init을 눌러 추가시켜 준다.

 

 

그리고 로그인을 하지 않고 익명인 상태로는 접속이 되지 않도록 작성해본다.

HttpServletRequest가 되지 않았으므로 다운캐스팅을 해줘야한다.

 

F12로 세션을 삭제하고 로그인 하지 않은채 admin페이지로 가면 만든 오류 메세지가 뜨게 된다.

 

 

 

이번에는 권한에 따라 페이지에 접속 가능하도록 구현해본다.

 

loginServlet.java의 세션권한
권한 번호

 

지금은 LoginServlet에서 session권한을 ROLE_USER 로 줬기 때문에 로그인을 한 후 /user 로 넘어가면 ROLE_USER는 0번이라 페이지가 보이지만 ROLE_MANAGER와 ROLE_ADMIN은 각각 1,2번이기 때문에 if문의 조건식에 맞지 않아 만들어놓은 에러페이지가 출력되는 것을 확인 할 수 있다.