JAVA网站制作之File存进到数据库的举措
关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。数据|数据库 当必要把文件存进到服务器真个数据库中,有四种体例可行:1.servlet/jsp+fileupload/smartupload/本人编一个完成承受文件的javaBean.然后挪用相干的程序,把文件存进数据库中。这也是一般的选择。
2.经由过程数据库的存储历程,间接用sql来操纵能够完成,必要会见文件体系。见全文搜刮中向数据库中存进文件的举措。
3.rmi客户/服务器的体例,因为rmi对完成的接口的参数请求是可串行化的,因而能够选用byte[]或fileupload组件中fileItem对象等,因为在rmi中一般利用两边协商好的对象范例,因而在文件传输,可选用界说一承继seriable接口的类对象,包括文件和文件的相干信息。
4.固然EJB是不克不及会见文件体系,并且请求完成的接口的参数请求是可串行化的,还必需是EJB标准下的数据范例(基础的数据范例)因而不克不及选用java.io包下的类(非串行化)和像fileupload组件等以外的类对象(串行化)作为参数。可是在EJB外部是可使用java.io包中的对象。经由过程EJB来完成把文件存进到数据库的办法:
1).用byte[]作为远程接口的参数范例.
2).用file,fileinputstream,datoutputstream来完成文件对象,
3).然后以文件对象流的情势存进数据库中。
在EJB中的完成办法:
publicStringupFile(byte[]fileByte,java.lang.StringfileName){
try{
System.out.println("fdjkj");
Filef=newFile(fileName);
DataOutputStreamfileout=newDataOutputStream(newFileOutputStream(f));
FileInputStreamfi=newFileInputStream(f);
intli=fi.read(fileByte,0,fileByte.length-1);
fileout.write(fileByte,0,fileByte.length-1);//这两句不克不及倒置,下面根据是暗示入手下手向fileInputStream中读进数据,这一句才是把byte[]中的数据读进到流中
System.out.println("fdjkj");
StringdName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
StringconURL="jdbc:microsoft:sqlserver://159.164.176.116:1038;DatabaseName=DigitalLab";
//Filef1=newFile(""+fds.get("fileID"));
Connectioncon=null;
Statementstm=null;
ResultSetrs=null;
PreparedStatementps=null;
Class.forName(dName).newInstance();System.out.println("fdjkj");
con=DriverManager.getConnection(conURL,"gaolong1","831001");System.out.println("fdjkj");
Stringsql="insertintotestEJBFilevalues("+fileName+",?,"+(fileByte.length-1)+")";
//Stringsel="select*fromxinxiwherechanghao=215;";
//Stringsel="select*fromcustomwhereyuming=212;";
ps=con.prepareStatement(sql);System.out.println("fdsssssjkj");
ps.setBinaryStream(1,fi,(int)fileByte.length-1);
//ps.setBytes(1,b);
ps.executeUpdate();System.out.println("fdjkj");
ps.close();
return"ok";
}catch(Exceptione){
e.printStackTrace();
return"false";
}
}
}
挪用EJB的客户端程序:
packagecom.J2EE.first.interfaces;
importjavax.naming.Context;
importjavax.naming.InitialContext;
importjavax.rmi.PortableRemoteObject;
importjava.util.Properties;
importjava.io.*;
/**
*@authorgaolong1
*
*TODO要变动今生成的范例正文的模板,请转至
*窗口-首选项-Java-代码款式-代码模板
*/
publicclassEJBClient{
publicstaticvoidmain(String[]args){
try{
Stringurl="t3://59.64.76.16:7001";
Propertiesprop=newProperties();
prop.put(Context.PROVIDER_URL,url);
prop.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
Contextctx=newInitialContext(prop);
Objectobj=ctx.lookup("ejb/com/J2EE/first/ejb/HelloHome");
/*Propertiespr=System.getProperties();
Contextctx=newInitialContext(pr);
Objectobj=ctx.lookup("ejb/com/fristEJB/Trader/ejb/TraderHome");
*/
HelloHometrH=(HelloHome)PortableRemoteObject.narrow(obj,HelloHome.class);
Hellotr=trH.create();
System.out.println(tr.hello());
Filef=newFile("12.xml");
BufferedReaderbr=newBufferedReader(newInputStreamReader(newFileInputStream(f),"UTF-8"));
Stringstr="";
Stringstrup="";
while((str=br.readLine())!=null)
strup+=str;
System.out.println(strup);
byte[]bt=strup.getBytes();//把文件酿成byte数组
System.out.println(bt);
Stringtest=tr.upFile(bt,"12.xml");//挪用EJB程序
System.out.println(test);
tr.remove();
}catch(Exceptione){
e.printStackTrace();
}
}
}
在EJB中完成文件存进数据库的办法,就是经由过程把string或byte[]酿成文件对象,然后存进到数据库中,但在操纵的过程当中要注重EJB不克不及操纵文件体系,同时也不由于这而以为在EJB中不克不及操纵文件流。操纵文件流大概功能有所下落。利用J2EE组件时要严厉注重标准,在标准内完成必要的功效。
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的 是一种使用者不需花费很多时间学习的语言 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 Java是一种计算机编程语言,拥有跨平台、面向对java J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
页:
[1]