Kim_dev 2022. 12. 19. 03:52

[Day10] JSP/Servlet 10 [12/15]

 

   [ μ§€λ‚œμ‹œκ°„ filter μ΄μ–΄μ„œ]

μΈμ¦κΆŒν•œμ˜ˆμ œ

 

	<filter>
	  <filter-name>characterEncodingFilter</filter-name>
	  <filter-class>com.filter.CharacterEncodingFilter</filter-class>
	  <init-param>
	    <param-name>encoding</param-name>
	    <param-value>UTF-8</param-value>
	  </init-param>
	</filter>
	<filter-mapping>
	  <filter-name>characterEncodingFilter</filter-name>
	  <url-pattern>/*</url-pattern> 
	  <!-- <url-pattern>/</url-pattern>  μœ„μ˜ νŒ¨ν„΄κ³Ό 차이점. -->
	  <dispatcher>REQUEST</dispatcher>
	</filter-mapping>
	
	<listener>
	  <listener-class>com.listener.DBCPinitListener</listener-class>
	</listener>
	
	<context-param>
	   <param-name>poolConfig</param-name>
	   <param-value>
	     type=javax.sql.DataSource 
	     driverClassName=oracle.jdbc.OracleDriver
	     url=jdbc:oracle:thin:@127.0.0.1:1521:xe
	     username=scott 
	     password=tiger 
	   </param-value>
	</context-param>

 

   1. [ web.xml ] -> 볡사 뢙이가 -> web_days09_filter.xml

   2.  days10 폴더

           γ„΄ admin 폴더  : κ΄€λ¦¬μžλ‘œ λ‘œκ·ΈμΈν•΄μ•Όμ§€λ§Œ μ‚¬μš©ν•  수 μžˆλŠ” 폴더. ( 인증 O + κΆŒν•œ O)

           γ„΄ board 폴더  :  κ²Œμ‹œνŒ λͺ©λ‘,μ“°κΈ°,μˆ˜μ •,μ‚­μ œ 폴더 ( λ°˜λ“œμ‹œ λ‘œκ·ΈμΈν•΄μ•Όμ§€λ§Œ μ‚¬μš©ν•  수 μžˆλ‹€. 인증 O)

                 ex02_list.jsp    λͺ©λ‘

                 ex02_write.jsp μ“°κΈ°                 

           γ„΄ member 폴더 : 둜그인/λ‘œκ·Έμ•„μ›ƒ/νšŒμ›κ°€μž… λ“±λ“± νšŒμ› κ΄€λ ¨λœ  폴더 ( 인증 X)

                ex02_logon.jsp

                ex02_logon_ok.jsp

                ex02_logout.jsp

     3. λ§Œμ•½μ— λ‘œκ·ΈμΈμ„ ν•˜μ§€ μ•Šκ³  board 폴더 μ•ˆμ˜ ex02_list.jsp μš”μ²­ X

        =>

        

     4.    인증, κΆŒν•œ  μ²΄ν¬ν•˜λŠ” ν•„ν„° μΆ”κ°€. 

     com.filter.LoginCheckFilter.java + μ–΄λ…Έν…Œμ΄μ…˜ μ‚¬μš©.

       doFilter(){

            μ„Έμ…˜ member => logonID λ³€μˆ˜ μ €μž₯

            isLogon = false; // true

            if(isLogon ){

                chain.doFilter()~

            }else{

                // 둜그인 νŽ˜μ΄μ§€λ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ

            }

       }

 

    (문제점)

    λ©”μΈνŽ˜μ΄μ§€μ—μ„œ

        λ‘œκ·ΈμΈν•˜μ§€ μ•Šμ€ μƒνƒœμ— "κ²Œμ‹œκΈ€ μ“°κΈ°" λ²„νŠΌμ„ ν΄λ¦­ν•˜λ©΄ 

        LoginCheckFilter 필터에 μ˜ν•΄μ„œ

        둜그인 X -> ex02_logon.jsp νŽ˜μ΄μ§€λ‘œ 이동.

        

        λ‘œκ·ΈμΈνŽ˜μ΄μ§€μ—μ„œ 둜그인 μ„±κ³΅ν•˜λ©΄ 

           λ©”μΈνŽ˜μ΄μ§€λ‘œ 이동

           μ›λž˜ μš”μ²­ν•œ "κ²Œμ‹œκΈ€ μ“°κΈ°" νŽ˜μ΄μ§€λ‘œ 이동.. O ex02_write.jsp

           

     (ν•΄κ²°)      11:27 -> 10λΆ„ - > 11:37 풀이~

        

        

     (μš”μ²­ 처리 κ³Όμ • 이해)

     [ /board/*  ] url-pattern μš”μ²­    -> LoginCheckFilter

                 list.jsp                                    인증 O 체크        ->    list.jsp , write.jsp 이동.

                 write.jsp                           [      인증 X 체크        ->   logon.jsp ]                                    ->   ex02.jsp( λ©”μ΄νŽ˜μ΄μ§€) 이동              

                                                               write.jsp                (2) μ›λž˜μš”μ²­URL λ¦¬λ‹€μ΄λ ‰νŠΈ           ->   list.jsp , write.jsp 이동 ( μ œμ‹œν•œ 문제.. )

                                                                (1)[μ›λž˜μš”μ²­URL μ €μž₯]

                                                                μƒνƒœκ΄€λ¦¬

                                                                pS X/rS X/[ (sS)/aS ]

                                                                DB

                                                                μΏ ν‚€

 

 

    [ p 572   Chapter 20   ServletContextListener κ΅¬ν˜„ ]

 

    

    "μ„œλΈ”λ¦Ώ"은  λ°œμƒν•˜λŠ” μ΄λ²€νŠΈμ™€ 이벀트 처리λ₯Ό μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€ μ •μ˜ν•˜κ³  μžˆλ‹€.  

                     γ„΄  μ΄ˆκΈ°ν™”, μš”μ²­ 처리 λ“±μ˜ 좔적 κ°€λŠ₯

    

    [Servlet  +  Context + Listener             을 μ΄μš©ν•΄μ„œ 이벀트 처리(ν™œμš©) ] 

      μ„œλΈ”λ¦Ώ                          μ •μ·¨μž

                                       이벀트 처리자.

    1. μ›Ή μ»¨ν…Œμ΄λ„ˆλŠ”  μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ‹œμž‘, μ’…λ£Œλ  λ•Œ   νŠΉμ • 클래슀의 λ©”μ„œλ“œλ₯Ό 

                              ν†°μΊ£ μ„œλ²„ μ‹œμž‘        +    μ’…λ£Œ

      μ‹€ν–‰ ν•  수 μž‡λŠ” κΈ°λŠ₯ μ œκ³΅ν•œλ‹€.      

      (즉, μ„œλ²„ μ‹œμž‘, μ’…λ£Œν•  λ•Œ μ–΄λ–€ ν•„μš”ν•œ μž‘μ—…μ„ ν•  수 μžˆλ‹€..)        

    

    2. μ‚¬μš© 방법

       1) ServletContextListener μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œ 클래슀 μ„ μ–Έ

           1) contextInitialized()

               μ›Ήμ»¨ν…Œμ΄λ„ˆ(ν†°μΊ£μ„œλ²„)κ°€ μ‹œμž‘ν•  λ•Œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œ 

              μ΄ˆκΈ°ν™” μž‘μ—…~~

           2) contextDestroyed()

               μ›Ήμ»¨ν…Œμ΄λ„ˆ(ν†°μΊ£μ„œλ²„)κ°€ μ’…λ£Œλ  λ•Œ ν˜ΈμΆœλ˜λŠ” λ©”μ„œλ“œ

               λ¦¬μ†ŒμŠ€(μžμ›) λ°˜ν™˜~~

               

       2) web.xml   등둝             

           <listener>

              <listener-class></listener-class>

           </listener>           

           

       - ν•œ 개 μ΄μƒμ˜ λ¦¬μŠ€λ„ˆλ₯Ό 등둝할 수 μžˆλ‹€. 

       

       - 두 개의 λ©”μ„œλ“œλŠ” ServletContextEvent sre  νŒŒλΌλ―Έν„° κ°€μ§„λ‹€.

       1) contextInitialized(ServletContextEvent sre)       

        2) contextDestroyed(ServletContextEvent sre) 

        ServletContext sc =  sre.getServletContext();

        ServletContext sc λŠ” jsp 기본객체인 application 객체와 λ™μΌν•œ 객체이닀.

        web.xml

          <context-param>

             νŒŒλΌλ―Έν„° μ„€μ •

          </context-param>

          

      

      3) μ‹€μŠ΅    

         com.listener.DBCPinitListener 클래슀 μ„ μ–Έ - 

         μ„œλ²„ μ‹œμž‘ : 컀λ„₯μ…˜ ν’€ μ΄ˆκΈ°ν™”.

         

         -- context.xml, web.xml μ„€μ •