四个文件原代码分别为:
web.xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
fileUpload
servlet.FileUpload
fileUpload
/fileUpload
encodingFilter
servlet.EncodeFilter
encoding
UTF-8
encodingFilter
/*
org.apache.commons.fileupload.servlet.FileCleanerCleanup
org.apache.commons.fileupload.servlet.FileCleanerCleanup
index.jsp
index.jsp
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
My JSP 'index.jsp' starting page文件:
姓名:
success.jsp
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'success.jsp' starting pageuser.name=${user.name}
user.add=${user.add}
file:=${affix.affixName}
Affix.java
package model;
import java.util.Date;
public class Affix {
private String tableName;
private Long tableRecordId;
private String affixName;
private String affixUrl;
private long size;
private long creatorId;
private Date createDate;
private Long updaterId;
private Date updatorDate;
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public Long getTableRecordId() {
return tableRecordId;
}
public void setTableRecordId(Long tableRecordId) {
this.tableRecordId = tableRecordId;
}
public String getAffixName() {
return affixName;
}
public void setAffixName(String affixName) {
this.affixName = affixName;
}
public String getAffixUrl() {
return affixUrl;
}
public void setAffixUrl(String affixUrl) {
this.affixUrl = affixUrl;
}
public long getSize() {
return size;
}
public void setSize(long l) {
this.size = l;
}
public long getCreatorId() {
return creatorId;
}
public void setCreatorId(long creatorId) {
this.creatorId = creatorId;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Long getUpdaterId() {
return updaterId;
}
public void setUpdaterId(Long updaterId) {
this.updaterId = updaterId;
}
public Date getUpdatorDate() {
return updatorDate;
}
public void setUpdatorDate(Date updatorDate) {
this.updatorDate = updatorDate;
}
}
User.java
package model;
public class User {
private String name;
private String add;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAdd() {
return add;
}
public void setAdd(String add) {
this.add = add;
}
public int getAge() {
return age;
}
public void setAge(int i) {
this.age = i;
}
}
EncodeFilter.java
package servlet;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodeFilter implements Filter {
private String encoding = null;
public void destroy() {
encoding = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
if (encoding != null)
request.setCharacterEncoding(encoding);
filterChain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
}
}
FileUpload.java
package servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Affix;
import model.User;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class FileUpload extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String tempPath = "d:\\file\\";
File file = new File(tempPath);
if(!file.exists()){
file.mkdir();
}
System.out.println(ServletFileUpload.isMultipartContent(request));
DiskFileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// upload.setSizeMax(1024 * 1024 * 50L);
// Parse the request
List items = null;
try {
items = upload.parseRequest(request);
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte data[] = new byte[1024];
int i = 0;
Affix affix = null;
User user = new User();
if (items != null)
for (Iterator iterator = items.iterator(); iterator.hasNext();) {
FileItem item = (FileItem) iterator.next();
if (item.isFormField()) {
System.out.print(new String(item.getString("UTF-8")));
if ("add".equals(item.getFieldName())) {
user.setAdd(new String(item.getString("UTF-8")));
} else if ("name".equals(item.getFieldName())) {
user.setName(new String(item.getString("UTF-8")));
} else if ("age".equals(item.getFieldName())) {
user.setAge(Integer.parseInt(item.getString()));
}
// BeanUtils.setFieldValue(user, item.getFieldName(), item
// .getString());
} else {
String fileName = item.getName().substring(
item.getName().lastIndexOf(File.separator) + 1,
item.getName().length());
InputStream inputStream = item.getInputStream();
// InputStream inputStream = request.getInputStream();
OutputStream outputStream = new FileOutputStream(tempPath
+ fileName);
while ((i = inputStream.read(data)) != -1) {
outputStream.write(data, 0, i);
}
inputStream.close();
outputStream.close();
affix = new Affix();
affix.setCreateDate(new Date());
affix.setTableName("t_test_user");
affix.setSize(item.getSize());
affix.setAffixUrl(tempPath + fileName);
affix.setAffixName(fileName);
}
}
// userService.addUser(user);
// fileService.addFile(file)
request.setAttribute("user", user);
request.setAttribute("affix", affix);
request.getRequestDispatcher("/success.jsp").forward(request, response);
// response.sendRedirect("success.jsp");
}
}
代码有点乱,工作有点忙在这里就不改了。
执行结果如图: