web.xml (배포 서술자)
WAS가 실행될 때 가장 처음으로 읽어들이는 문서로, 서버 실행 시 초기 설정 내용 및 설정 내용이 작성된 파일을 읽고 수행하도록 함
* WAS(Web Application Server) : 동적 웹(요청에 따라 응답페이지 생성)에서 사용하는 서버.
DispatcherServletServlet : 요청, 응답을 나눠주는 서블릿
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Front Controller 패턴을 구현하는데 사용. 모든 요청을 중앙집중식으로 처리하는 디자인 패턴으로, 애플리케이션의 요청을 처리하기 위해 여러 컨트롤러를 사용하는 경우 특히 유용하다.
즉, 모든 요청을 앞에서 받아들여 알맞은 Controller로 연결해주고 Controller의 반환 결과에 따라 알맞은 View를 선택해 응답하는 역할
Filter : HTTP의 요청 및 응답을 가로채는 역할로, 인증, 로깅, 압축, 보안 등 다양한 용도로 사용된다.
@WebFilter(filterName= "/InitFilter", urlPatterns = "/*")
public class InitFilter extends HttpFilter implements Filter {
//logger 객체 생성(해당 클래스에 대한 log를 출력하는 객체)
private Logger logger = LoggerFactory.getLogger(InitFilter.class);
// 필터 생성 시 실행됨
public void init(FilterConfig fConfig) throws ServletException {
logger.info("초기화 필터 생성");
}
// 필터가 파괴될 때 실행 -> 필터 파괴?: 서버는 켜진 상태로 백엔드 코드가 수정되었을 때
public void destroy() {
logger.info("초기화 필터 파괴");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// application 내장 객체 얻어오기
ServletContext application = request.getServletContext();
// 최상위 주소 얻어오기
String contextPath = ( (HttpServletRequest)request ).getContextPath();
// 다운캐스팅
// 세팅
application.setAttribute("contextPath", contextPath);
chain.doFilter(request, response);
}
}
logger
: 애플리케이션에서 발생하는 이벤트를 기록하는 유틸리티. 상태변경, 예외발생 등 다양한 것들을 포함한다. 로거는 이를 기록하고 추적, 분석 및 디버깅을 하기 위해 사용된다.
로깅레벨로는 trace - debug - info - warn - error가 있으며 주로 debug, info, error만 주로 사용한다.
- debug: 개발의 흐름 파악(이 코드가 실행이 되었는지, 파라미터가 값을 가지고 있는지)
- info: 메소드 실행 파악
- error: 애플리케이션에서 에러 발생했는지 파악
* System.out.print(); 로 체크하던 것을 logger.info();로 사용하여 확인 가능
'Spring Framework' 카테고리의 다른 글
5. 1행만 조회하기 (0) | 2023.04.25 |
---|---|
4. Mybatis (0) | 2023.04.25 |
3. 파라미터 얻어오기, 화면 전환하기 (0) | 2023.04.24 |
1. Spring Framework란? (0) | 2023.04.22 |