`

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();请问这一行是什么意思啊

相关推荐

    手把手教你Struts2.0

    Struts2.0 是一个基于 Model-View-Controller (MVC) 设计模式的Java Web框架,它旨在简化Web应用的开发。Struts 2.0是在Struts 1.x的基础上进行了改进,以解决原有版本的一些局限性,如代码量过多、单元测试困难等...

    学习Struts 2.0系列

    11. **文件上传和下载**:实现在Struts 2.0中处理文件上传和下载,包括文件大小限制、文件类型的检查等。 12. **插件和最佳实践**:介绍Struts 2.0的一些实用插件,如Tiles插件,以及开发中的最佳实践和注意事项。 ...

    struts2.0详细教程

    作为一款J2EE(Java 2 Enterprise Edition)平台上的开源框架,Struts2.0能够帮助开发者构建高效、可维护的Web应用程序。 首先,我们来了解Struts2.0的核心组件: 1. **Action类**:它是业务逻辑的载体,负责处理...

    Struts2.0配置说明

    - **commons-fileupload-1.2.1.jar**:该库用于支持文件上传功能。 - **commons-io-1.3.2.jar**:提供了处理输入输出流的工具类。 - **freemarker-2.3.12.jar**:模板引擎库,用于动态页面的生成。 - **ognl-2.6.11....

    struts2.0快速入门动画教程+实例源码

    然而,这只是Struts2.0的冰山一角,深入学习还需要掌握更多的概念,如国际化的处理、文件上传下载、异常处理、自定义拦截器等。提供的动画教程和实例源码会进一步辅助你深化理解,通过实战提升技能。在学习过程中,...

    struts2.0包

    Struts2.0是一款强大的Java Web开发框架,它在MVC(Model-View-Controller)设计模式的基础上,为开发者提供了一种高效、灵活且可扩展的解决方案,用于构建基于J2EE的应用程序。Struts2是Apache软件基金会的Jakarta...

    struts2开发教程

    ### Struts2开发教程:构建高效MVC框架应用 #### 引言 Struts2是Apache Struts框架的...在后续的学习和实践中,开发者可以进一步探索Struts2的高级特性,如拦截器、类型转换、文件上传等,以提升应用的功能性和性能。

    struts2.1.6jar包

    相比于它的早期版本如Struts2.0.x,Struts2.1.6引入了若干改进和新特性,以提升性能和开发者体验。 首先,Struts2.1.6提供了更强大的动作(Action)支持,使得业务逻辑的处理更加灵活。它引入了拦截器(Interceptor...

    struts2学习笔记.doc

    - **上传原理**:Struts2利用MultipartResolver实现文件上传功能。 - **配置与实现**: - 在`struts.xml`中配置上传相关的参数。 - 实现Action类中文件上传的具体逻辑。 **5.2 文件下载** - **下载原理**:Struts...

    Struts 2 自学入门教程

    Struts 2是一款基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它简化了构建可维护...配合提供的教程资源文件"struts2.0入门教程.chm",你可以深入学习并实践这些知识点,从而更好地掌握Struts 2框架。

    基于web2.0的社交网站

    【标题】"基于Web2.0的社交网站"是指运用Web2.0技术构建的社交网络平台,这类网站强调用户参与、互动与分享,旨在增强网络社区内的沟通和信息交流。Web2.0的核心概念包括用户生成内容(User-Generated Content)、富...

    搭建EXTJS和STRUTS2框架(ext和struts2简单实例)

    - `&lt;constant name="struts.multipart.maxSize" value="1000000000"/&gt;`:设置文件上传的最大大小为1GB。 - `&lt;package name="teaweb" extends="json-default" namespace="/"&gt;`:定义了一个名为`teaweb`的包,并继承...

    jsp2.0 应用教程 光盘

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

    Struts2.1权威指南——基于WebWork核心的MVC开发.pdf

    - **版本更新**:本书介绍的是最新的Struts2.1版本,相比于2007年发布的Struts2.0,Struts2.1做了较多改进与新增功能。 - **新特性**: - REST支持:简化了基于RESTful Web服务的开发过程。 - Convention插件:...

    s t r u t s 2 总 结

    Struts2是一个基于MVC设计模式的开源Java Web应用框架,它继承了Struts1的一些特性并在此基础上进行了改进和扩展,支持拦截器、类型转换、文件上传等功能。Struts2通过一系列的配置文件(如`struts.xml`)来定义请求...

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

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

Global site tag (gtag.js) - Google Analytics