ファイルのアップロードは、Webアプリケーションで非常に一般的です。次に、サーブレットに基づいてファイルアップロードを導入します。 struts2に基づくファイルアップロードを表示できます。
ページサイドコード:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Register</title></head><body> <form name="form1" onsubmit="return on_submit() "action =" registerSvlet "method =" post "enctype =" multipart /form-data "> <input-data"> <input-data = "text" name "name =" uname1 "id" = "password" /> <input type = "text" "name" name "name2" = "uname2" /> <入力タイプ= "パスワード="パスワード= "パスワード="パスワード= "パスワード="パスワード " id="password"/> <input type="radio" value="male" checked="checked" name="sex"/> Male<input type="radio" value="female" name="sex"/> Female<input type="text" name="email" value="" id="login" /> <br/><br/> <input type="file" name="file1" id="file"/> <input type="submit" name="submit" value = "完全な登録"/> </form> </body> </html>
ここで注意すべきことの1つは、ファイルによってアップロードされたフォームがenctype = "multipart/form-data"でなければならないことです。ここでは、Ajaxの相互作用なしに背景と直接対話します。 Ajaxを使用する必要がある場合は、http://www.cnblogs.com/shenliang123/category/372520.htmlをご覧ください。
サーブレットのコード実装を引き続き見てみましょう。
パッケージcom.xidian.bbs.servlet; import java.io.ioexception; import java.io.io.printwriter; Import java.net.inetadress; Import java.sql.connection; Import java.sql.Resultset; Import Java.sql.Statement; Javax.Servletleteletementmentmentmentmentmen javax.servlet.http.httpservlet; Import javax.servlet.http.httpservletrequest; Import javax.servlet.servlet.httpservletresponse; Import javax.servlet.jsp.jspactory; Import javax.servlet.jsp.pagecontext; Import; com.jspsmart.upload。*; import com.xidian.bbs.bean.bean; Import com.xidian.bbs.bean.registerbean; Import com.xidian.bbs.util.dbaccess; Import com.xidian.bbs.util.util.iptimestamp;保護されたvoid doget(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {respons.setcontenttype( "text/html"); Response.setcharacterencoding( "gbk"); request.setcharacterencoding( "gbk"); smartupload smart = new Smartupload(); try {// pageContextはJSPの組み込みオブジェクトです。サーブレットで直接使用することはできず、一部の処理が必要です。 jspFactory _jspxFactory = null; pagecontext pagecontext = null; _jspxFactory = jspfactory.getDefaultFactory(); pagecontext = _jspxfactory.getPageContext(this、request、response、 ""、true、8192、true); smart.initialize(pagecontext); //アップロード操作SMART.UPLOAD();の初期化; iptimestamp its = new iptimestamp(inetaddress.getLocalHost()。gethostAddress(); // request.getRemoteaddr()ユーザーのIPアドレスを取得// system.out.println( "取得します。 //ファイルのバッチアップロードを実装する場合は、forループを使用し、getFile(0)の0をext = smart.getfiles()にstringに変更するだけです。getFile(0).getFileExt(); //これはファイルを取得するための拡張機能です。 //system.out.println("取得したファイル名は "+filename); //this.getServletContext().getRealPath("/ ")Tomcatディレクトリを取得するには、アップロードフォルダーに配置されます。 java.io.file.separatorは安全な操作// string realpath = ""; //this.getServletContext().getRealPath(")+ Smart.getFiles()。getFile(0).Saveas( "/headupload"+java.io.file.separator+filename); string realpath = "headupload/"+filename+""; // //前のフォームがカプセル化されているため、request.getParameter()を使用してフォームパラメーター文字列uname1 = smart.getRequest()。getParameter( "uname1")を取得することはできません。 // nickname string upass1 = smart.getRequest()。getParameter( "password1"); string sex = smart.getRequest()。getParameter( "sex");文字列uname2 = smart.getRequest()。getParameter( "uname2"); // username string email = smart.getRequest()。getParameter( "email"); printwriter out = response.getWriter(); //以下は、省略された永続レイヤー操作です。 。 。 。 。 。 。 。 。 。 }保護されたvoid dopost(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {doget(request、response); }}上記で使用されるIP+タイムスタンプクラスIPTIMESTAMPは、ファイルの名前を変更します。
ファイルやその他の操作のアップロードでは、ファイル名が矛盾するのを防ぐために、操作の名前を変更します。これは、IP+タイムスタンプを実装する命名です。
私はコードをアップロードしたばかりです、言うことは何もありません、実装は非常に簡単ですが、実用的です
パッケージcom.xidian.bbs.util;インポートjava.text.simpledateformat; import java.util.date; import java.util.random; public class iptimestamp {private simpledateformat sim = null; // time private string ip = null; public iptimestamp(){} public iptimestamp(string ip){this.ip = ip; } public string getiptimerand(){stringbuffer sbf = new StringBuffer(); if(this.ip!= null){string a [] = this.ip.split( "//。"); //ポイントに従ってIPアドレスを分割しますが、ポイントは(int i = 0; i <a.length; i ++){sbf.append(this.addzero(a [i]、3))の場合に逃げる必要があります。 //ゼロ修飾メソッドを呼び出し、3桁未満の各IPは自動的に3桁に補足されます} sbf.append(this.getTimestamp()); //これを使用して、外部メソッドを呼び出しますランダム= new Random(); //(int i = 0; i <3; i ++){// 3桁の乱数sbf.append(random.nextint(10)); //各乱数は10を超えません}} sbf.toString()を返します。 } @suppresswarnings( "unsused")private string getDate(){//日付と時刻についてはthis.sim = new simpledateFormat( "yyyy-mm-dd hh:mm:ss.sss"); this.sim.format(new date()); } private string getTimestamp(){// timestamp this.sim = new SimpledateFormat( "yyyymmdhhmmmsssssss"); this.sim.format(new date()); } private string addzero(string str、int len){//自動ゼロコンクリメーション方法、パラメーターは指定された文字列と長さのstringbuffer s = new StringBuffer(); S.Append(str); while(s.length()<len){s.insert(0、 "0"); //ゼロ位置でゼロ補完操作を完了} return S.ToString(); } // public static void main(string [] ary){iptimestamp iptimestamp = new iptimestamp( "172.168.3.222"); //パラメーターSystem.out.println(iptimestamp.getiptimerand())を使用してコンストラクターを呼び出す; }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。