Using Commons-FileUpload in JSP to upload images to the MySQL database, then display it with servlet

xiaoxiao2021-03-06  14

This article will explain how to use Commons-fileUPload to upload images to the MySQL database and use the Java servlet to display it in your browser.

come out.

Prerequisites:

MYSQL, Tomcat was installed correctly, and Commons-fileUpload-1.0.jar was downloaded.

1, front page

--- Test_UPLOAD.HTM ---

Upload test </ title> <body> <form action = "UPLOAD.JSP" enctype = "multipart / form-data" method = "post"> Your name: <br> <input TYPE = "text" name = "name"> <br> file to process: <input type = "file" name = "userfile"> <br> <input type = "submit"> </ form> </ body> </ html></p> <p>2. Upload background processing page</p> <p>--- UPLOAD.JSP ---</p> <p><% @ Page ContentType = "Text / HTML; Charset = GB2312"%> <% @ Page Import = "Java.io. *"%> <% @ page import = "java.sql. *"%></p> <p><% @ page import = "java.util. *"%> <% @ page import = "org.apache.commons.fileUpload. *"%> <% @ page import = "com.cf.model.dbmanipulate"% > <% DiskFileUpload upload = new DiskFileUpload (); upload.setSizeThreshold (4096); upload.setRepositoryPath ( "d: / java /"); upload.setSizeMax (10000000); List fileItems = upload.parseRequest (request); Iterator i = fileItems.ITerator (); string name = ((fileItem) i.next ()). getString (); fileItem FI = (fileItem) i.next (); string filename = fi.getname (); // system. Out.println (filename); filename = filename.replace (':', '_'); filename = filename.Replace ('//', '_'); //system.out.println (FileName); / / File savedfile = new file ("D: / java / upload /", filename); //fi.write( //fi.write(); inputStream FIS = fi.getinputStream (); dbmanipulate DM = New dbmanipulate (); long long_size = new Long (FI.GETSIZE ()); int size = long_size.intValue (); preparedStatement PS = DM.DBUPDATE ("IMAGE, DESCRIPTIO n) VALUES (?,?) "); ps.setbinaryStream (1, fis, size); ps.setstring (2, filename); ps.executeUpdate (); string sql =" select id from photo order by id desc limit 1 "; prepaaredStatement PS2 = DM.DBQUERY (SQL); ResultSet RS = ps2.executeQuery (); int index = 0; if (rs.next ()) {index = rs.getint (1);} // ps. Close (); //fis.chose ();%> <% = name%> <a href="javascript:History.go(-1)"> Go on </a> <br> <iframe height = " 600 "width =" 800 "src = photoview? Id = <% = index%></p> <p>Scrolling = true> 3, servlet displaying the picture</p> <p>--- blobservlet.java ------</p> <p>Package com.cf.photo;</p> <p>Import java.io. *; import java.sql. *; import javax.sql. *; import javax.servlet. *; import javax.servlet.http. *; // import org.apache.commons.logging.log; // Import org.apache.commons.logging.logfactory;</p> <p>Import com.cf.model. *;</p> <p>Public class blobservlet extends httpservlet {// private static log log = logfactory.getlog (blobservlet.class);</p> <p>Protected void doget (httpservletRequest request, httpservletResponse response) throws servletexception, ioException {</p> <p>ServletOutputStream out = response.getOutputStream (); int id = Integer.parseInt (request.getParameter ( "id")); response.setContentType ( "image / jpeg"); out.write (getBlob (id)); out.flush (); Out.close (); PUBLIC BYTE [] getBlob (int photoid) {string SQL = "SELECT image from photo where id =?"; //Log.info(SQL); blob blob = null; Byte [ ] bytes = null; // String description = ""; PreparedStatement pstmt = null; ResultSet rs = null; DbManipulate mydb = new DbManipulate (); try {pstmt = mydb.DbQuery (sql); pstmt.setInt (1, photoid) Rs = pstmt.executeQuery (); while (rs.next ()) {blob = rs.getblob (1);} BYTES = blob.getbytes (1, (int)));} catch (SQLException E) {} Return Bytes;}}</p> <p>4. Store the table definition of the image:</p> <p>Create Database Web_exam;</p> <p>USE web_exam;</p> <p>Create Table Photo</p> <p>ID INT NOT NULL AUTO_INCREMENT Primary Key,</p> <p>Image Mediumblob NOT NULL,</p> <p>Description varchar (100) NULL</p> <p>);</p> <p>5. Directory structure of the app</p> <p>% Catalina_Home% / WebApps / Demo</p> <p>------ Test_UPLOAD.HTM</p> <p>------ UPLOAD.JSP</p> <p>------ WEB-INF</p> <p>| ---- Web.xml</p> <p>| ----- Build.xml</p> <p>| ----- LIB</p> <p>| ------- MySQL-Connector-Java-3.0.16-Ga-bin.jar</p> <p>| ------- Commons-fileupload-1.0.jar</p> <p>| ---- SRC | ---- COM</p> <p>| ----- CF</p> <p>| ----- Photo</p> <p>| ----- blobservlet.java</p> <p>| ----- Model</p> <p>| ---- DBConnection.java</p> <p>| ---- DBCONST.JAVA</p> <p>| ---- DBManipulate.java</p> <p>6, web.xml file content</p> <p><? XML Version = "1.0"?> <! doctype web-app public "- // sun microsystems, Inc.//dtd web application 2.3 // en" http://java.sun.com/j2ee/dtds /WEB-APP_2_3.DTD "></p> <p><web-app></p> <p><servlet> <servlet-name> photoview </ servlet-name> <servlet-class> com.cf.photo.blobservlet </ servlet-class> </ servlet> <servlet-mapping> <servlet-name> PhotoView </ servlet-name> <url-pattern> /photoView / * </ url-pattern> </ servlet-maping></p> <p><Welcome-file-list> <welcome-file> default.jsp </ welcome-file> <welcome-file> index.jsp </ welcome-file> <welcome-file> test.jsp </ welcome-file> <Welcome-File> < / Welcome-file-list></p> <p></ web-app></p> <p>7, Ant's buildfile content</p> <p>------ Build.xml ------</p> <p><Project name = "buildweb" default = "build" basedir = "."> <proteTY name = "src" location = "src" /> <protety name = "lib" location = "lib" /> <printright name = "build" location = "classes" /> <target name = "build"> <mkdir dir = "$ {build =" $ {src} "destdir =" $ {build} "> < INCLUDE NAME = "** / *. java" /> </ javac> </ target> <target name = "create-jars" depends = "build"> <jar destfile = "$ {lib} /myexam.jar" Basedir = "$ {build}" /> </ target> <target name = "clean" depends = "create-jars"> <delete dir = "$ {build}" /> </ target> </ project></p> <p>8, dbconst.java</p> <p>Package com.cf.model;</p> <p>public interface DbConst {public final static String JDBC_DRIVER = "com.mysql.jdbc.Driver"; public final static String JDBC_URL = "jdbc: mysql: // localhost: 3306 / web_exam?" "useUnicode = true & characterEncoding = GB2312"; public Final static string JDBC_USER = "root"; public final static string jdbc_pass = "chenfu";} 9, dbconnection.java</p> <p>Package com.cf.model; import java.sql. *; public class dbconnection implements dbconst {</p> <p>private String jdbcDriver = JDBC_DRIVER; private String databaseURL = JDBC_URL; private String dbUsername = JDBC_USER; private String dbPassword = JDBC_PASS; private Connection con = null; public String getJdbcDriver () {return this.jdbcDriver;} public void setJdbcDriver (String d) { this.jdbcDriver = d;} public String getDatabaseURL () {return this.databaseURL;} public void setDatabaseURL (String url) {this.databaseURL = url;} public String getDbUsername () {return this.dbUsername;} public void setDbUsername ( String u) {this.dbUsername = u;} public String getDbPassword () {return this.dbPassword;} public void setDbPassword (String p) {this.dbPassword = p;}! public boolean isConnected () {return (con = null } Public void disconnected () {if (con! = Null) {Try {con.close ();} catch (sqlexception ignore) {} finally {con = NULL;}}} public void setcon (connection c) { THIS.CON = C;} public connection getcon () THROWS SQLEXCEPTION {IF (iSconnected ()) throw new sqlexception ("alreadyady connected "); if (jdbcDriver == null) throw new SQLException (" No jdbcDriver property "); if (databaseURL == null) throw new SQLException (" No jdbcURL property "); try {Class.forName (jdbcDriver); / /log.info(jdbcDriver);} catch (ClassNotFoundException e) {throw new SQLException (jdbcDriver "class could not loaded");} con = DriverManager.getConnection (databaseURL, dbUsername, dbPassword); return con;}}</p> <p>10, dbmanipulate.java</p> <p>Package com.cf.model; import java.sql. *; public class dbmanipulate {private connection con = null; private preparedState pstmt = null;</p> <p>public PreparedStatement DbQuery (String sql) throws SQLException {DbConnection newcon = new DbConnection (); con = newcon.getCon (); pstmt = con.prepareStatement (sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); //log.info(sql ); return pstmt;} public PreparedStatement DbUpdate (String sql) throws SQLException {DbConnection newcon = new DbConnection (); con = newcon.getCon (); pstmt = con.prepareStatement (sql); return pstmt;} public void dbClose () {If (pStmt! = Null;}}} 11, go to the web-inferry of the web application, execute Ant in the command line to compile the source file, then open the Tomcat server,</p> <p>Open the address in the browser: http: // localhost: 8080 / demo / test_upload.htm, try to go upload a JPG picture, see if it is not possible.</p> <p>12. Welcome everyone to make valuable comments, please contact me:</p> <p>Email: cf0124@163.com</p> <p>MSN: CF_ASP_MASTER@yahoo.com.cn</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-48985.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="48985" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.043</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'wQ4Bt0OVfXwsLNuwcn8_2Bo9J8nJvZhaRC6VX4wBywcxVDFWo_2Fo5vkr_2BqTEZ5hOpx9hYWotlYPX24McqZs1d2J4A_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>