如何从java 内存数据库库中获取到java 内存数据库生成饼状图?(Java web)

问一下,我在javaEE项目中获取了数据库的数据,怎样输出到jsp?_java吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:284,784贴子:
问一下,我在javaEE项目中获取了数据库的数据,怎样输出到jsp?收藏
Session se=HibernateSessionFactory.getSession();
Query query=se.createQuery(str);List list=query.list();我这样已经获取到了数据库中的数据了,有若干个,我应该怎样输出到jsp呢?如果只有一个数据的话我就可以想下面这样输出到jsp页面中。Login log=(Login)list.get(0);request.put("name",log.getName());但是如果我有多几个数据的话,我应该怎样输出呢?在jsp页面中应该怎样读取呢?希望高手指教
没人吗??求高手啊
request.put("list",list); 也是这样穿到jsp页面啊如果你用的是struts1。x 的话
就用logic标签遍历数组如果你用的是struts2。x的话 可以用&s:iteror&迭代遍历数组·百度上资料很多。楼主好好百度吧。很容易的··
好像是 rs.next()
保存到request或者session里直接在jsp页面里就能取出来
可以用tesponse输出到客户端,然后用js接收
数据库把信息封装到实体类中,然后在JSP页面获取实体类中成员变量
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或java web中怎么实现柱形图、饼状图等数据图?_百度知道
java web中怎么实现柱形图、饼状图等数据图?
我有更好的答案
首先你先下一个FusionCharts,这是一个flash插件(自带很多图形)。然后按照这个插件需求的xml格式,你可以通过dom4j来生成xml,然后再嵌入flash插件的页面取xml里的值。
可以通过EXTJS,里面有控件,数据你可以从JSP后台获取,以前在存量房评估系统中就是使用这个绘制的,还不错。。
搜一下JFreeChat库包,是个非常好的做报表的组件
现在一般用的多的是开源框架jfreechart
其他类似问题
为您推荐:
柱形图的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁1240人阅读
&&&&&&&&&& 我们以前编写的关于访问数据库的操作都是每进行一项操作就自己创建一次连接,当操作完毕后还得自己将连接关闭这样做虽然也能解决对数据库进行访问的操作,但是,如果每个操作都这样就显得麻烦了,尤其是在服务器端,这样会大大降低访问效率。数据库连接池的出现确很好的解决了这个问题。下面,我们来看一下具体的内容。
&& 使用数据库连接池优化程序性能
&应用程序直接获取链接的缺点
缺点:用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、宕机。
而使用连接池:
在使用连接之前就创建多个连接对象以供不同的用户调用,当用户访问结束后连接对象又被放回到连接池中。这样就优化了程序的性能。
编写数据库连接池
& &&编写连接池需实现javax.sql.DataSource接口。DataSource接口中定义了两个重载的getConnection方法:
Connection getConnection()
Connection getConnection(String&username,String&password)
实现DataSource接口,并实现连接池功能的步骤:
在DataSource构造函数中批量创建与数据库的连接,并把创建的连接加入LinkedList对象中。
实现getConnection方法,让getConnection方法每次调用时,从LinkedList中取一个Connection返回给用户。
当用户使用完Connection,调用Connection.close()方法时,Collection对象应保证将自己返回到LinkedList中,而不要把conn还给数据库。
Collection保证将自己返回到LinkedList中是此处编程的难点。
数据库连接池核心代码
&&&&&& 使用动态代理技术构建连接池中的connection
proxyConn =(Connection) Proxy.newProxyInstance(this.getClass()
.getClassLoader(),conn.getClass().getInterfaces(),
newInvocationHandler() {
//此处为内部类,当close方法被调用时将conn还回池中,其它方法直接执行
public Objectinvoke(Object proxy, Method method,
Object[]args) throws Throwable {
if(method.getName().equals(&close&)) {
pool.addLast(conn);
returnmethod.invoke(conn, args);
&& 明确两个概念:
o&&&&&&&&代理对象存在的价值:主要用于拦截对真实业务对象的访问。
o&&&&&&&&代理对象有什么方法?
如何生成代理对象?
Java提供了一个Proxy类,调用它的newInstance方法可以生成某个对象的代理对象,使用该方法生成代理对象时,需要三个参数:
o&&&&&&&&&&&&&&&&&&&&&&&&&1.生成代理对象使用哪个类装载器
o&&&&&&&&&&&&&&&&&&&&&&&&&2.生成哪个对象的代理对象,通过接口指定
o&&&&&&&&&&&&&&&&&&&&&&&&&3.生成的代理对象的方法里干什么事,由开发人员编写handler接口的实现来指定。
初学者必须理解,或不理解必须记住的2件事情:
o&&&&&&&&&&&&&&&&&&&&&&&&&Proxy类负责创建代理对象时,如果指定了handler(处理器),那么不管用户调用代理对象的什么方法,该方法都是调用处理器的invoke方法。
o&&&&&&&&&&&&&&&&&&&&&&&&&由于invoke方法被调用需要三个参数:代理对象、方法、方法的参数,因此不管代理对象哪个方法调用处理器的invoke方法,都必须把自己所在的对象、自己(调用invoke方法的方法)、方法的参数传递进来。
开源数据库连接池
&& 现在很多WEB服务器(Weblogic,WebSphere, Tomcat)都提供了DataSource的实现,即连接池的实现。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现。
也有一些开源组织提供了数据源的独立实现:
o&&&&&&&&DBCP 数据库连接池
o&&&&&&&&C3P0 数据库连接池
实际应用时不需要编写连接数据库代码,直接从数据源获得数据库的连接。程序员编程时也应尽量使用这些数据源的实现,以提升程序的数据库访问性能。
DBCP数据源
DBCP 是 Apache软件基金组织下的开源连接池实现,使用DBCP数据源,应用程序应在系统中增加如下两个 jar 文件:
o&&&&&&&&Commons-dbcp.jar:连接池的实现
o&&&&&&&&Commons-pool.jar:连接池实现的依赖库
Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。
使用DBCP示例代码:
InputStreamin = JdbcUtil.class.getClassLoader().
getResourceAsStream(&dbcpconfig.properties&);
Propertiesprop = new Properties();
prop.load(in);
BasicDataSourceFactoryfactory = new BasicDataSourceFactory();
dataSource = factory.createDataSource(prop);
C3P0 数据源
&使用DBCP连接池:
publicclass ApDBCP {
privatestatic DataS
InputStream is = ApDBCP.class.getClassLoader().getResourceAsStream(&dbcpconfig.properties&);
Properties ps = new Properties();
ps.load(is);
} catch(IOException e) {
thrownew RuntimeException(e);
ds = BasicDataSourceFactory.createDataSource(ps);
} catch(Exception e) {
thrownew RuntimeException(e);
publicstatic ConnectiongetConnection() {
ds.getConnection();
} catch(SQLException e) {
thrownew RuntimeException(e);
使用C3P0连接池:
publicclass C3p0 {
privatestatic ComboPooledDataS
cpds = new ComboPooledDataSource(&mysql&);
cpds.setDriverClass(&com.mysql.jdbc.Driver&);
cpds.setJdbcUrl(&jdbc:mysql://localhost:3306/user& );
cpds.setUser(&root&);
cpds.setPassword(&root&);
cpds.setMaxIdleTime(6000);
cpds.setMaxPoolSize(40);
cpds.setMinPoolSize(5);
cpds.setInitialPoolSize(10);
cpds.setMaxStatementsPerConnection(20);
} catch(PropertyVetoException e) {
e.printStackTrace();
publicstatic Connection getConnection() throwsSQLException{
cpds.getConnection();
关于数据库连接池的东西今天就先介绍到这里吧!
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:171438次
积分:3132
积分:3132
排名:第5358名
原创:144篇
评论:14条
(1)(5)(2)(3)(31)(61)(29)(10)(2)想在页面上获取数据库中的信息。Java web_百度知道
想在页面上获取数据库中的信息。Java web
如题,我想在JSP页面上写一个table,里面显示数据库中的某个表的信息,例如,我想显示表名为books的表里面的数据,该表有book_id、book_name、book_tag、book_price这几个字段。求大神赐教。(PS,暂时没有学框架)
提问者采纳
这是数据库数据这是页面展示楼主既然没有接触过什么框架,这里都是最基本的写法,使用的是servlet和jdbc来实现。页面也是jsp的基本语法及el表达式,一看便懂项目已经添加到附件,楼主可直接下载
我想问一下,我在servlet处理了登录验证,然后想要判断完直接登录成功后跳转到的页面就加载了这个table,那加载之前的预处理是要放在做登录判断的servlet里面么
可以的,很多项目都是这么做的
提问者评价
来自团队:
其他类似问题
为您推荐:
java的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用jsp+servlet+javabean上传图片到数据库中,不是存路径
用jsp+servlet+javabean上传图片到数据库中,不是存路径
把图片转换成二进制,然后储存到数据库中,当然也包括读取和显示图片的功能,不过在上传的功能不能写成insert应该是用update的,毕竟以后还是要换图片的。请问谁有这方面的例子或者代码,请发给我一下,网上有很多,我也都看过了,他们都是写在页面里的,当然最好要包括图片过滤,以及限制大小等等,没有也没关系,如果发给我可以用,或不需要我改动太多代码的话我追分200
jsp - 上传图片到数据库中
方法如下:
第一步:建立数据库 create table test_img(id number(4),name varchar(20),img long raw); 第二步:(NewImg.html) &html&&head&&title&添加图片&/title&&/head& &body& 添加图片&br& &form method="post" action="insertNews.jsp"& 图像ID:&input name="id" size="10"& &br& 选择图像:&input type="file" name="image"& &br& &input type="submit" value="上传" name="submit" size="25"& &input type="reset" value="清除" name="clear" size="25"& &br& &/form& &/body&&/html& 第三步:插入数据库(InsertImg.jsp) &%@ page language="java"%& &%@ page contentType="text/charset=gb2312" %& &%@ page import="java.util.*" %& &%@ page import="java.sql.*"%& &%@ page import="java.text.*"%& &%@ page import="java.io.*"%& &% Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //com.microsoft.jdbc.sqlserver.SQLserveDriverString url="jdbc:oracle:thin:@lubin:1521:b2bdb";
//jdbc:microsoft:sqlserver://127.0.0.1:1433;
jdbc:microsoft.sqlserver://127.0.0.1:1433Connection con=DriverManager.getConnection(url,"demo","demo"); //插入数据库 String sql="insert into test_img values (?,?,?)"; //获取传值ID String id=request.getParameter("id"); //获取image的路径 String kk=request.getParameter("image"); //转换成file格式 File filename=new File(kk); //将文件的长度读出,并转换成Long型 long l1=filename.length(); int l2=(int)l1; //以流的格式赋值 FileInputStream fis=new FileInputStream(filename); PreparedStatement ps =con.prepareStatement(sql); ps.setString(1,id); ps.setString(2,filename.getName()); ps.setBinaryStream(3,fis,l2); //ps.setBinaryStream(3,fis,fis.available()); ps.executeUpdate(); //ps.execute(); ps.close(); fis.close(); out.println("ok!!!"); %& 第四步:显示图片(ShowImg.jsp) &%@ page language="java" import="java.sql.*"%& &%@ page import="java.io.*"%& &%@ page contentType="text/charset=gb2312"%& &% Class.forName("oracle.jdbc.driver.OracleDriver"); String url="jdbc:oracle:thin:@lubin:1521:b2bdb"; String image_id = (String) request.getParameter("ID"); Connection con=DriverManager.getConnection(url,"demo","demo"); PreparedStatement sql=con.prepareStatement("select * from test_img WHERE id = " + image_id); ResultSet rs = sql.executeQuery(); rs.next(); //输入img字段内容到in InputStream in = rs.getBinaryStream("img"); //以下可是任何处理,比如向页面输出: response.reset(); response.setContentType("image/jpeg"); byte[] b = new byte[1024];
while((len=in.read(b)) &0) response.getOutputStream().write(b,0,len); in.close(); rs.close(); %&
用比较简单的方法来说明javabean上传图片到数据库的方法,将文件写入到数据库和从数据库读取显示。在JavaBean中我尽量用了注释来让大家理解。该JavaBean在Win2000,Tomcat和MySql环境下调试和调用通过。 完成该代码的调用必须先建立picture数据库和picture表,如下: cre create table picture ( id int not null auto_increment, picture longblob, primary key(id) ); 图片上传到数据库JavaBean的代码如下: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% UploadToMySql.java %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% import java.sql.*; import java.io.*; import java.lang.*; import java.awt.*; public class UploadToMySql { String strDriver="org.gjt.mm.mysql.Driver"; String strConn="jdbc:mysql://localhost/picture?user=root&password="; //使用时请根据数据库的设 //置做相应的修改。picture为数据库名称。 private Connection conn = private Statement stmt = ResultSet rs = public UploadToMySql() { //连接MySql_jdbc驱动程序 try { Class.forName(strDriver).newInstance(); conn = DriverManager.getConnection(strConn); } catch (Exception E) { System.err.println("不能连接MySql数据库!"); } } //图片写入数据库函数 //sql 为数据库的SQL语句 //filename 为包含完整路径的文件名 //返回结果为字符型,True为成功,False为失败 public boolean WriteInMySql(String sql, String filename) { boolean writeReturn = try { //定义文件流对象fileStream FileInputStream fileInStream = PreparedS int bytes = 0; insert = conn.prepareStatement(sql); if(filename != null && !filename.equals("") && sql != null && !sql.equals("")) { try { fileInStream= new FileInputStream(filename); //available()方法返回int型,就是能够被读出的文件字节数。 bytes = fileInStream.available(); //在preparedStatement对象执行之前,参数?必须被设置好,否则报错。 //该任务由方法setXXX完成。XXX是参数适当的类型,根据数据库定义的字段类型来设置。 //参数的位置由SQl语句的序叙决定。用setBinaryStream来设置文件流的参数。 insert.setBinaryStream(1,fileInStream,bytes); insert.executeUpdate(); writeReturn = } catch(Exception e) { System.err.println("数据插入失败: " + e.toString()); } } try { insert.close(); fileInStream.close(); } catch(Exception e) { System.err.println("不能关闭文件流和数据库对象: " + e.toString()); } } catch(Exception e) { System.err.println("数据库连接错误: " + e.toString()); } return writeR } //图片从数据库读出函数 //sql 为数据库的SQL语句 //返回 暂时将图片写成文件形式,文件名为c:/temppic.bmp public String ReadFromMySql(String sql) { String filepath = "C:/temppic.bmp"; PreparedS S FileOutputStream fileOutStream = int bytes = 0; try { query = conn.createStatement(); ResultSet rs = query.executeQuery(sql); if(rs.next()) { //读出流用getBinaryStream()方法。 InputStream inStream = rs.getBinaryStream(1); //图片的有效长度。 int size = inStream.available(); byte[] pictureData = new byte[size]; //read(byte[] b):读取输入流的数据到指定的数组。只是文件的有效部分。 inStream.read(pictureData); try { //将图片文件输出到指定目录。 fileOutStream = new FileOutputStream(filepath); //写入数据。 fileOutStream.write(pictureData); } catch(Exception e) { System.err.println("图片文件读出错误: " + e.toString()); } } } catch(Exception e) { System.err.println("数据库操作失败: " + e.toString()); } try { fileOutStream.close(); } catch(Exception e) { System.err.println("文件输出流关闭失败: " + e.toString()); }
common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件
下面先介绍上传文件到服务器(多文件上传):
javax.servlet.*;
javax.servlet.http.*;
java.io.*;
java.util.*;
java.util.regex.*;
mons.fileupload.*;
HttpServlet
CONTENT_TYPE
charset=GB2312";
doPost(HttpServletRequest
HttpServletResponse
ServletException,
IOException
response.setContentType(CONTENT_TYPE);
PrintWriter
out=response.getWriter();
DiskFileUpload
DiskFileUpload();
设置允许用户上传文件大小,单位:字节,这里设为2m
fu.setSizeMax(2*);
设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath("c:\\windows\\temp");
//开始读取上传信息
fu.parseRequest(request);
依次处理每个上传的文件
fileItems.iterator();
//正则匹配,过滤路径取文件名
regExp=".+\\\\(.+)$";
//过滤掉的文件类型
errorType={".exe",".com",".cgi",".asp"};
pile(regExp);
(iter.hasNext())
(FileItem)iter.next();
//忽略其他不是文件域的所有表单信息
(!item.isFormField())
item.getName();
item.getSize();
if((name==null||name.equals(""))
p.matcher(name);
temp=0;temp&errorType.temp++){
(m.group(1).endsWith(errorType[temp])){
IOException(name+":
//保存上传的文件到指定的目录
//在下文中上传文件至数据库时,将对这里改写
item.write(new
File("d:\\"
m.group(1)));
out.print(name+"&&"+size+"&br&");
catch(Exception
out.println(e);
IOException("fail
(IOException
out.println(e);
(FileUploadException
out.println(e);
下面是个html的上传页面:
&h1&文件上传演示&/h1&
name="uploadform"
method="POST"
action="/upload"
ENCTYPE="multipart/form-data"&
border="1"
width="450"
cellpadding="4"
cellspacing="2"
bordercolor="#9BD7FF"&
width="100%"
colspan="2"&
文件1:&input
type="file"&
&/td&&/tr&
width="100%"
colspan="2"&
文件2:&input
type="file"&
&/td&&/tr&
width="100%"
colspan="2"&
文件3:&input
type="file"&
&/td&&/tr&
&br/&&br/&
align="center"&&input
name="upload"
type="submit"
value="开始上传"/&&/td&&/tr&
现在介绍上传文件到服务器,下面只写出相关代码:
以sql2000为例,表结构如下:
字段名:name
数据库插入代码为:PreparedStatement
pstmt=conn.prepareStatement("insert
values(?,?)");
代码如下:
。。。。。。
//item.write(new
File("d:\\"
m.group(1)));//这段代码如果不去掉,将一同写入到服务器中
byteread=0;
InputStream
inStream=item.getInputStream();
//读取输入流,也就是上传的文件内容
pstmt.setString(1,m.group(1));
pstmt.setBinaryStream(2,inStream,(int)size);
pstmt.executeUpdate();
inStream.close();
out.println(name+"&&"+size+"&br&");
这样就实现了上传文件至数据库
==========================================================================下面代码是在ORACRE中存储任何文件!!
字段类型为long
row,看你是否可以用上!!!
其中中文路径的问题已经解决!
//加入相应的包
javax.servlet.*;
javax.servlet.http.*;
java.io.*;
java.util.*;
java.sql.*;
java.sql.PreparedS
java.sql.C
HttpServlet
CONTENT_TYPE
charset=GBK";
//Initialize
ServletException
doPost(HttpServletRequest
HttpServletResponse
ServletException,
IOException
response.setContentType(CONTENT_TYPE);
PrintWriter
response.getWriter();
//转换字符串的编码格式
request.setCharacterEncoding("GBK");
//conn.Getconnect().
//从上一页面获取相应插入的信息
XMDM=request.getParameter("XMDM");
ZLLX=request.getParameter("ZLLX");
SBRQ=request.getParameter("SBRQ");
ZLNR=request.getParameter("ZLNR");
//将得到的文件路径转换成为相应的文件格式!
java.io.File
java.io.File(ZLNR);
//取得文件的长度!!
l1=file.length();
s=(int)l1;
ZLCD=String.valueOf(s);
//取得文件名及后缀!!
ZLHZ=file.getName()
//将文件转换成为数据流!!
FileInputStream
FileInputStream(ZLNR);
sql="insert
values(?,?)";
sql="insert
GZ_XGZL(XMDM,ZLLX,ZLMC,SBRQ,ZLNR,ZLCD)
values(?,?,?,?,?,?)";
//向数据库读流!!连接数据库插入数据。
PreparedStatement
conn.Getconnect().prepareStatement(sql);
pstmt.setString(1,XMDM);
pstmt.setString(2,ZLLX);
pstmt.setString(3,ZLHZ);
pstmt.setString(4,SBRQ);
pstmt.setBinaryStream(5,str,s);
pstmt.setString(6,ZLCD);
pstmt.execute();
(SQLException
response.sendRedirect("update.jsp");
你这是复制别人的啊
%@ page language="java"%& &%@ page contentType="text/charset=gb2312" %& &%@ page import="java.util.*" %& &%@ page import="java.sql.*"%& &%@ page import="java.text.*"%& &%@ page import="java.io.*"%& &% Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); //com.microsoft.jdbc.sqlserver.SQLserveDriverString url="jdbc:oracle:thin:@lubin:1521:b2bdb";
//jdbc:microsoft:sqlserver://127.0.0.1:1433;
jdbc:microsoft.sqlserver://127.0.0.1:1433Connection con=DriverManager.getConnection(url,"demo","demo");
String sql="insert into test_img values (?,?,?)"; String id=request.getParameter("id"); String kk=request.getParameter("image"); File filename=new File(kk); long l1=filename.length(); int l2=(int)l1; FileInputStream fis=new FileInputStream(filename); PreparedStatement ps =con.prepareStatement(sql); ps.setString(1,id); ps.setString(2,filename.getName()); ps.setBinaryStream(3,fis,l2); //ps.setBinaryStream(3,fis,fis.available()); ps.executeUpdate(); //ps.execute(); ps.close(); fis.close(); out.println("ok!!!"); %& 显示图片&%@ page language="java" import="java.sql.*"%& &%@ page import="java.io.*"%& &%@ page contentType="text/charset=gb2312"%& &% Class.forName("oracle.jdbc.driver.OracleDriver"); String url="jdbc:oracle:thin:@lubin:1521:b2bdb"; String image_id = (String) request.getParameter("ID"); Connection con=DriverManager.getConnection(url,"demo","demo"); PreparedStatement sql=con.prepareStatement("select * from test_img WHERE id = " + image_id); ResultSet rs = sql.executeQuery(); rs.next(); InputStream in = rs.getBinaryStream("img");
response.reset(); response.setContentType("image/jpeg"); byte[] b = new byte[1024];
while((len=in.read(b)) &0) response.getOutputStream().write(b,0,len); in.close(); rs.close();
javabean上传实例
package com.brainysoftware.import javax.servlet.http.HttpServletRimport javax.servlet.ServletInputSimport java.util.Dimport java.util.Himport java.io.PrintWimport java.io.BufferedWimport java.io.FileWimport java.io.IOEpublic class FileUploadBean {private String savePath, filepath, filename, contentTprivate Dpublic String getFilename() {}public String getFilepath() {}public void setSavePath(String savePath) {this.savePath = saveP}public String getContentType() {return contentT}public String getFieldValue(String fieldName) {if (fields == null || fieldName == null)return (String) fields.get(fieldName);}private void setFilename(String s) {if (s==null)int pos = s.indexOf("filename=\"");if (pos != -1) {filepath = s.substring(pos+10, s.length()-1);// Windows浏览器发送完整的文件路径和名字// 但Linux/Unix和Mac浏览器只发送文件名字pos = filepath.lastIndexOf("\\");if (pos != -1)filename = filepath.substring(pos + 1);elsefilename =}}private void setContentType(String s) {if (s==null)int pos = s.indexOf(": ");if (pos != -1)contentType = s.substring(pos+2, s.length());}public void doUpload(HttpServletRequest request) throws IOException {ServletInputStream in = request.getInputStream();byte[] line = new byte[128];int i = in.readLine(line, 0, 128);if (i & 3)int boundaryLength = i - 2;String boundary = new String(line, 0, boundaryLength); //-2丢弃换行字符fields = new Hashtable();while (i != -1) {String newLine = new String(line, 0, i);if (newLine.startsWith("Content-Disposition: form- name=\"")) {if (newLine.indexOf("filename=\"") != -1) {setFilename(new String(line, 0, i-2));if (filename==null)//文件内容i = in.readLine(line, 0, 128);setContentType(new String(line, 0, i-2));i = in.readLine(line, 0, 128);//空行i = in.readLine(line, 0, 128);newLine = new String(line, 0, i);PrintWriter pw = new PrintWriter(new BufferedWriter(newFileWriter((savePath==null? "" : savePath) + filename)));while (i != -1 && !newLine.startsWith(boundary)) {// 文件内容的最后一行包含换行字符// 因此我们必须检查当前行是否是最// 后一行i = in.readLine(line, 0, 128);if ((i==boundaryLength+2 || i==boundaryLength+4)&& (new String(line, 0, i).startsWith(boundary)))pw.print(newLine.substring(0, newLine.length()-2));elsepw.print(newLine);newLine = new String(line, 0, i);}pw.close();}else {// 普通表单输入元素// 获取输入元素名字int pos = newLine.indexOf("name=\"");String fieldName = newLine.substring(pos+6, newLine.length()-3);i = in.readLine(line, 0, 128);i = in.readLine(line, 0, 128);newLine = new String(line, 0, i);StringBuffer fieldValue = new StringBuffer(128);while (i != -1 && !newLine.startsWith(boundary)) {// 最后一行包含换行字符// 因此我们必须检查当前行是否是最后一行i = in.readLine(line, 0, 128);if ((i==boundaryLength+2 || i==boundaryLength+4) && (new String(line, 0, i).startsWith(boundary)))fieldValue.append(newLine.substring(0, newLine.length()-2));elsefieldValue.append(newLine);newLine = new String(line, 0, i);}fields.put(fieldName, fieldValue.toString());}}i = in.readLine(line, 0, 128);}}}
其他回答 (1)
csdn.net 上有封装好的文件上传JAR包
能不能给我链接地址 ?
这不是一个组件么?
相关知识等待您来回答
网页制作领域专家
& &SOGOU - 京ICP证050897号

我要回帖

更多关于 java 内存数据库 的文章

 

随机推荐