一、文件上傳
1.1 file網站源碼:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上傳</title>
</head>
<body>
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" >
<input type="submit" value="上傳">
</form>
</body>
</html>
效果圖:
1.2 UploadServlet源碼
package myweb;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
Part part=request.getPart("file");
String fileName=part.getSubmittedFileName();
String uploadPath=request.getServletContext().getRealPath("/upload");
System.out.println(uploadPath+File.separator+fileName);
part.write(uploadPath);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print("上傳成功");
//super.service(, arg1);
}
}
這裏需要注意的是:part.write(uploadPath);
裏面寫入你保存的地址,並不是原路徑和映射路徑都寫入。
1.3 不足
- 這裏的文件上傳只能上傳一個文件,如果第二次上傳,第一次上傳的文件會被覆蓋掉。
- 上傳的文件的命名是源碼給的,即:upload,不能基於上傳的文件名命名。
- 上傳的文件默認爲文件格式,打開時候只能自己選擇需要的格式,所以缺少轉碼過程
二、E-L表達式
不想寫了,很簡單,參考這裏:E L 表達式