1 package mx.com.brained.actions; 2 3 import javax.servlet.http.*; 4 5 import mx.com.brained.resource.*; 6 import org.apache.struts.action.*; 7 import javax.servlet.ServletOutputStream; 8 9 /*** 10 * 11 * <p>Title: AwTaglib</p> 12 * 13 * <p>Description: Special action that handles reading and loading of special resources (usually js or png files) located in the 14 * classpath.</br> 15 * It requires two parameters for it to work properly: 16 * <ul> 17 * <li>type = containing the mime-mapping of the response</li> 18 * <li>file = containing the name of the file to be loaded and sent through the stream</li> 19 * </ul></p> 20 * 21 * <p>Copyright: Copyright (c) 2005</p> 22 * 23 * <p>Company: Brain-ED</p> 24 * 25 * @author Isidoro Treviņo 26 * @version 1.0 27 * 28 * @struts.action 29 * type="org.springframework.web.struts.DelegatingActionProxy" 30 * path="/resource" 31 * validate="false" 32 * 33 * @spring.bean 34 * name="/resource" 35 */ 36 public class ResourceAction extends Action{ 37 private ResourceManagerIface resource; 38 39 40 /*** 41 * The main method that will be executed to send through the ServletOutputStream the contents of the file 42 * @param mapping ActionMapping 43 * @param form ActionForm 44 * @param request HttpServletRequest 45 * @param response HttpServletResponse 46 * @return ActionForward returns null because it directly writes a binary output 47 * @throws Exception if any error occurs (usually a file not found on classpath) 48 */ 49 public ActionForward execute(ActionMapping mapping, ActionForm form, 50 HttpServletRequest request, 51 HttpServletResponse response) throws 52 Exception { 53 String type=request.getParameter("type"); 54 String file=request.getParameter("file"); 55 byte[] data = resource.getResource(file); 56 response.setContentType(type); 57 response.setContentLength(data.length); 58 ServletOutputStream ouputStream = response.getOutputStream(); 59 ouputStream.write(data, 0, data.length); 60 ouputStream.flush(); 61 ouputStream.close(); 62 return null; 63 } 64 65 66 public ResourceAction() { 67 68 } 69 70 /*** 71 * Method to set the proper Resource Manager (the class that itself loads the required files) 72 * @param resource ResourceManagerIface 73 * @spring.property 74 * ref="ResourceManager" 75 */ 76 public void setResource(ResourceManagerIface resource) { 77 this.resource = resource; 78 } 79 80 81 }