ํํฐ(Filter)
- HTTP ์์ฒญ๊ณผ ์๋ต์ ๋ณ๊ฒฝํ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํด๋์ค.
- ํํฐ๋ ๊ฐ์ฒด์ ํํ๋ก ์กด์ฌํ๋ฉฐ ํด๋ผ์ด์ธํธ์์ ์ค๋ ์์ฒญ(request)๊ณผ ์ต์ข ์์ (jsp, servlet ๋ฑ) ์ฌ์ด์ ์์นํด ํด๋ผ์ด์ธํธ ์์ฒญ ์ ๋ณด ์๋ง๊ฒ ๋ณ๊ฒฝํ ์ ์์. ๋ฐ๋๋ก ์ต์ข ์์๊ณผ ํด๋ผ์ด์ธํธ๋ก ๊ฐ๋ ์๋ต(response)์ฌ์ด์ ์์นํด ์ต์ข ์์์ ์์ฒญ ๊ฒฐ๊ณผ ์๋ง๊ฒ ๋ณ๊ฒฝํ ์๋ ์์.
- ํํฐ์ฌ์ฉ ex) JSP/์๋ธ๋ฆฟ ๋ฑ์ ์คํํ๊ธฐ ์ด์ ์ ์์ฒญ์ด ์ฌ๋ฐ๋ฅธ์ง ๋๋ ์์์ ์ ๊ทผํ ์ ์๋ ๊ถํ์ ๊ฐ์ก๋์ง ์ฌ๋ถ๋ฅผ ๋ฏธ๋ฆฌ ์ฒ๋ฆฌํ ์ ์์. JSP๋ ์๋ธ๋ฆฟ์ด ์์ฑํ ์๋ต ๋ฐ์ดํฐ ๋ณ๊ฒฝํ๊ฑฐ๋์ทจ์ํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์๋ ์์.
1. ํํฐ(filter) ์ธํฐํ์ด์ค
1. public void init(FilterConfig filterConfig) throws ServletException : ํํฐ ์ด๊ธฐํ ํ ๋ ํธ์ถ๋จ.
2. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException : ํํฐ ๊ธฐ๋ฅ ์ํ. chain์ด์ฉํด ์ฒด์ธ์ ๋ค์ ํํฐ๋ก ์ฒ๋ฆฌ๋ฅผ ์ ๋ฌํ ์ ์์.
3. public void destroy() : ํํฐ๊ฐ ์น ์ปจํ ์ด๋์์ ์ญ์ ๋ ๋ ํธ์ถ๋๋ค.
-->ํํฐ์ ์ญํ ์ ํ๋ ๋ฉ์๋ doFilter() : ์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ ์ฌ์ฉ์๊ฐ ํน์ ์์์ ์์ฒญํ์ ๋ ๊ทธ ์์ ์ฌ์ด์ ํํฐ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ํํฐ ๊ฐ์ฒด์ doFilter()๋ฉ์๋๋ฅผ ํธ์ถ , doFilter()๋ฉ์๋๋ ์์ฒญ์ด ์์ ๋๋ง๋ค ๋งค๋ฒ ์คํ๋จ,
2. ํํฐ ๊ธฐ๋ณธ ๊ตฌ์กฐ
- ํํฐ๋ ํด๋ผ์ด์ธํธ์ ์์ ์ฌ์ด์ ์์นํ๊ณ ์๋ค.
- ์์์ด ๋ฐ๋ ์ ๋ณด: ํํฐ๊ฐ ๋ณ๊ฒฝํ ์์ฒญ์ ๋ณด, ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ ์๋ต ์ ๋ณด: ํํฐ๊ฐ ๋ณ๊ฒฝํ ์๋ต ์ ๋ณด
3. ํํฐ ์ฒด์ธ ๊ตฌ์ฑ
- ํ๊ฐ์ ํํฐ๋ง ์กด์ฌํ ์ ์๋ ๊ฒ์ด ์๋๋ฉฐ, ์ฌ๋ฌ๊ฐ์ ํํฐ๊ฐ ๋ชจ์ฌ ํํฐ ์ฒด์ธ(Chain)์ ํ์ฑํจ. ์์ ๊ทธ๋ฆผ์ ํํฐ์ฒด์ธ์ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ธ๊ฒ.
- ์ฌ๋ฌ๊ฐ์ ํํฐ๋ฅผ ๊ฑฐ์ณ ์๋ต๊ณผ ์์ฒญ์ ๋ฐ์. (์ ๋ณด๋ฟ๋ง์๋๋ผ ํ๋ฆ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ)
- ํ๋ฆ์ ๋ณ๊ฒฝํ์ฌ, ๋ชจ๋ ํํฐ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ๋ ํด๋ผ์ด์ธํธ๋ ์์์ผ๋ก ๋์ด๊ฐ ์๋ ์์.
4. ์ ํ์ ์ธ ํํฐ ๊ตฌํ๋ฐฉ๋ฒ
public class FirstFilter implements Filter{
public void init(FilterConfig filterConfig) throws ServletException{
//ํํฐ ์ด๊ธฐํ ์์
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException, ServletException{
//1. request ํผ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํ์ฌ ์์ฒญ์ ํํฐ ์์
์ํ
//Requestํ๋ผ์ด๋จธ ์ด์ฉํด ํด๋ผ์ด์ธํธ ์์ฒญ์ ํํฐ๋งํจ.
//2. ์ฒด์ธ์ ๋ค์ ํํฐ ์ฒ๋ฆฌ
//Chain.doFilterํธ์ถ, ์์ฒญ์ ํํฐ๋ง ๊ฒฐ๊ณผ ๋ค์ ํํฐ์ ์ ๋ฌํจ.
chain.doFilter(request, response);
//3. response๋ฅผ ์ด์ฉํด ์๋ต์ ํํฐ๋ง ์์
์ํ
//์ฒด์ธ์ ํตํด ์ ๋ฌ๋ ์๋ต ๋ฐ์ดํฐ ๋ณ๊ฒฝํด ๊ฒฐ๊ณผ ํด๋ผ์ด์ธํธ์ ์ ์กํจ.
}
public void destroy(){
//์ฃผ๋ก ํํฐ๊ฐ ์ฌ์ฉํ ์์์ ๋ฐ๋ฉ
}
}
- ํํฐ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ, ํํฐ ๊ฐ์ฒด๋ doFilter()๋ฉ์๋ ํธ์ถ. doFilter() ๋ฉ์๋๋ ์์ฒญ์ด ์์ ๋๋ง๋ค ๋งค๋ฒ ์คํ๋จ.
- doFilter() ๋ฉ์๋ ๋ด FilterChain์ ์ฌ์ฉํด์ ํํฐ๋ ์ฒด์ธ์ ์๋ ๋ค์ ํํฐ์ ๋ณ๊ฒฝํ ์์ฒญ/์๋ต์ ์ ๋ฌํ ์ ์์.
5. ํํฐ ์ฌ์ฉ์์
โถ web.xml์ด์ฉํด ํํฐ ์ค์
- ์ฝ์์ฐฝ์์์ ์ถ๋ ฅ๊ฒฐ๊ณผ๋ฅผํตํด, f03filter์ doFilter๋ฅผ ํต๊ณผํ์์ ํ์ธํ ์ ์์
- <filter>ํ๊ทธ : ์น ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ ํํฐ ์ง์
- <filter-mapping>ํ๊ทธ : ํน์ ์์์ ๋ํด ์ด๋ค ํํฐ๋ฅผ ์ฌ์ฉํ ์ง ์ง์ .
โถ@WebFilter์ ๋ ธํ ์ด์ ์ฌ์ฉ & Servlet๋์ ์ฌ์ฉ ์์
- Servlet์ด ์์ฒญ๊ฒฐ๊ณผ ์ฒ๋ฆฌ ์ Filter๋ฅผ ๊ฑฐ์น๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ์์
6. ์ฌ๋ฌ๊ฐ์ ์๋ธ๋ฆฟ๊ณผ, ์ฌ๋ฌ๊ฐ์ ํํฐ
- ํ๋์ ํํฐ๋ฅผ ๊ฑฐ์ณ ์ฌ๋ฌ๊ฐ์ ์๋ธ๋ฆฟ์ผ๋ก ์ด๋ํ ์ ์๊ณ ,
- ์ฌ๋ฌ๊ฐ์ ํํฐ๋ฅผ ๊ฑฐ์ณ ํ๋์ ์๋ธ๋ฆฟ์ผ๋ก ์ด๋ํ ์ ์์.
7. ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ ํํฐ
- ๊ธฐ๋ณธ JSP์์์ ์ธ์ฝ๋ฉ ์ฝ๋
<% request.setCharacterEncoding("utf-8"); %>
- Filter์์์ ์ธ์ฝ๋ฉ ์ฝ๋
public class CharacterEncodingFilter implements Filter{
private String encoding;
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException{
//setCharacterEncoding()๋ฉ์๋ ์ด์ฉํด ์์ฒญ ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ ์ค์
req.setCharacterEncoding(encoding);
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig config) throws ServletException{
//"encoding" ์ด๊ธฐํ ํ๋ผ๋ฏธํฐ๋ฅผ ์ด์ฉํด ์ค์ .
encoding = config.getInitParameter("encoding");
if(encoding == null){
encoding = "UTF-8";
}
}
@Override
public void destroy(){
}
}
'FOR SW ENGINEER๐ฉโ๐ป > JSP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JSP - MVC(model- view - controller) (0) | 2021.12.14 |
---|---|
JSP - Servlet (0) | 2021.12.10 |
JSP - ๋ถํธ์คํธ๋ฉ(BootStrap) ์ฌ์ฉ (0) | 2021.12.09 |
JSP - ์ปค์คํ ํ๊ทธ(Custom Tag) (1) | 2021.12.01 |
JSP - JSTL (ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ) (0) | 2021.11.29 |