61 lines
1.8 KiB
Java
61 lines
1.8 KiB
Java
|
Working with images
|
||
|
|
||
|
|
||
|
|
||
|
package com.ack.web.servlet;
|
||
|
|
||
|
import java.io.IOException;
|
||
|
import java.io.InputStream;
|
||
|
import java.net.URL;
|
||
|
import java.net.URLConnection;
|
||
|
import javax.servlet.ServletException;
|
||
|
import javax.servlet.ServletOutputStream;
|
||
|
import javax.servlet.http.HttpServlet;
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletResponse;
|
||
|
|
||
|
public class WorkingWithImages extends HttpServlet {
|
||
|
private int counter;
|
||
|
|
||
|
public void doGet( HttpServletRequest req, HttpServletResponse res )
|
||
|
throws ServletException, IOException {
|
||
|
ServletOutputStream os = res.getOutputStream();
|
||
|
res.setContentType( "image/bmp" );
|
||
|
|
||
|
// where possible, tell the client how big the file is
|
||
|
res.setContentLength( 3936256 );
|
||
|
|
||
|
// get resource as a url
|
||
|
URL resourceUrl = getServletContext().getResource( "/images/large.bmp" );
|
||
|
if( resourceUrl == null ) {
|
||
|
res.sendError( HttpServletResponse.SC_NOT_FOUND );
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// open connection to resource
|
||
|
URLConnection con = null;
|
||
|
try {
|
||
|
con = resourceUrl.openConnection();
|
||
|
con.connect();
|
||
|
}
|
||
|
catch( IOException ioe ) {
|
||
|
res.sendError( HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
|
||
|
"unable to read resource: /images/large.bmp" );
|
||
|
}
|
||
|
|
||
|
// send resource contents back down output stream
|
||
|
try {
|
||
|
InputStream is = con.getInputStream();
|
||
|
byte[] buf = new byte[8096];
|
||
|
int bytesRead;
|
||
|
while( ( bytesRead = is.read( buf ) ) != -1 ) {
|
||
|
os.write( buf, 0, bytesRead );
|
||
|
}
|
||
|
}
|
||
|
catch( IOException ioe ) {
|
||
|
res.sendError( HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
|
||
|
"unable to send resource to client: /image/large.bmp" );
|
||
|
}
|
||
|
}
|
||
|
}
|