Search

ํ•„ํ„ฐ (Filter)

ํ•„ํ„ฐ (Filter)

: Java ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ค‘๊ฐ„์—์„œ ๊ฐ€๋กœ์ฑ„๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์„ฑ์š”์†Œ
์—ฌ๋Ÿฌ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
ํ•„ํ„ฐ๋Š” ์ฃผ๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ํ—ค๋” ์ˆ˜์ •, ์š”์ฒญ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ, ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ, ๋กœ๊น… ๋“ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.
โ€ข
์ž๋ฐ” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—์„œ๋Š” ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด Filter ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„

Filter ์ธํ„ฐํŽ˜์ด์Šค

โ€ข
์ฃผ์š” ๋ฉ”์†Œ๋“œ
๋ฉ”์†Œ๋“œ
์„ค๋ช…
init()
ํ•„ํ„ฐ ์ดˆ๊ธฐํ™” ์‹œ ํ˜ธ์ถœ๋˜๋ฉฐ, ํ•„ํ„ฐ ์„ค์ • ๋ฐ ์ดˆ๊ธฐํ™” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
doFilter()
์‹ค์ œ ํ•„ํ„ฐ ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ, ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฐ€๋กœ์ฑ„๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ•„ํ„ฐ ์ฒด์ธ ๋‚ด ๋‹ค์Œ ํ•„ํ„ฐ๋กœ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ํ•„ํ„ฐ ์ฒด์ธ์˜ ๋์— ๋„๋‹ฌํ•˜๋ฉด ์„œ๋ธ”๋ฆฟ์œผ๋กœ ์š”์ฒญ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
destroy()
ํ•„ํ„ฐ๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ํ˜ธ์ถœ๋˜๋ฉฐ, ๋ฆฌ์†Œ์Šค ํ•ด์ œ ๋˜๋Š” ์ •๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

JSP ํ•„ํ„ฐ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•

javax EE
jakarta EE

javax EE

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
๋ณต์‚ฌ

jakarta EE

โ€ข
TestFilter.java
package filter; import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; import jakarta.servlet.FilterConfig; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; import jakarta.servlet.annotation.WebFilter; import jakarta.servlet.http.HttpFilter; import java.io.IOException; //@WebFilter("/TestFilter") // ํ•„ํ„ฐ ํŒจํ„ด ๊ฒฝ๋กœ public class TestFilter extends HttpFilter implements Filter { /** * ์ƒ์„ฑ์ž */ public TestFilter() { super(); } /** * ํ•„ํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฉ”์†Œ๋“œ */ public void init(FilterConfig fConfig) throws ServletException { System.out.println("TestFilter ์ดˆ๊ธฐํ™”..."); } /** * ํ•„ํ„ฐ์—์„œ ์ฒ˜๋ฆฌํ•  ์ž‘์—…์„ ์ž‘์„ฑํ•˜๋Š” ๋ฉ”์†Œ๋“œ */ public void doFilter( ServletRequest request ,ServletResponse response ,FilterChain chain) throws IOException, ServletException { System.out.println("TestFilter ํ•„ํ„ฐ ์ฒ˜๋ฆฌ ์ž‘์—…..."); // ํ•„ํ„ฐ ์ฒด์ธ์˜ ๋‹ค์Œ ํ•„ํ„ฐ๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋„˜๊ฒจ์ฃผ๋Š” ๋ฉ”์†Œ๋“œ chain.doFilter(request, response); } /** * ํ•„ํ„ฐ๊ฐ€ ์ œ๊ฑฐ๋  ๋•Œ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์†Œ๋“œ */ public void destroy() { System.out.println("TestFilter ์ œ๊ฑฐ..."); } }
HTML
๋ณต์‚ฌ
โ€ข
TestServlet.java
package servlet; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/TestFilter") public class TestServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("TestServlet ์„œ๋ธ”๋ฆฟ ์ž‘์—…..."); response.getWriter().append("Served at: ").append(request.getContextPath()); response.getWriter().append("Served at: ").append("ํ…Œ์ŠคํŠธ"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
HTML
๋ณต์‚ฌ