JSP - νν°(Filter)
νν°(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(){
}
}