介绍(S & T)
“物业报修系统”项目里有个图片上传
的功能模块,我花了近一个晚上理解原理和写出代码。项目框架是SSH2,而上传图片模块主要涉及到Struts2
,所以我剥离Spring和Hibernate的内容,只放出Struts2的代码。
(N : 在2015年的时候,我在Android端写过一个类似的模块,但当时我的做法是调用
Restful API
将图片直接上传到服务器,写的跑在客户端上,而现在写的代码跑在服务器上,两者有较大的区别)
详细步骤(A)
主要步骤分别有Struts2配置文件的修改
、编写JSP代码
、编写后台Action处理
。
Struts2配置文件的修改
首先是web.xml
,它是TomCat服务器的配置文件,为了使得网站的默认页面是上传照片页面(default_upload_pic.jsp
),必须修改它:
1 |
|
接着是struts.xml,它配置了Struts2。在一个页面被提交到服务器后,如何进行处理、由谁处理和处理之后给浏览者返回什么内容
等都由它决定。负责处理图片上传的Action是com.ilovecl.test
包中的UploadPicAction
,它决定浏览者跳转到page1.jsp
或是page2.jsp
。此外,其中还定义了文件过滤器,不允许浏览者上传过大的文件:
1 |
|
JSP代码
JSP文件负责给浏览者显示内容,它提供一个文件选择框,浏览者选择图片后点击按钮便可上传(JSP是嵌入在HTML中的脚本,和javascript类似)。在代码里,我调用了uploadPic这个action,将图片传到服务器里后,就是它负责逻辑处理:
1 | <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> |
后台Action
负责逻辑处理的Action是UploadPicAction,它会利用JAVA的IO将图片保存在服务器网站一个名为upload的目录里:
1 | /** |
结果(R)
运行网站,首页显示如下:
选择图片并上传就可以成功地传到服务器上并保存起来了。