728x90
클라이언트와 서버 사이에서 request와 response객체를 먼저 받아
사전/사후 작업 등 공통적으로 필요한 부분을 처리하는 것
순서는 클라이언트 필터 순서 로 간다
필터는 여러개로 붙일 수 있다 이것을 필터체인이라고 한다
2.Filter 인터페이스의 구현 클래스
인터페이스 = 부장님(큰그림정도 그림 큰일을 안함)
부장 : 오늘은 국밥쪽으로 갈까?!?!
나 : 국밥 좋죠!! (거절 할 수 없음)
위에 init, doFilter,destory 3개 메소드는 꼭 써줘야함 아니면 에러남
Filter class 만들기
interface에 Add..클릭 해서
Filter검색
java.servlet - C:\apache......선택후 OK
인터페이스 추가된 것을 확인 후 finish
이런화면이 보임
보기 좋게 순서를 바꿈
package filter;
import java.awt.PrintGraphics;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class AuthenFilter implements Filter {
//필터 시작, 초기화
@Override
public void init(FilterConfig arg0) throws ServletException {
System.out.println("Filter01초기화 완료....");
}
//필터 기능 수행
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
System.out.println("Filter01 수행");
// /ch12/filter01_process.jsp?name=개똥이
String name = request.getParameter("name"); //개똥이
//응답 메시지를 담아서 서버에서 클라이언트로 전달해줌(response객체 활욜)
if(name == null || name.equals("")) {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset= utf-8"); // MIME타입
PrintWriter writer = response.getWriter();
String message = "입력된 name값은 null입니다.";
writer.println(message);
return;
}
//필터가 여러개가 있을 떄 전달~전달 해줌
filterChain.doFilter(request, response);
}
//필터 종료하기 전에 호출
@Override
public void destroy() {
System.out.println("Filter01해제...");
}
}
메소드 작성함
web.xml로 이동
filter태그와
filter-mapping 태그 작성
<!-- Filter이넡페이스의 구현 클래스 -->
<filter>
<filter-name>Filter01</filter-name>
<filter-class>filter.AuthenFilter</filter-class>
</filter>
<!-- Filter01로 연결된 필터를 사용할 URL -->
<filter-mapping>
<filter-name>Filter01</filter-name>
<url-pattern>/ch12/filter01_process.jsp</url-pattern>
</filter-mapping>
태그에서 사용한 필터 파일 생성
이름값을 name에 담아서 보냄
출력할 화면
이순신이라는 값이 있을경우에는 정상적으로 process에서 출력함
만약 입력값이 없다면
Filter클래스로 이동해서 doFilter쪽 메소드를 실행해서
String message = "입력된 name 값은 null입니다" 를 출력한다.
결과
'JSP > JSP기초' 카테고리의 다른 글
JSP(Ch12) 필터 사용 로그기록 파일에 저장해보기 (0) | 2023.07.13 |
---|---|
JSP(Ch12) 필터 사용하는 방법 두 번째 예제 (0) | 2023.07.12 |
JSP try-catch-finally를 이용한 예외처리 (0) | 2023.07.11 |
JSP web.xml 을 이용한 예외 처리방법 (0) | 2023.07.11 |
JSP 페이지디렉티브 예외처리 (0) | 2023.07.11 |