본문 바로가기

JSP/DAY 42 _ 23.10.19

@servlet(), filter, listener, XML 관련....

@servlet()

 

@WebServlet("/board/write") (web.xml에서)XML배웠으니까 어노테이션을 이제 잘! 써보자
@WebServlet(loadOnStartup = 1, urlPatterns = "/board/write") --> 요렇게

@WebServlet("/board/read")
@WebServlet("/board/write") 
Q. 서블릿 두개 다 write로 썼다?
--> Exception : [a.a.a.Test1]과 [a.a.a.Test2]인 두 서블릿들 모두 url-pattern [/board/write]에 매핑되어 있는데, 이는 허용되지 않습니다.


CharacterEncodingFilter

@WebFilter("*") --> encodingFilter를 전역에서 쓰겠다 (= 한국어를 사용하고싶으니까는..)

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    // place your code here

    request.setCharacterEncoding("utf-8");
    System.out.println("encoding filter 시행");

    // pass the request along the filter chain
    chain.doFilter(request, response);
}

Listener

@WebListener // --> 얘도 지워도돼. 지우고나면 XML에 listener 추가하면 되겠지?

public void sessionCreated(HttpSessionEvent se)  { 
         // session이 호출되는 순간 호출되는 메서드
    }


# init() : 서블릿이 초기화될 때 호출되는 메서드
 - 서블릿 초기화는 보통 서블릿이 처음 요청될 때 또는 웹 애플리케이션이 시작될 때 발생하며, 초기화 작업을 수행하는 데 사용됩니다.
 
 # destroy() : 서블릿이 소멸될 때 호출되는 메서드
 - 주로 리소스 정리 또는 마무리 작업을 수행하는 데 사용됩니다. 
 - 예를 들어, 데이터베이스 연결을 닫는 작업 또는 열린 파일을 닫는 작업이 여기에 포함될 수 있습니다.


XML

generate해야함

--> dynamic project - src - webapp - WEB INF - lib밑에 저장됨

 

 ** XML
- XML은 데이터를 텍스트 형식으로 저장하므로, 소프트웨어나 하드웨어에 독립적으로 데이터를 저장하고 전달할 수 있습니다.
- 따라서 XML을 사용하면 새로운 운영체제나 프로그램, 브라우저 등에 상관없이 데이터를 안전하고 손쉽게 전달할 수 있습니다.

** 어노테이션과 XML : 
- Java 웹 애플리케이션을 개발할 때 서블릿을 정의하고 매핑하는 데 사용 (ex. 404not found가 뜰 때 보여줄 페이지 ^_^)
- XML설정 아주 복잡하고 귀찮지??????? 그래서 어노테이션(@) 쓰는거야 (@WebServlet("/board/write") 이거이거)
- 어노테이션 설정과 XML설정은 중첩되면 안된다!!

 

   <!-- Case1 : 세션시간(단위:sec) 설정 -->

   <session-config>
   		<session-timeout>60</session-timeout>
   </session-config>

 

<!-- Case2 : 404 error 뜰때 페이지를 찾을 수 없습니다... 같은 페이지로 넘기고 싶을 때 -->

   <error-page>
   		<error-code>404</error-code>
   		<location>/WEB-INF/views/404.jsp</location>
   </error-page>

 

   <!-- Case2-1 : (404대신 띄우고 싶은)서블릿의 설정 정보를 정의 -->
   <!-- Java 웹 애플리케이션에서 서블릿을 설정하고 해당 서블릿을 특정 URL 패턴에 매핑 -->

   <servlet>
   		<servlet-name>Test1</servlet-name>		<!-- 서블릿의 이름을 지정 -->
   		<servlet-class>a.a.a.Test1</servlet-class>		<!-- 서블릿 클래스의 패키지 경로와 이름을 지정 -->
   		<load-on-startup>1</load-on-startup>	<!-- "1"은 초기화 순서를 나타내며, 이 값이 작은 순서대로 초기화됨 -->
   </servlet>
   
   <servlet-mapping>
   		<servlet-name>Test1</servlet-name>		<!-- 매핑할 서블릿의 이름을 "Test1"로 지정합니다. 이것은 위에서 정의한 서블릿의 이름과 일치해야 합니다.-->
   		<url-pattern>/board/write</url-pattern>	<!-- 서블릿을 호출하기 위한 URL 패턴을 지정합니다. -->
   </servlet-mapping>

 

    ++ filter관련

   <!-- Spring에서 밑에 코드 복붙할거얌. (물론 클래스명은 다시하겠지) -->

   <filter>
   		<filter-name>CharacterEncodingFilter</filter-name>
   		<filter-class>a.a.a.filter.CharacterEncodingFilter</filter-class>
   </filter>
   
   <filter-mapping>
   		<filter-name>CharacterEncodingFilter</filter-name>
   		<url-pattern>*</url-pattern>
   </filter-mapping>

'JSP > DAY 42 _ 23.10.19' 카테고리의 다른 글

Tag Library  (0) 2023.10.19
EL  (0) 2023.10.19