Mercurial > hg > human-echolocation-java-webapp
changeset 28:52adafab20c1
The Servlet now sends the audio file to the browser;
author | luisf <luis.figueira@eecs.qmul.ac.uk> |
---|---|
date | Tue, 10 Dec 2013 12:02:46 +0000 |
parents | 3b092b89c92e |
children | fa9a5f930d0e |
files | WebContent/index.jsp src/HumanEchoServlet.java |
diffstat | 2 files changed, 71 insertions(+), 71 deletions(-) [+] |
line wrap: on
line diff
--- a/WebContent/index.jsp Mon Dec 09 16:57:52 2013 +0000 +++ b/WebContent/index.jsp Tue Dec 10 12:02:46 2013 +0000 @@ -2,18 +2,6 @@ <html> <head> <title>Human Echolocation</title> - - <% - // String distStr = request.getParameter("dist"); - // int dist = 1; - // boolean distSet = false; - // if(distStr!=null && distStr.length()>0) - // { - // dist = Integer.parseInt(distStr); - // distSet = true; - // } - %> - <link rel="Stylesheet" type="text/css" media=all href="./StyleSheet.css" /> <link href="StyleSheet.css" rel="stylesheet" type="text/css" /> @@ -22,35 +10,34 @@ </head> <body> + <div style="text-align: center"> + <table width="760" cellpadding="0" cellspacing="0"> + <tr> + <td><img src="header_bg.jpg" alt="Header Image Not Found" width="779" height="72" /></td> + </tr> + </table> + <br /> - <div style="text-align: center"> - <table width="760" cellpadding="0" cellspacing="0"> - <tr> - <td><img src="header_bg.jpg" alt="Header Image Not Found" width="779" height="72" /></td> - </tr> - </table> - <br /> + <h1>Human Echolocation WebApp Example Page</h1> - <h1>Human Echolocation WebApp Example Page</h1> + Testing...<br /> - Testing... + Input parameters: + <br> + Distance: + <input type="text" id="dist" "name="dist" size="8"> + <br> + <input type="submit" value="Generate" id="generate"> + <br> - Input parameters: - <br> - Distance: - <input type="text" id="dist" "name="dist" size="8"> - <br> - <input type="submit" value="Generate" id="generate"> - <br> + <div id="ajax-loading"> + <img src="ajax-loader.gif" class="ajax-loader" style="display:none" /></div> - <div id="ajax-loading"> - <img src="ajax-loader.gif" class="ajax-loader" style="display:none" /></div> + <br /> - <br /> + <div id="responsetext"></div> - <div id="responsetext"></div> - - <br> + <br> </div> </body>
--- a/src/HumanEchoServlet.java Mon Dec 09 16:57:52 2013 +0000 +++ b/src/HumanEchoServlet.java Tue Dec 10 12:02:46 2013 +0000 @@ -1,5 +1,5 @@ /* - * HumanEchoServlet + * HumanEchoServlet * * Version information * @@ -11,14 +11,14 @@ import java.util.Properties; import java.io.IOException; +import java.io.FileInputStream; +import java.io.BufferedInputStream; +import java.io.File; + import org.apache.log4j.Logger; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.ServletException; -import javax.servlet.ServletConfig; -import javax.servlet.RequestDispatcher; +import javax.servlet.*; +import javax.servlet.http.*; import com.mathworks.toolbox.javabuilder.MWJavaObjectRef; import com.mathworks.toolbox.javabuilder.MWNumericArray; @@ -30,8 +30,10 @@ public class HumanEchoServlet extends HttpServlet { private HumanEcho echo; + private static Logger logger = Logger.getLogger(HumanEchoServlet.class); - private static Logger logger = Logger.getLogger(HumanEchoServlet.class); + private String tempdir = ""; + private String wavdir = ""; public void init(ServletConfig config) throws ServletException { super.init(config); @@ -42,8 +44,8 @@ properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("myapp.properties")); //get the property value and print it out - System.out.println(properties.getProperty("tmpdir")); - System.out.println(properties.getProperty("outdir")); + tempdir = properties.getProperty("tmpdir"); + wavdir = properties.getProperty("outdir"); } catch (IOException e) { e.printStackTrace(); @@ -72,10 +74,14 @@ MWStructArray Input = null; HumanEcho echo; + String outputfname = new String(); + try { echo = new HumanEcho(); logger.error("We are logging!"); + logger.warn(System.getProperty("catalina.base")); + // Matlab structure: // Input = struct('dist', 0.9, 'azim', 0, 'orient', 'horz', 'dirweight', 0.2, 'outputfname', 'foo.wav') @@ -92,7 +98,7 @@ sb.append("e_d"); sb.append(dist); sb.append(".wav"); - String outputfname = sb.toString(); + outputfname = sb.toString(); Input.set("outputfname", 1, outputfname); @@ -103,35 +109,42 @@ e.printStackTrace(); } + // Creating the stream + ServletOutputStream stream = null; + BufferedInputStream buf = null; + + try{ + stream = response.getOutputStream(); + File wavfile = new File(outputfname); + + //set response headers + response.setContentType("audio/wav"); + response.addHeader("Content-Disposition","attachment; filename=" + outputfname ); + response.setContentLength( (int) wavfile.length( ) ); + + FileInputStream input = new FileInputStream(wavfile); + buf = new BufferedInputStream(input); + int readBytes = 0; + + //read from the file; write to the ServletOutputStream + while((readBytes = buf.read( )) != -1) + stream.write(readBytes); + + } catch (IOException ioe){ + throw new ServletException(ioe.getMessage( )); + } finally { + //close the input/output streams + if(stream != null) + stream.close( ); + + if(buf != null) + buf.close( ); + } + System.out.println("MCRROOT: " + System.getenv("MCRROOT")); System.out.println("PATH: " + System.getenv("PATH")); System.out.println(MCRConfiguration.isInstalledMCR()); - - StringBuffer buffer = new StringBuffer(); - - buffer.append("<BR>"); - buffer.append("<BR>"); - - buffer.append("worked, ?"); - - buffer.append("<BR>"); - buffer.append("<BR>"); - -/* - buffer.append("<TABLE >"); - for (double[] row : square) - { - buffer.append("<TR>"); - for (double value : row) - { - buffer.append("<TH>"); - buffer.append(new Double(value).intValue()); - } - } - buffer.append("</TABLE>"); - buffer.append("<BR>"); - response.getOutputStream().print(buffer.toString()); -*/ + logger.warn("tmpdir " + tempdir); } }