`

j2ee Struts2.0 下的文件上传一些东西

阅读更多

今天做的时候遇到了一个问题,如何从一个 .txt文本 中读取每一行 然后去数据库中进行比对。
刚开始 说真的脑子很乱,就是不知从哪下手。如何读取.txt特别是获取每一行 然后去数据库进行比对。由于没接触过,心里不禁的哆嗦起来,但是我知道自己能解决。下面讲一下我的解决

过程:
首先:我的项目是由SSH 前台的框架是Struts2.0
刚开始的时候我从网上查找一些关于Struts的资料。很的多网友提到了actionForm去做。
说真的可能我是没有很好的理解Struts1.x与Struts2.x之间的区别,自己对于Struts可以说也是刚接触,很多东西还是处于入门级别。
捕获输入(摘):
Struts1 使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经 常创建多余的类捕获输入。动态Bean(DynaBeans)可以作

为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存 在的JavaBean(仍然会导致有冗余的javabean)。
Struts 2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过 web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种 ModelDriven 特性简化了taglib对POJO输入对象的引用。
可以看出Struts2.0不需要actionForm 并可以直接把页面的属性值传到对应的action中,当然传的值和属性要匹对。这样并可以了!
例如的我的jsp页面:violateRecord.jsp
<div id="main">
<s:form id="uploadform" name="uploadform" namespace="/membership" action="fileUpload" enctype="multipart/form-data" method="post">
选择要上传的文件 <input type="file" name="myFile" id="myFile" /> <input type="submit" value="上传" /> //enctype="multipart/form-data" 必不可少,少了会报错
</s:form>
</div>
我的action类的:FileUploadAction.java
部分代码:
private File myFile;
public String execute() {
InputStream in=null;
try{
if(myFile!=null){
in = new FileInputStream(myFile);//myFile的属性对应了violateRecord.jsp控件的

// <input type="file" name="myFile" id="myFile" />
String memberId=null;
ViolateRecordDto dto=new ViolateRecordDto();
BufferedReader br=new BufferedReader(new InputStreamReader(in)); //把上传的文件流转化成BufferedReader用来读取文本
String c=br.readLine(); //BufferedReader 类 BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合, BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取
//while循环读取每一行文本
while(c!=null){
memberId=carService.IsExistCarNo(c);
if( memberId!=null){
dto.setImportDate(new Date());
dto.setCarNo(c);
dto.setMemberId(Integer.valueOf(memberId));
violateRecordService.addViolateRecord(dto);
}
c = br.readLine();
}

}
setGoingToURL("/membership/violateRecord.do");//这是我提交完后页面跳转的路径 相应的配置在struts2.0也要配置

}catch(Exception e){
e.printStackTrace();
}finally{

}
return SUCCESS;
}
配置文件省略。。其实现在看起来 大体上就这样,也不是很难,就像有时候人就困在某地方,急了乱了,冷静下来,会发现事情没有自己想象的那么难。

下面是在对应的Struts2.0中实现文件上传
public String execute() {
String error="";
String msg = "";
int height=0,width=0;
try{
imageFileName = new Date().getTime() + getExtention(fileName).toLowerCase();//先从getExtention()文件的后扩展名 比如:.txt 新的文件名是以日期为开头的名字
String result ="";

File imageFile = new File(ServletActionContext.getServletContext().getRealPath( "/upload/temp" ) + "/" + imageFileName);//我的理解是初始化一个要保存的文件的路径 属性为 File
//同时注意 在struts的propertites中要设置struts.multipart.saveDir=/temp 不然会找到上面的路径的

copy(myFile, imageFile);//下面是把myFile文件流真正的转化成原本的属性 .txt文本(记住myFile的value值是.temp的结尾说明他不是.txt需要转化成)

}catch(Exception e){
e.printStackTrace();
}finally{

try{
response.setContentType("text/html");
response.getWriter().flush();
//response.getWriter().print(imageFileName);
response.getWriter().write("{ error:'" + error + "',"
+"height:'" + String.valueOf(height) + "',"
+"width:'" + String.valueOf(width) + "',"
+"fileName:'" + imageFileName + "'}");
response.getWriter().close();
}catch(Exception e){e.printStackTrace();}
}
return Action.SUCCESS;
}

private static String getExtention(String fileName) {
int pos = fileName.lastIndexOf( "." );
return fileName.substring(pos);
}

private static void copy(File src, File dst) {
try {
InputStream in = null ;
OutputStream out = null ;
try {
in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
byte [] buffer = new byte [BUFFER_SIZE];
while (in.read(buffer) > 0 ) {
out.write(buffer);//把in的流的内容相当于写进了out中 即要保存的相应的路径下东东
}
}catch(Exception e) {
throw e;
}finally {
if ( null != in) {
in.close();
}
if ( null != out) {
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

分享到:
评论
1 楼 nhm_lxy 2013-09-09  
ViolateRecordDto dto=new ViolateRecordDto();请问这一行是什么意思啊

相关推荐

    Struts 2 自学入门教程

    Struts 2.0的标志(Tag)介绍; Struts 2.0的Action讲解; Struts 2.0的国际化; 转换器; 转换与校验; 拦截器; 在Struts 2中实现文件上传;等等.

    jsp2.0 应用教程 光盘

    好像交大的网址打不开传个!(1)本书和随书附送的光盘中涉及的文档、软件、图片和代码等项目仅供教学使用。...文件上传: http://www.servlets.com/cos/index.html Google搜索: http://www.google.com/apis/

    基于J2EE框架的个人博客系统项目毕业设计论...

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    java视频教程Day01 免费

    J2SE部分 1. Java Getting Started (Java课程简介及开篇) 2. Identifier,keyword and types (标示符, 关键字和数据类型) 3. Expression and Flow Control (表达式和流控制) ...先上传第一课,后续会陆续跟新

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java开源包1

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包11

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包2

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包3

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包6

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包5

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包10

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包4

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包8

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包7

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包9

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

    java开源包101

    Java文件上传组件 COS FAT文件系统读写类库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的...

Global site tag (gtag.js) - Google Analytics