| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- @Valid
- SpringBoot
- @
- PointCut
- 유효성검사
- 비즈니스레이어
- gradle
- frontController
- .xml
- 생성자주입
- spring
- @RequestMapping
- after-throwing
- produces
- 스프링
- 바인딩변수
- c:if
- MVC
- springjdbc
- Model
- springmvc
- 어노테이션
- jointpoint
- application.properties
- 서비스레이어
- Java
- 의존주입
- AOP
- @RequestParam
- @ResponseBody
- Today
- Total
메모장
필터 (.java 클래스) 본문
필터 하면 어떤게 떠오를까요 ? 카메라 어플 스노우 라는 화면 필터가 있고, 우리가 물을 마시는 정수기에 정수기 필터가 있듯이 java클래스 형식의 필터가 있다.
질문
1) 그러면 이 필터 라는것은 왜 사용하는 것인지 ?
사용자(브라우저, 클라이언트)의 요청에 '특정기능'을 부여하기 위해 사용
ex) 인코딩(가장 흔하게 사용되는 대표적인 예시) , 데이터 정재 작업 (권한확인),로그, 보안 ,... 등이 있다.
MVC 패턴 중 컨트롤러의 역할에 해당한다.
2) 필터 클래스는 언제 동작됩니까 ?
view --- 필터클래스 (기능부여 )--->> 컨트롤러
사용자(브라우저, 클라이언트)의 요청 직후에 호출된다 !
정확하게는 Filter mappings 설정한대로 호출된다 !!
대표적인 Not POJO(POJO가 아니다) 로서 - 종류에는 서블릿,필터 , 리스너
class 파일을 생성 할때부터 이미 import 가 많이 되어있는 상태라서 가지고 있는 기본 기능들이 이미 많이 있음
★ 여기서 POJO 란 ?
Plain Old Java Object, 간단히 POJO는 말 그대로 해석을 하면 오래된 방식의 간단한 자바 오브젝트라는 말로서
Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 "무거운" 객체를 만들게 된 것에
반발해서 사용되게 된 용어이다.
POJO -아무것도 없고 구식인 자바 객체다
우리가 지금 연습중인 객체들이 POJO 이다 EX) StudentVO, Car,Point
일반 class 파일로 만들수 있는 자바 클래스 객체
서버를 위해 사용중인 톰캣에서 WEB-INF 하위폴더에서 web.xml을 보라고 이미 설정을 해놨다 ...!
web.xml에 꼭 이렇게 써야 한다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<context-param>
(적용 기능) <param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
</web-app>
이제 필터가 실행 되는 과정을 설명 하겠습니다.

run 실행되는거 자체도 사용자가 실행해달라고 요청하는 것이다. test03.jsp 파일을 실행(run) 시킨다. 1번 수행

인코딩 필터로 이동하게 되는데 인코딩 필터는 java 클래스 이므로 java 폴더에 만든다.





순서에 따라 부분적으로 보여드리겠습니다.

인코딩 필터로 들어오고 첫번째 실행할때 동작하는 init 이라는 함수가 단 1번만 호출한다. 여기서는 멤버변수를 초기화 하는데 왜 여기서 초기화 하냐면 필터 파일은 not pojo 라서 초기화된 것들이 이미 많기 때문에 init 이라는 것을 따로 만들어져서 여기서만 최초 1회 수행한다. getParameter 로 web-inf (web.xml)에서 만든 인코딩이름 "encoding" , UTF-8 가져와줘 ! 그것을 내 인코딩 this.encoding 에 담아줘

위에 encoding 은 상단에 선언 시켜준것이다.
doFilter에서 실행시켜줘 내 인코딩(init에서 담은 this.encoding)을. 그리고 destroy() 연결 해제

그렇게 해서 켜진 test03 에서 폼으로 사용자가 전송을 누르면 test04로 이동하는데 이 때 ! .jsp 이기 때문에 필터가 또 동작을 한다. 이번에는 두번째 동작이기 때문에 init 을 안거치고 doFilter 에서 this.encoding 내 걸로 인코딩 해줘 !

그리고 test04페이지의 요청은 getParameter로 받기 때문에 JSTL 방식의 EL식을 쓴다면 param을 붙여줘야 한다. ${param.datas} 이라고 받는다.
위의 순서와 같이 인코딩 필터를 적용하는 과정을 살펴보았다. 이 과정을 통해 실행한다면

controller 에서 상단에 이렇게 따로 인코딩 설정을 하지 않아도 된다 !
'JSP > 개념정리' 카테고리의 다른 글
| 커스텀 태그 (0) | 2024.04.29 |
|---|---|
| 리스너 ( jsp 크롤링 ) (0) | 2024.04.29 |
| session (0) | 2024.04.26 |
| JSTL 실습 & EL 식 (5) | 2024.04.26 |
| JSTL (0) | 2024.04.26 |