社区
Web 开发
帖子详情
谁有用Servlet或JavaBean实现文件上传的源码?
rainbow2k
2002-05-09 05:57:06
多谢了。
...全文
98
2
打赏
收藏
谁有用Servlet或JavaBean实现文件上传的源码?
多谢了。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lianyunzxp
2002-05-09
打赏
举报
回复
Faint.........
怎么乱七八糟的呀
呵呵,自己整理一下了,不好意思
lianyunzxp
2002-05-09
打赏
举报
回复
搜索一下,挺多的
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class UploadFileServlet extends HttpServlet
{
public void doPost(HttpServletRequest req,
HttpServletResponse res)
throws IOException, ServletException{
final int NONE=0;
final int DATAHEADER=1;
final int FILEDATA=2;
final int FIELDDATA=3;
int totalbytes=req.getContentLength();
byte[] b=new byte[totalbytes];
String contentType=req.getContentType();
String fieldname="";
String fieldvalue="";
String filename="";
String boundary="";
String lastboundary="";
int fileSize=0;
Hashtable formfields=new Hashtable();
int pos =contentType.indexOf("boundary=");
String fileID;
if(pos!=-1){
pos+="boundary=".length();
boundary="--"+contentType.substring(pos);
lastboundary=boundary+"--";
}
int state=NONE;
DataInputStream in=new DataInputStream(req.getInputStream());
in.readFully(b);
in.close();
String reqcontent=new String(b);
BufferedReader reqbuf=new BufferedReader(new StringReader(reqcontent));
boolean flag=true;
int i=0;
while(flag==true){
String s=reqbuf.readLine();
if(s==lastboundary||s==null)break;
switch(state){
case NONE:
if(s.startsWith(boundary)){
state=DATAHEADER;
i+=1;
}
case DATAHEADER:
pos=s.indexOf("filename=");
if(pos==-1){
pos=s.indexOf("name=");
pos+="name=".length()+1;
s=s.substring(pos);
int l=s.length();
s=s.substring(0,l-1);
fieldname=s;
state=FIELDDATA;
}
else{
String temp=s;
pos=s.indexOf("filename=");
pos+="filename=".length()+1;
s=s.substring(pos);
int l=s.length();
s=s.substring(0,l-1);
pos=s.lastIndexOf("\\");
s=s.substring(pos+1);
filename=s;
pos=byteIndexOf(b,temp,0);
b=subBytes(b,pos+temp.getBytes().length+2,b.length);
s=reqbuf.readLine();
File f=new File(filename);
DataOutputStream fileout=new DataOutputStream(new FileOutputStream(f));
b=subBytes(b,s.getBytes().length+4,b.length);
pos=byteIndexOf(b,boundary,0);
b=subBytes(b,0,pos-1);
fileout.write(b,0,b.length-1);
fileSize=b.length-1;
state=FILEDATA;
}
break;
case FIELDDATA:
s=reqbuf.readLine();
fieldvalue=s;
formfields.put(fieldname,fieldvalue);
state=NONE;
break;
case FILEDATA:
while((!s.startsWith(boundary))&&(!s.startsWith(lastboundary))){
s=reqbuf.readLine();
if(s.startsWith(boundary)){
state=DATAHEADER;
}
else break;
break;
}
}
}
res.setContentType("text/html;charset=gb2312");
PrintWriter out=res.getWriter();
out.println("<html>");
out.println("<head><title>文件上传结果</title></head>");
out.println("<body>");
out.println("<h1>文件上传结果</h1><hr>");
out.println("ID为"+formfields.get("FileID")+"的文件"+filename+"已经上传!"+"文件长度:"+fileSize+"字节");
out.println("</body>");
out.println("</html>");
}
private static int byteIndexOf(byte[] b,String s,int start)
{
return byteIndexOf(b,s.getBytes(),start);
}
private static int byteIndexOf(byte[] b,byte[] s,int start)
{
int i;
if(s.length==0)
{
return 0;
}
int max=b.length-s.length;
if(max<0)
return -1;
if(start>max)
return -1;
if(start<0)
start=0;
search:
for(i=start;i<=max;i++)
{
if(b[i]==s[0])
{
int k=1;
while(k<s.length)
{
if(b[k+i]!=s[k])
{
continue search;
}
k++;
}
return i;
}
}
return -1;
}
private static byte[] subBytes(byte[] b,int from ,int end)
{
byte[]result=new byte[end-from];
System.arraycopy(b,from,result,0,end-from);
return result;
}
private static String subBytesString(byte[] b,int from, int end)
{
return new String(subBytes(b,from,end));
}
}
【JavaWeb】-简单通讯录管理系统的
实现
-Jsp+
Servlet
+
JavaBean
+Sql Server (附完整
源码
)
点赞评论留邮箱,直接发给你
源码
,不用自己复制!!! 点赞评论留邮箱,直接发给你
源码
,不用自己复制!!! 点赞评论留邮箱,直接发给你
源码
,不用自己复制!!! 运行截图如下 登录页 通讯录首页 添加一名联系人页面 通讯录更改联系人信息页面 通讯录查询页面 项目结构图 获取 数据库连接类: package bean; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLExce.
jsp+
servlet
+
javabean
实现
的简单网上购物车
简单购物车案例(附
源码
) 下面具体流程,很多功能都还未完善,之后会
实现
更多功能,例如分页,付款等 敬请期待 使用jsp的MVC模型开发购物车(jsp+
servlet
+
javabean
) 必须有三层架构思想:web层负责与用户打交道 业务处理层(服务层 service)数据访问层(dao) 1.搭建开发环境 1)导入开发包:jdbc驱动(jstl的jar包)
JSP+
Servlet
+
Javabean
+数据库(JDBC)
实现
MVC模式下的登录注册
目录结构如下图: M:模型层,bean下的所有实体类(User)。 V:视图层,jsp页面(图略)。 C:控制层,controller,主要是一些
servlet
。 其中控制层中,调用service层的业务方法,而业务方法中具体的数据操作则是靠调用dao层的数据库操作方法
实现
。 狭义理解:服务层和数据访问层在大的范围上,属于C:控制层的范畴,但有区别。 【注意事项】本例连接的是oracle数据库,需...
Servlet
+
JavaBean
+MySQL
实现
用户登录认证
开始JaveEE的学习。 课程实验之“
Servlet
+
JavaBean
+MySQL
实现
用户登录认证”。 配置: MyEclipse:2016Stable1.0 Tomcat:7.0.70 MySQL:5.7.15 配置环境有一些要注意的事项: 1.Tomcat解压后的文件夹一般有个Tomcat的文件夹,进去之后有个同名的文件夹,再点进去才是各种文件及文件夹,这样在MyEcli
基于JSP+
Servlet
+
JavaBean
的经典MVC模式
实现
案例
通过以上章节的分析,我们可以看出一个典型的MVC模式在Java Web开发中的应用。
Servlet
作为控制器(Controller),处理业务逻辑和用户请求。
JavaBean
作为模型(Model),封装数据和提供数据访问逻辑。JSP作为视图(View),展示数据和用户界面。这个案例为我们提供了一个清晰的MVC模式
实现
模板,每个组件都有其明确的角色和责任,这有助于我们更好地组织和维护代码,提高开发效率。
Web 开发
81,108
社区成员
341,721
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章