知识大全 用javaZoom的uploadBean扩展request的功能

Posted 文件

篇首语:书籍是朋友,虽然没有热情,但是非常忠实。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 用javaZoom的uploadBean扩展request的功能相关的知识,希望对你有一定的参考价值。

用javaZoom的uploadBean扩展request的功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在Servlet中 upload上传是我们常用的操作之一 然而在javax servlet包中 javax servlet HttpServletRequest对于form中的enctype   = multipart/form data 的内容的处理支持却极有限 我们不得不手工编写读取和分离Stream中的内容的代码 这使我们对封装完好的MultipartFormDataRequest提供支持的包充满了期待 其实常用的javaZoom的uploadBean中 就已经提供了这个良好的工具 另外 uploadBean还包括了上传后的存储机制 如保存到数据库 文件 zip文件等 如果你不需要做定制的话 尽管可以使用他们 当然定制上传后的处理很简单也很实用   javaZoom的包中共包含了 个class文件:  UploadBean class    UploadParameters class    UploadListener class    UploadFile class    UploadException class    Archiver class    MultipartFormDataRequest class    其中 我们最感兴趣的是MultipartFormDataRequest class 正如其名 它使我们可以象处理一般的form那样处理enctype= multipart/form data 的form的内容     在MutipartFormDataRequest中 共有 种public方法     getParameterNames(name:String):Enumeration    getParameterValue(name:String):String    getParameterValues(name:String):String[]    getFiles():Hashtable    isMultipartFormData(req:HttpServletRequest):boolean    和 种public构造函数     MultipartFormDataRequest(req:HttpServletRequest maxcontentlength:int)    MultipartFormDataRequest(req:HttpServletRequest)    所有的对Mutipart的内容的分析 在构造函数中由 oreilly servlet multipart包中的分析器完成 我们无需关心原先最头疼的对Stream内容的分析的工作 只需要象下面的代码那样     if (MultipartFormDataRequest isMultipartFormData(request))//如果是multipart类型的request    MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);        就得到了MutipartFormDataRequest的实例     如果想得到上传的内容     Hashtable files = mrequest getFiles();//得到所有的上传的文件    if(files!=null && !files isEmpty())    UploadFile file=(UploadFile)files get(name);// name:String 文件输入框的名称    // file:UploadFile 文件        在这里 UploadFile file中包含了我们感兴趣的上传的文件的所有的信息:    getData():byte[] 文件的内容     getFileSize():long 文件的长度    getContentType():String 文件的编码    getFileName():String 文件的名称      这些信息足够我们进行一般所想要的操作了     正如uploadBean的名称所言 uploadBean提供对某些常用上传操作的封装     在uploadBean中 setStoreModel(storeModel:int)提供了对上传文件以下几种形式的保存     保存在内存中     保存在指定目录中     保存在数据库中     保存在zip文件中     保存在Tagzip文件中     序列化形式保存     Xml形式保存    不过以上每一种形式的保存 都需要符合uploadBean中所指的一些规则 如保存在数据库中 uploadBean是把数据库纯粹作为一种存储手段 关键字都是用TimeStamp生成的 保存在目录中 不能指定 层以上目录     如我们需要把上传文件用自己的方式保存 可以采用重新编写保存或者直接重载uploadBean实现     从byte[]data=file getData();中 我们得到文件的字节数组 很容易通过构造新的流 进行文件的输入输出 存储到数据库 保存在各种形式的载体中       实例 上传文件并且存放到数据库中    数据库表格 TestTable    lsh char( ) pk     nr clob( )      //数据库基本操作    package upload example ;    import java sql *;    import javax sq *;    import javax naming *;    public class DbOps()    private DataSource ds;    private Connection conn;    private String env= java:p/env/jdbc/TestDB ;  public String getEnv()return env;  public void setEnv(String env)this env=env;  public DataSource getDataSource()//取得数据源(连结池)  try    Context ictx=new InitalContext();    ds=(DataSource)ictx lookup(env);     catch(Exception ignore)    //some debug codes      return ds;    public Connection getConnection()//取得数据库连结  if(ds==null)ds=getDataSource();    try     if(conn==null)conn=ds getConnection();    catch(Exception ignore)    //some debug codes      return conn;      //存储  package upload example ;    import java sql *;    public class DBStore()     public static String ISFILEEXIST= select count(*) from TestTable where lsh=? ;    public static String INSERTFILE= insert into TestTable (lsh)values(?) ;    public static String UPDATEFILE= update TestTable set nr=? where lsh=? ;    Connection conn;    DbOps dbops;    protected boolean isFileExist(String lsh)throws SQLException    PreparedStatement pst=conn prepareStatement(ISFILEEXIST);    pst setString( lsh);    ResultSet rs=pst executeQuery();    int count;    for(count= ;rs next();count=rs getInt( ));    pst close();    if(count<=0)return false;    else return true;        protected void insertFile(String lsh)throws SQLException    PreparedStatement pst=conn.prepareStatement(INSERTFILE);    pst.setString(1,lsh);    pst.executeUpdate();    pst.close();        protected void updateFile(String lsh,byte[]data)throws SQLException    PreparedStatement pst=conn.prepareStatement(UPDATEFILE);    pst.setBytes(1,data);    pst.setString(2,lsh);    pst.executeUpdate();    pst.close();        public void saveFile(String lsh,byte[]data)throws SQLException    if(lsh==null || data==null ||lsh.trim().length()==0)return;      if(dbops==null)dbops=new DbOps();     if(conn==null)conn=dbops.getConnection();      if(!isFileExist(lsh))    insertFile(lsh);        updateFile(lsh,data);      conn.close();    conn=null;            //servlet 片断(servlet 中应包含javazoom.upload.*;java.util.*;)    DBStore dbs=new DBStore();    if (MultipartFormDataRequest.isMultipartFormData(request))        MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);    if(mrequest.getParameter("submit")!=null)    String lsh=mrequest.getParameter("lsh");    Hashtable files = mrequest.getFiles();    UploadFile file = files.get("ufile");    byte[]data=file.getData();    try    dbs.saveFile(lsh,data);    catch(Exception e)    //debugCodes           //Submit 片断  
           
  实际运行以上代码时,注意DbOps的env参数需要和实际的服务器配置的连结池参数一致,并且需要有upload.jar 和 cos.jar这两个包。tW.WIngWIT.cOm如果是在WebShpere 4上,请把他们拷贝到项目的webApplication\\WEB-INF\\lib下。如果是Resin上,把他们拷贝到项目的WEB-INF\\lib下。      cha138/Article/program/Java/hx/201311/26648

