0712 - Servlet Filter / Servlet JDBC 연동
0712 - Servlet Filter
- 1) HttpServletConfig --> Servlet 설정정보획득
- 2) HttpServletContext --> Application Scope
- 3) HttpServletRequest --> Request scope
- 4) HttpSession --> Session scope
request.getSession();
request.getSession().getId();
Filter API
- 웹 컴포넌트가 실행되기 전의 선처리 작업과 응답되기 전의 후처리 작업을 수행하는 API
- 즉, 서블릿이 실행 전, 후에 어떤 작업을 하고자 할 때 사용된다.
- 클라이언트가 보낸 데이터의 암호를 해제한다거나
- 서블릿이 실행되기 전에 필요한 자원을 미리 준비하거나,
- 서블릿이 실행될 때마다 로그를 남긴다거나 하는 작업을 '필터'를 통해 처리할 수 있다.
@WebFilter("/*")
- @WebFilter 어노테이션이 있어야, 자동으로 DD(배치설명자, 즉, web.xml)에 필터로 등록이 된다.
- 어노테이션 속성값으로는, 필터를 수행할 URL 패턴을 지정한다.
- 아래와 같은경우는, '모든 URL에 대하여'의 의미를 갖는다.
중요1: 필터 클래스는 규약에 따라, 반드시 Filter 인터페이스를 구현해야 한다.
중요2: 필터 클래스의 객체는, Servlet Container가 생성하므로, 기본(=매개변수없는) 생성자를 가져야한다.
-
- Filter LifeCycle 메소드 init() : 필터객체 생성 직후에 호출된다.
-
- Filter LifeCycle 메소드 destroy() : 필터객체 파괴 직전에 호출된다.
-
- Filter LifeCycle 메소드 doFilter() : 매번, 웹브라우저에서 request문서가 올때마다, 호출됩니다.
- 이 메소드 역시, Filter API 규약에 따라, 실행블록에서 오류 발생시, 반드시 ServletException 또는 IOException 을 던져야(throw)합니다.
Servlet JDBC 연동
- 명시적으로 Oracle Cloud Wallet tnsnames.ora 경로를 지정
static final String driver = "oracle.jdbc.OracleDriver";
static final String jdbcUrl = "jdbc:oracle:thin:@db202106301639_high?TNS_ADMIN=/Users/jinsung/Desktop/opt/OracleCloudWallet/ATP";
- 이 후 service 메소드 내에서 JDBC 드라이버 및 자원 객체를 할당 및 해제해 준다.
- JDBC Driver Spy 연결 설정
static final String log4jdbcDriver = "net.sf.log4jdbc.sql.jdbcapi.DriverSpy";
- 드라이버 로딩 시에
Class.forName(log4jdbcDriver);
- service() 메소드 내에서...
try {
//JDBC 드라이버 로딩
Class.forName(driver);
Class.forName(log4jdbcDriver); //DriverSpy 드라이버 로딩
//JDBC 연동코드
Connection conn = DriverManager.getConnection(jdbcUrl, user, pass);
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
try(conn; pstmt; rs;){
log.info("conn : " + conn);
log.info("pstmt : " + pstmt);
log.info("rs : " + rs);
while(rs.next()) {
int employeeID = rs.getInt("EMPLOYEE_ID");
String employee = String.format(
"%s",
employeeID);
log.info(employee);
}//while
}//try-with-resources
} catch (Exception e) {
throw new IOException(e);
}//try-catch
Author And Source
이 문제에 관하여(0712 - Servlet Filter / Servlet JDBC 연동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@jsung12/0712-Servlet-Filter-Servlet-JDBC-연동
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 클라이언트가 보낸 데이터의 암호를 해제한다거나
- 서블릿이 실행되기 전에 필요한 자원을 미리 준비하거나,
- 서블릿이 실행될 때마다 로그를 남긴다거나 하는 작업을 '필터'를 통해 처리할 수 있다.
중요1: 필터 클래스는 규약에 따라, 반드시 Filter 인터페이스를 구현해야 한다.
중요2: 필터 클래스의 객체는, Servlet Container가 생성하므로, 기본(=매개변수없는) 생성자를 가져야한다.
- Filter LifeCycle 메소드 init() : 필터객체 생성 직후에 호출된다.
- Filter LifeCycle 메소드 destroy() : 필터객체 파괴 직전에 호출된다.
- Filter LifeCycle 메소드 doFilter() : 매번, 웹브라우저에서 request문서가 올때마다, 호출됩니다.
- 이 메소드 역시, Filter API 규약에 따라, 실행블록에서 오류 발생시, 반드시 ServletException 또는 IOException 을 던져야(throw)합니다.
- 명시적으로 Oracle Cloud Wallet tnsnames.ora 경로를 지정
static final String driver = "oracle.jdbc.OracleDriver"; static final String jdbcUrl = "jdbc:oracle:thin:@db202106301639_high?TNS_ADMIN=/Users/jinsung/Desktop/opt/OracleCloudWallet/ATP";
- 이 후 service 메소드 내에서 JDBC 드라이버 및 자원 객체를 할당 및 해제해 준다.
- JDBC Driver Spy 연결 설정
static final String log4jdbcDriver = "net.sf.log4jdbc.sql.jdbcapi.DriverSpy";
- 드라이버 로딩 시에
Class.forName(log4jdbcDriver);
- service() 메소드 내에서...
try {
//JDBC 드라이버 로딩
Class.forName(driver);
Class.forName(log4jdbcDriver); //DriverSpy 드라이버 로딩
//JDBC 연동코드
Connection conn = DriverManager.getConnection(jdbcUrl, user, pass);
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
try(conn; pstmt; rs;){
log.info("conn : " + conn);
log.info("pstmt : " + pstmt);
log.info("rs : " + rs);
while(rs.next()) {
int employeeID = rs.getInt("EMPLOYEE_ID");
String employee = String.format(
"%s",
employeeID);
log.info(employee);
}//while
}//try-with-resources
} catch (Exception e) {
throw new IOException(e);
}//try-catch
Author And Source
이 문제에 관하여(0712 - Servlet Filter / Servlet JDBC 연동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jsung12/0712-Servlet-Filter-Servlet-JDBC-연동저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)