package com.bjsxt.servlet;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**** System.out.println(item.isFormField());//是否是file表单项 是file返回false 不是true* System.out.println(item.getFieldName());//表单项的name属性* System.out.println(item.getString());//对于非file的表单项,value属性的值;对于file表单项,是文件内容* System.out.println(item.getName());//对于file表单项上传文件的名字 对于非file的返回null* System.out.println(item.getContentType());//对于file表单项上传文件的类型 对于非file的返回null* System.out.println(item.getSize());//对于file表单项,上传文件的大小,对于非file表单项,value值得宽度* System.out.println("====================================");***/
public class AddServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 创建工厂类对象FileItemFactory factory = new DiskFileItemFactory();
// 创建ServletFileUpload对象ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");// 解决file表单项文件名中文乱码问题// 通过servletFileUpload对象实现上传操作,将客户端一个个表单项封装到一个个表单中List itemList = null;
try {
itemList = upload.parseRequest(request);
} catch (FileUploadException e) {
// TODO Auto-generated catch blocke.printStackTrace();
}
// 遍历各个FileItem(相当于对各个表单项进行处理)System.out.println(itemList.size());
String name = null;
int age = 0;
double score = 0;
for (int i = 0; i < itemList.size(); i++) {
// 取出第i个表单项FileItem item = itemList.get(i);
String fieldName = item.getFieldName();
// 输出item的内容,熟悉主要的方法// 对各表单项进行处理(普通表单项和文件表单项要分开处理)if (item.isFormField()) {// 普通表单项// nameif ("name".equals(fieldName)) {
name = item.getString("UTF-8");
}
// ageif ("age".equals(fieldName)) {
age = Integer.parseInt(item.getString());
}
// scoreif ("score".equals(fieldName)) {
score = Double.parseDouble(item.getString());
}
} else {// 文件表单项if ("photo".equals(fieldName)) {
/*** 指定上传的文件夹: TomCat的webApps目录下:可以在地址栏拼接文件路径直接读取文件,方便读取,* 但是从服务器中remove项目会删除文件夹,再次部署也没有,造成文件丢失。* webApps之外:读取不方便,文件安全。)*/
// File dir = new File("D:/upload");File dir = new File("D:/apache-tomcat-7.0.94/webapps/updownload1/upload");
if (!dir.exists()) {
dir.mkdirs();
}
// 上传该照片到指定位置String photoName = item.getName();
File file = new File(dir, photoName);
try {
item.write(file);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
System.out.println(name + " " + age + " " + score);
int n = 1;
// 页面跳转if (n != 0) {
// 重定向:/后面要跟上下文路径 /stumgr /stumgr2response.sendRedirect(request.getContextPath() + "/servlet/ShowAllServlet");
} else {
request.setAttribute("mess", "添加失败!");
request.getRequestDispatcher("/add.jsp").forward(request, response);
}
}
}