相关参考

针对Re200c/Re100c电气化接触网设备的特点,电分相的结构形式是如何构成?

  电分相锚段关节采用两个三跨绝缘锚段关节,和一个带中性段的四跨锚段关节组成。中性区的距离应保持为35m,两侧过渡区的距离各应保持25m。

知识大全 用C#或JavaScript扩展XSLT

用C#或JavaScript扩展XSLT  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  今天在u

针对Re200c/Re100c电气化接触网设备的特点,中心锚结的安装有何规定?

  中心锚结的位置要使两边接触悬挂的补偿条件基本相同。接触线和承力索的中心锚结辅助绳均不得有断股和接头,两边的长度和张力力求相等,不得松弛。接触线中心锚结所在的跨距内接触线不得有接头和补强,接触线中心

针对Re200c/Re100c电气化接触网设备的特点,中心锚结的安装有何规定?

  中心锚结的位置要使两边接触悬挂的补偿条件基本相同。接触线和承力索的中心锚结辅助绳均不得有断股和接头,两边的长度和张力力求相等,不得松弛。接触线中心锚结所在的跨距内接触线不得有接头和补强,接触线中心

针对Re200c/Re100c电气化接触网设备的特点,腕臂定位时防风拉线的安装有何规定?

  腕臂支持装置的定位,线路区段R≥1200m时,定位管与定位器之间采用φ3.0mm钢线制成的防风拉线连接。防风支持线夹的轴线与定位管成45°,防风拉线与定位点两投影之间的水平距离为500mm。

针对Re200c/Re100c电气化接触网设备的特点,腕臂定位时防风拉线的安装有何规定?

  腕臂支持装置的定位,线路区段R≥1200m时,定位管与定位器之间采用φ3.0mm钢线制成的防风拉线连接。防风支持线夹的轴线与定位管成45°,防风拉线与定位点两投影之间的水平距离为500mm。

可以用循环指令扩展定时器的定时时间吗?

  PLC是用系统程序实现定时器的定时功能的。在执行定时器指令时,不是等到定时时间到后再往下执行,因此在循环指令的循环体中加入定时器指令,不能扩展定时器的定时时间。

可以用循环指令扩展定时器的定时时间吗?

  PLC是用系统程序实现定时器的定时功能的。在执行定时器指令时,不是等到定时时间到后再往下执行,因此在循环指令的循环体中加入定时器指令,不能扩展定时器的定时时间。

知识大全 用JAI扩展Java的图像处理能力

用JAI扩展Java的图像处理能力  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!lishixinz

针对Re200c/Re100c电气化接触网设备的特点,标准线岔交叉吊弦的技术标准有何规定?

  两交叉吊弦的技术标准:  1)正线接触线的交叉吊弦,接触线上吊弦固定点的投影与侧线线路中心间距为550~600mm。  2)侧线接触线的交叉吊弦,接触线上吊弦固定点的投影与正线线路中心间距为550