Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-14.log failed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:filter [2008/07/15 14:38] bananastudy:java:filter [2010/07/07 12:15] (現在) banana
行 2: 行 2:
 servlet에 의해 동적으로 생성된 이미지를 클라이언트쪽에 캐싱시키는 방법을 소개한다. servlet에 의해 동적으로 생성된 이미지를 클라이언트쪽에 캐싱시키는 방법을 소개한다.
 Struts Framework를 사용하고 있다면, %%RequestProcessor%% class를 확장해서 요청처리전에 Cache-Control의 Response Struts Framework를 사용하고 있다면, %%RequestProcessor%% class를 확장해서 요청처리전에 Cache-Control의 Response
-header를 설정함으로써 캐쉬 설정을 할 수 있다. ((스트럿츠 관련 caching control 참조))\\+header를 설정함으로써 캐쉬 설정을 할 수 있다. ((스트럿츠 관련 [[study:java:struts|caching control]]참조))\\
 하지만, 동적으로 이미지를 생성하는 독자적인 servlet ((Struts의 %%ActionServlet%%과는 별도의 servlet을 말한다.)) 의 경우 %%RequestProcessor%%를 이용해 캐쉬 설정하는 것은 불가능하다. 이럴 경우의 대안으로 Servlet Filter를 사용할 수 있다.\\ 하지만, 동적으로 이미지를 생성하는 독자적인 servlet ((Struts의 %%ActionServlet%%과는 별도의 servlet을 말한다.)) 의 경우 %%RequestProcessor%%를 이용해 캐쉬 설정하는 것은 불가능하다. 이럴 경우의 대안으로 Servlet Filter를 사용할 수 있다.\\
 Servlet의 요청 처리 이전에 response header의 캐쉬 설정을 함으로써 가능해진다. Servlet의 요청 처리 이전에 response header의 캐쉬 설정을 함으로써 가능해진다.
 +
 +{{keywords>cache control Servlet Filter ResponseHeaderFilter Cache-Control}}
  
 ===== ResponseHeaderFilter ===== ===== ResponseHeaderFilter =====
行 44: 行 46:
 </code> </code>
  
-====== reference ====== +위의 filter가 하는 일은 web.xml의 context parameter로부터 response header를 설정하는 것이다이 작업을 하는 것이 다음의 4줄이다.
-1.[[http://www.onjava.com/pub/a/onjava/2004/03/03/filters.html?page=1]] : Another Java Servlet Filter Most Web Applications Should Have+
  
 +<code java>
 +for (Enumeration e=fc.getInitParameterNames();
 +     e.hasMoreElements();) {
 +   String headerName = (String)e.nextElement();
 +   response.addHeader(headerName,
 +                 fc.getInitParameter(headerName));
 +}
 +</code>
 +
 +
 +===== Cache Control using ResponseHeaderFilter =====
 +앞서의 %%ResponseHeaderFilter%%를 이용해 cache 설정을 해보자. Response Header중에 Cache 관련 헤더는 Cache-Control이다.
 +다음의 code를 web.xml에 추가함으로써 cache 설정을 할 수 있다.
 +
 +<code xml>
 +<filter>
 +  <filter-name>
 +   ResponseHeaderFilter</filter-name>
 +  <filter-class>
 +   com.jspbook.ResponseHeaderFilter</filter-class>
 +  <init-param>
 +    <param-name>
 +     Cache-Control</param-name>
 +    <param-value>
 +     max-age=3600</param-value>
 +  </init-param>
 +</filter>
 +
 +<filter-mapping>
 +  <filter-name>
 +   ResponseHeaderFilter</filter-name>
 +  <url-pattern>/logo.png</url-pattern>
 +</filter-mapping>
 +</code>
 +
 +max-age=3600의 의미는 3600 seconds(60minute)동안 cache시키겠다는 의미이다.
 +반대로 client의 cache를 막기위해서는 위의 <filter>부분을 다음코드로 치환시키면 된다.
 +
 +<code xml>
 +<filter>
 +  <filter-name>
 +   ResponseHeaderFilter</filter-name>
 +  <filter-class>
 +   com.jspbook.ResponseHeaderFilter</filter-class>
 +  <init-param>
 +    <param-name>Cache-Control</param-name>
 +    <param-value>
 +      private,no-cache,no-store</param-value>
 +   </init-param>
 +</filter>
 +</code>
 +
 +====== reference ======
 +1.[[http://www.onjava.com/pub/a/onjava/2004/03/03/filters.html?page=1|Another Java Servlet Filter Most Web Applications Should Have
 +]]  

QR Code
QR Code study:java:filter (generated for current page)