struts和servlet上传文件用法

Servlet:

首先说一下servlet上传文件,由于大家对这个相对熟悉一点,所以这个就简要说明一下好了,有什么疑问可以参考之前实验室的代码。

Servlet上传文件是使用的smartUpload.jar这个外部插件,它提供了很好的接口。这个很好下载,而且暂时没有发现有版本的限制,所以放心使用。

       如果要上传文件,前台的<input>的属性需要修改,需要加上entype=”multipart/form-data”

同时后台需要使用smartUpload提供的request来进行获取,否则会获取不到东西。下边我把后台的部分代码放上,以供参考:

 

//初始化

SmartUpload mySmartUpload=new SmartUpload();

mySmartUpload.initialize(config, request,response);

mySmartUpload.setMaxFileSize(1024*2048);

try

{

    mySmartUpload.upload();

    for (int i = 0; i < mySmartUpload.getFiles().getCount(); i++)

    {

       com.jspsmart.upload.File file = mySmartUpload.getFiles().getFile(i);

        if (file.isMissing())

            continue;

        file.saveAs(filepath+"/test_file"+i+”.txt”);

    }

}catch(Exception err){}

 

Struts:

    Struts相对来说比较麻烦一些,因为需要配置一些文件,然后配置好之后,就相对简单了,因为这个写jsp后台跟写正常的java代码一样了。

    首先讲一下struts文件,需要下载他的jar文件,但是测试了一下,最新的版本貌似不支持,总是出错误,但是2.0版本可以,这里都是使用2.0这个版本的。

其次,是配置文件,首先是web.xml文档,需要加入一个过滤器,因为struts2的入口是一个过滤器。配置web.xml的代码为:

<filter>

    <filter-name>struts2</filter-name>

    <filter-class>

       org.apache.struts2.dispatcher.FilterDispatcher

    </filter-class>

  </filter>

  <filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

    然后就是struts.xml文档,这个是用来指导后台代码的文档。我截取一段代码进行说明一下:

<?xml version="1.0"encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<packagename="struts2" extends="struts-default">

<action name="myupload" class="action.UploadAction">

            <resultname="success">/result.jsp</result>

</action>

</package>

</struts>

其中每一个类都是一个Action,name是别名,class指向具体的类,<result..>是那个类返回的值,name是返回的参数,要和后台返回的严格对应好,/result.jsp是转向的jsp页面。

    配置完毕,那下边就是上传文件了,有两种方法可以进行上传。这里我把代码放上,以供参考。

第一种:

       这一种方法比较简单,struts2提供了很好的接口,直接一句代码

private File upload;

    private javax.servlet.http.HttpServletRequest request;

    public String uploadFile()throws Exception

    {

       String path=request.getSession().getServletContext().getRealPath("");

       System.out.println(path);

       File target=new File(path+"/test.txt");

       try {

           FileUtils.copyFile(upload, target);

       } catch (IOException e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       }

       request.setAttribute("result", "上传成功!");

       return"up";

    }

    public File getUpload() {

       returnupload;

    }

    publicvoid setUpload(File upload) {

       this.upload = upload;

    }

    @Override

    publicvoid setServletRequest(HttpServletRequest req)

    {

       // TODO Auto-generatedmethod stub

       this.request=req;

    }

这个类对应的struts.xml文档的内容为:

<actionname="upfile" class="action.ReceiveAction">

    <resultname="up">/result.jsp</result>

    <interceptor-refname="fileUpload">

       <paramname="allowedTypes">text/plain</param>

       <paramname="maximumSize">4096</param>

</interceptor-ref>

<interceptor-refname="defaultStack"></interceptor-ref>

</action>

<interceptor>是匹配器<param>是参数,提供允许上传的类型和大小,如果不匹配,就会出错。

第二种:

private java.util.List<File> uploads;

    private java.util.List<String> fileNames;

    private java.util.List<String> uploadContentTypes;

    public java.util.List<String> getUploadFileName()

    {

       returnfileNames;

    }

    publicvoid setUploadFileName(java.util.List<String>fileNames)

    {

       this.fileNames = fileNames;

    }

    public java.util.List<File> getUpload()

    {

       returnuploads;

    }

    publicvoid setUpload(java.util.List<File> uploads)

    {

       this.uploads = uploads;

    }

    publicvoid setUploadContentType(java.util.List<String>contentTypes)

    {

       this.uploadContentTypes = contentTypes;

    }

    public java.util.List<String> getUploadContentType()

    {

       returnthis.uploadContentTypes;

    }

    public String execute() throws Exception

    {

       if (uploads != null)

       {

           for (int i=0; i < uploads.size(); i++)

           {

              InputStream is = new FileInputStream(uploads.get(i));

              OutputStream os = new FileOutputStream("F:/test/upload/" + fileNames.get(i));

              byte buffer[] = newbyte[8192];

              int count = 0;

              while ((count = is.read(buffer)) > 0)

              {

                  os.write(buffer, 0, count);

              }

              os.close();

              is.close();

           }

       }

       returnSUCCESS;

    }

这个相对比较麻烦,是使用最常用的InputStreamOutStream来写入的。这个类对应的struts.xml文档内容为:

<actionname="myupload" class="action.UploadAction">

    <resultname="success">/result.jsp</result>

</action>

这个里边没有添加类型匹配的,也可以加,和上边的一样。

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值