View Javadoc

1   /*
2    * $Id: ImageAction.java 421488 2006-07-13 03:43:08Z wsmoak $
3    *
4    * Copyright 1999-2004 The Apache Software Foundation.
5    *
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  
20  package org.apache.struts.webapp.exercise;
21  
22  
23  import org.apache.struts.action.Action;
24  import org.apache.struts.action.ActionForm;
25  import org.apache.struts.action.ActionForward;
26  import org.apache.struts.action.ActionMapping;
27  
28  import javax.servlet.http.HttpServletRequest;
29  import javax.servlet.http.HttpServletResponse;
30  import java.io.InputStream;
31  import java.io.OutputStream;
32  
33  
34  /***
35   * Read image from resource given as ActionMapping parameter
36   * and copy to output stream.
37   *
38   * @version $Rev: 421488 $ $Date: 2006-07-12 20:43:08 -0700 (Wed, 12 Jul 2006) $
39   */
40  
41  public class ImageAction extends Action {
42  
43  
44      /***
45       * Read image from resource given as ActionMapping parameter
46       * and copy to output stream.
47       *
48       * @exception java.lang.Exception on input/output error
49       */
50      public ActionForward execute(
51              ActionMapping mapping,
52              ActionForm form,
53              HttpServletRequest request,
54              HttpServletResponse response)
55              throws Exception {
56  
57              // e.g. /$module/struts-power.gif
58              // :FIXME: Should compute module
59          String image = mapping.getParameter();
60  
61          byte[] buffer = new byte[2048];
62          int bytesRead;
63          InputStream input =
64                  getServlet().getServletContext().getResourceAsStream(image);
65          OutputStream
66                  out = response.getOutputStream();
67  
68          while ((bytesRead = input.read(buffer)) != -1) {
69              out.write(buffer, 0, bytesRead);
70          }
71          out.close();
72  
73          return null;
74      }
75  
76  }