Search

ν•„ν„° (Filter)

ν•„ν„° (Filter)

: Java μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ HTTP μš”μ²­κ³Ό 응닡을 μ€‘κ°„μ—μ„œ κ°€λ‘œμ±„κ³  μ‘°μž‘ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” κ΅¬μ„±μš”μ†Œ
μ—¬λŸ¬ μ„œλΈ”λ¦Ώ ν΄λž˜μŠ€μ—μ„œ λ°˜λ³΅λ˜λŠ” μ½”λ“œλ₯Ό μΌκ΄„μ μœΌλ‘œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•˜μ—¬ μ‚¬μš©ν•œλ‹€.
ν•„ν„°λŠ” 주둜 μš”μ²­κ³Ό μ‘λ‹΅μ˜ 헀더 μˆ˜μ •, μš”μ²­ 데이터 검증, 인증 및 κΆŒν•œ λΆ€μ—¬, λ‘œκΉ… λ“±κ³Ό 같은 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 데 ν™œμš©λ©λ‹ˆλ‹€.
β€’
μžλ°” μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ κ°œλ°œμ—μ„œλŠ” ν•„ν„°λ₯Ό μ μš©ν•˜κΈ° μœ„ν•΄ Filter μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„

Filter μΈν„°νŽ˜μ΄μŠ€

β€’
μ£Όμš” λ©”μ†Œλ“œ
λ©”μ†Œλ“œ
μ„€λͺ…
init()
ν•„ν„° μ΄ˆκΈ°ν™” μ‹œ 호좜되며, ν•„ν„° μ„€μ • 및 μ΄ˆκΈ°ν™” μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.
doFilter()
μ‹€μ œ ν•„ν„° λ™μž‘μ„ μ •μ˜ν•˜λŠ” λ©”μ„œλ“œλ‘œ, μš”μ²­κ³Ό 응닡을 κ°€λ‘œμ±„κ³  μˆ˜μ •ν•˜λŠ” μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. ν•„ν„° 체인 λ‚΄ λ‹€μŒ ν•„ν„°λ‘œ μš”μ²­μ„ μ „λ‹¬ν•˜κ±°λ‚˜ ν•„ν„° 체인의 끝에 λ„λ‹¬ν•˜λ©΄ μ„œλΈ”λ¦ΏμœΌλ‘œ μš”μ²­μ„ μ „λ‹¬ν•©λ‹ˆλ‹€.
destroy()
ν•„ν„°κ°€ μ†Œλ©Έλ  λ•Œ 호좜되며, λ¦¬μ†ŒμŠ€ ν•΄μ œ λ˜λŠ” 정리 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

JSP ν•„ν„° λ“±λ‘ν•˜λŠ” 방법

1.
Filter μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 클래슀 μ •μ˜
2.
web.xml 에 등둝

Filter 클래슀 μ •μ˜

import javax.servlet.*; import java.io.IOException; public class EncodingFilter implements Filter { private String encoding; public void init(FilterConfig filterConfig) throws ServletException { // web.xmlμ—μ„œ μ„€μ •ν•œ 초기 λ§€κ°œλ³€μˆ˜ "encoding"을 μ½μ–΄μ˜΅λ‹ˆλ‹€. encoding = filterConfig.getInitParameter("encoding"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // μš”μ²­κ³Ό μ‘λ‹΅μ˜ 문자 인코딩을 μ„€μ •ν•©λ‹ˆλ‹€. request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); // λ‹€μŒ ν•„ν„°λ‘œ μš”μ²­μ„ μ „λ‹¬ν•©λ‹ˆλ‹€. ν•„ν„° 체인의 끝에 λ„λ‹¬ν•˜λ©΄ μ„œλΈ”λ¦ΏμœΌλ‘œ μš”μ²­μ΄ μ „λ‹¬λ©λ‹ˆλ‹€. chain.doFilter(request, response); } public void destroy() { // ν•„ν„°κ°€ μ†Œλ©Έλ  λ•Œ ν•„μš”ν•œ 정리 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. } }
Java
볡사

web.xml 에 등둝

<web-app> <!-- EncodingFilterλ₯Ό ν•„ν„°λ‘œ λ“±λ‘ν•©λ‹ˆλ‹€. --> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>EncodingFilter</filter-class> <!-- ν•„ν„° 초기 λ§€κ°œλ³€μˆ˜λ‘œ 문자 인코딩을 μ„€μ •ν•©λ‹ˆλ‹€. --> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <!-- ν•„ν„°λ₯Ό URL νŒ¨ν„΄μ— λ§€ν•‘ν•©λ‹ˆλ‹€. --> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- λ‹€λ₯Έ μ„œλΈ”λ¦Ώκ³Ό μ„œλΈ”λ¦Ώ 맀핑 μ„€μ • 등을 μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. --> </web-app>
XML
볡사

ν•„ν„°λ₯Ό μ‚¬μš©ν•˜λŠ” μ£Όμš” μ˜ˆμ‹œ

β€’
인코딩 및 문자 집합 처리
β€’
인증 및 κΆŒν•œ 검사
β€’
둜그 처리
β€’
이미지 및 μžμ› μ••μΆ•

μ΄ν΄λ¦½μŠ€μ—μ„œ Filter 클래슀 μƒμ„±ν•˜κΈ°

1.
ν•„ν„° 클래슀 : [NEW] > [Filter]
2.
ν•„ν„° μƒμ„±ν•˜κΈ°
a.
Class Name : TestFilter
3.
ν•„ν„° 맀핑 경둜 μ„€μ •ν•˜κΈ°
a.
Filter mappings > [Edit] > 경둜 지정

web.xml

<!-- ν•„ν„° --> <filter> <filter-name>TestFilter</filter-name> <filter-class>filter.TestFilter</filter-class> </filter> <filter-mapping> <filter-name>TestFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
HTML
볡사