第一步:创建项目
新建一个项目,先点击左边的spring,然后再点击右边的Spring MVC,点击后,下面的Web Application也会自动勾上,然后点击下一步Next,然后是给项目起名字以及配置项目目录,成功后,点击finish。需要加载一会儿。
第二步:配置项目
配置Tomcat
点击最上面一排目录的run,然后点击Edit Configurations,弹出一个页面,点击左上角的Templates旁边的小三角,然后翻到最底下,点开Tomcat Server,再点击Local,然后点击右上角的Configure....按钮,配置你的Tomcat,然后点击右下角apply按钮,别关闭此页面,然后点击左上角的加号+,点击最下面一个,然后再点开Tomcat Server,再点击Local,然后点击右边apply按钮上面的fix按钮,然后点击apply,关闭这个界面。
导入jar包
点击File按钮,然后点击Project Structure...这个按钮,弹出一个页面(这个页面分为左中右三部分),左边选中 Artifacts,然后点击最右部分的 Output.Layout ,然后点击它下面的一个加号+,选择Library Files,然后选中其中的两个jar包,并点击OK;接着点击apply上面的fix按钮,点击Add all...开头的那一行(我的是第二行),然后点击apply按钮。
然后最左部分选中Modules,然后点击最右部分的加号+,选择第一个,在弹出的页面里选择要添加的jar包,这一步可以反复操作,把所需要的jar包都添加上。然后点击apply,不要关闭该页面。
接下来点击最左侧的Artifacts,发现有警告,点击左侧apply按钮上面的fix按钮,选择第二个Add all...开头的,然后点击OK,关闭掉这个界面。jar包就添加成功了。
配置Spring-MVC.xml文件(idea中是dispatcher-servlet.xml文件)
先添加这个:
<context:component-scan base-package=" 你的package名 "/> |
再添加这个:
|
上传文件就必须配置上传文件所需要的东西。(直接将下面这段话copy进去就可以)
|
注意name为 “maxInMemorySize”的这个property,如果你上传的文件的大小小于2048kb,则不会生成临时文件,这个你可以根据需求改变一下,在我的项目中,我把它改为了10,就是把value的值改为“10”。
配置web.xml文件
首先把web.xml文件中的下面这部分 修改一下。
|
修改后为:
|
接着,由于上传之后,我们要验证文件是否上传成功了,我们就需要访问上传到该项目的文件,这个文件是一个静态文件,为了能够访问这个静态文件,就需要添加相应的配置,SpringMVC访问静态文件,有多种方法,我自己用的是最笨的一种,因为我也是新手。方法如下:
将下面的内容copy到web.xml文件中,要放在<web-app>标签之间啊。
|
这样,常用的静态文件格式就都可以访问了,这个很简单,一看就会,你看还需要添加什么样的格式,可以自己添加。
已经说了,我这种办法是最笨的办法,你可以使用别的方法,只要能让SpringMVC访问到静态资源就可以。
第三步:创建controller类
在src下创建一个controller的package,然后在其中添加一个FileUploadController类,具体代码如下:
|
其中,@RequestParam("file1") 表示,前端的form表单中的 type类型的的input 的name为file1,为了一致,我把后面的MultipartFile类型的参数也设置为了file1。
String filePath=request.getServletContext().getRealPath("/"); 返回的是项目在容器中的实际发布运行的根路径;
file1.transferTo(new File(filePath+"123/"+file1.getOriginalFilename())); 其中的file1.getOriginalFilename(),是获取上传的文件的本来的名称。所以这行代码的意思就是将这个上传后的文件放到 根目录的“123”目录下,并且名称为以前的名称。(之所以使用123作为目录的名称,是因为之前使用英文名称的时候,可能由于编码的问题,出现了差错,可以换成别的名称) 因此,需要在web(webapp)目录下创建一个名为123的空目录。
在根目录即web(webapp)中创建一个名为“123”的空目录。
上传成功后,会重定向到 success.html界面,因此还要在根目录(web或webapp)添加一个success.html文件。内容自己随便写。
第四步 添加前端页面
idea创建的项目默认有一个index.jsp文件,我就把上传的前端页面写在这个文件里了
|
form标签的action属性最好写成绝对路径,因为要上传文件,所以还需要加上enctype="multipart/form-data" 属性,另外,选择文件的<input>标签的name属性必须与controller类中的 @RequestParam("file1") 相同。应该再没有什么要注意的了。
这就应该差不多了。
刚才又实践了一遍这个文件上传的功能,果然又获取到了点东西,我之前在web目录下创建一个upload目录,然后让上传功能将文件上传到这个目录中去。我刚才这样做了一遍,发现出错了,然后我就输出获取到的文件的路径,然后直接在本地文件中打开,发现,真正的本地路径并不是在web下,而是在out路径下,而我创建的upload在web中,所以获取到的路径中根本就没有这个目录,所以一直都报找不到路径。
解决办法:我手动在获取到的路径下创建了一个upload目录,这样就好了。看来我上次是运气好,才实现了那个功能。