litesoft
@ 935
litesoft / trunk / DeviceDesktopTest / src / org / litesoft / ddt / DeviceDesktopTestServlet.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
package org.litesoft.ddt; import org.litesoft.html.*; import org.litesoft.jetty.Shutdown; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class DeviceDesktopTestServlet extends HttpServlet { private final IndexHtmlGenerator mIndexHtmlGenerator; private ServletContext mServletContext; public DeviceDesktopTestServlet( IndexHtmlGenerator pIndexHtmlGenerator ) { mIndexHtmlGenerator = pIndexHtmlGenerator; } @Override public void init( ServletConfig config ) throws ServletException { super.init( config ); mServletContext = config.getServletContext(); } @Override protected void doGet( HttpServletRequest pRequest, HttpServletResponse pResponse ) throws ServletException, IOException { String zPath = pRequest.getPathInfo(); if ( zPath == null ) { zPath = "/"; } if ( zPath.endsWith( "/" ) ) { zPath += "index.html"; } if ( zPath.endsWith( "/index.html" ) ) { String zAction = pRequest.getParameter( "action" ); if ( "Restart".equals( zAction ) ) { Shutdown.Instance.get().request( 0 ); } else if ( "ShutDown".equals( zAction ) ) { Shutdown.Instance.get().request( 1 ); } mIndexHtmlGenerator.respond( zPath, pRequest, pResponse ); return; } File zFile = new File( "." + zPath ); if ( !zFile.isFile() ) { System.out.println( "Can't find: " + zFile.getAbsolutePath() ); pResponse.sendError( HttpServletResponse.SC_NOT_FOUND ); return; } if ( !zFile.canRead() ) { System.out.println( "Can't read: " + zFile.getAbsolutePath() ); pResponse.sendError( HttpServletResponse.SC_FORBIDDEN ); return; } CacheHeaders.forever( pResponse ); // Get the MIME type String mimeType = mServletContext.getMimeType( zFile.getName().toLowerCase() ); if ( null == mimeType ) { System.err.println( "Could not get MIME type of " + zFile.getName() ); mimeType = "application/octet-stream"; } // Set content type pResponse.setContentType( mimeType ); // Set content size pResponse.setContentLength( (int) zFile.length() ); // Open the file and output streams InputStream in = new FileInputStream( zFile ); try { OutputStream out = pResponse.getOutputStream(); try { copyStream( in, out ); Closeable zCloseable = out; out = null; zCloseable.close(); } finally { closeQuietly( out ); } } finally { closeQuietly( in ); } } private static void closeQuietly( Closeable pClosable ) { if ( pClosable != null ) { try { pClosable.close(); } catch ( IOException e ) { // Whatever } } } private static void copyStream( InputStream pIn, OutputStream pOut ) throws IOException { // Copy the contents of the file to the output stream byte[] buf = new byte[1024]; for ( int count; (count = pIn.read( buf )) > 0; ) { pOut.write( buf, 0, count ); } } } |
Commits for litesoft/trunk/DeviceDesktopTest/src/org/litesoft/ddt/DeviceDesktopTestServlet.java
Revision | Author | Commited | Message |
---|---|---|---|
935 Diff | GeorgeS | Fri 30 May, 2014 20:28:08 +0000 | Reformatted. |
927 Diff | GeorgeS | Mon 17 Mar, 2014 03:58:40 +0000 | Template system and index.html as a resource... |
926 Diff | GeorgeS | Fri 14 Mar, 2014 23:58:15 +0000 | Switched from Cookie to Param. |
924 Diff | GeorgeS | Fri 14 Mar, 2014 22:02:56 +0000 | Drop IWS |
923 Diff | GeorgeS | Fri 21 Feb, 2014 00:03:57 +0000 | Multi-Port Jetty |
922 Diff | GeorgeS | Tue 18 Feb, 2014 16:18:01 +0000 | Mini App ready for packaging... |
920 | GeorgeS | Sun 16 Feb, 2014 19:06:51 +0000 | DDT w/ Jetty |