/* 2011-10 read a file and then write it back slightly modified as a different file name
Needs refactoring: more object based, more methods, try-catch
*/
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
//import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletWriteFile extends HttpServlet
{
private static final long serialVersionUID = 1L;
private static final String relativepath = "/ServletWriteFile/ServletWriteFile" ;
private static final String inputfilename = "web.xml";
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType( "text/html" ); // MIME type
PrintWriter servletresponse = response.getWriter();
String requestType = request.getMethod();
outputXHTMLHeader( "Write File Example", servletresponse );
outputSubmitButtonForm( requestType , servletresponse );
Properties currentSystemProperties = System.getProperties();
String fileseperatorsymbol = currentSystemProperties.getProperty( "file.separator" );
servletresponse.println( "fileseperatorsymbol = " + fileseperatorsymbol + "<br />");
ServletContext myServletContext = getServletContext() ;
String realpath = myServletContext.getRealPath( fileseperatorsymbol );
servletresponse.println( "realpath: " + realpath + "<br />" );
String fullpath = realpath + fileseperatorsymbol;
displayFileContents( realpath , "web.xml" , servletresponse );
printToFileSystem( fullpath , "test.txt" , "written to file system" , servletresponse );
fullpath = realpath + fileseperatorsymbol + "WEB-INF" + fileseperatorsymbol;
printToFileSystem( fullpath, "test.txt" , "written to subdir WEB-INF" , servletresponse );
servletresponse.println( "</body></html>" );
servletresponse.close();
} //end doGet()
private static void displayFileContents( String path , String filename , PrintWriter servletresponse )
{
servletresponse.println( "opening " + path + filename );
try{
FileReader myFileReader = new FileReader( path + filename );
myFileReader.close();
}
catch( IOException e )
{
e.printStackTrace();
servletresponse.println( "error reading " + filename + " from " + path );
}
/*
InputStream myInputStream = myServletContext.getResourceAsStream( inputfilename );
servletresponse.println( "opening file: " + inputfilename + "<br />" );
if( myInputStream != null )
{
InputStreamReader myInputStreamReader = new InputStreamReader( myInputStream );
BufferedReader myBufferedReader = new BufferedReader( myInputStreamReader );
//servletresponse.println( "<pre>" );
String inputfilename_contents = "";
while ( ( inputfilename_contents = myBufferedReader.readLine() ) != null)
{
String result = inputfilename_contents.replaceAll("<", "<" );
servletresponse.println( result );
}
//servletresponse.println( "</pre>" );
//myInputStreamReader.close();
}
*/
} // end displayFileContents
private static void printToFileSystem( String fullpath, String filename , String message , PrintWriter servletresponse )
{
try{
FileWriter outFile = new FileWriter( fullpath + filename );
PrintWriter outputstream = new PrintWriter( outFile );
outputstream.println( message );
outputstream.close();
outFile.close();
}
catch( IOException e )
{
e.printStackTrace();
servletresponse.println( "error writing " + filename + " to " + fullpath );
}
} // end printToFileSystem
private static void outputXHTMLHeader( String title , PrintWriter servletresponse )
{
servletresponse.println( "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">");
servletresponse.println( "<html xmlns=\"http://www.w3.org/1999/xhtml\">" );
servletresponse.println( "<head><title>" + title + "</title>" );
servletresponse.println( "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />" );
servletresponse.println( "</head>" );
} //end outputXHTMLHeader
private static void outputSubmitButtonForm( String requestType , PrintWriter servletresponse )
{
servletresponse.println("<body>");
servletresponse.println("Request Type: " + requestType + "<br />\n");
servletresponse.println( "<form id=\"submitbutton\" action=" + relativepath + " method=\"post\" >" );
servletresponse.println( "<div><input type=\"submit\" /></div>" );
servletresponse.println("</form>");
} //end outputSubmitButtonForm
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doGet( request, response);
}
} //end class