標籤:return hash val str setfile 建立檔案 cto parser 不為
jsp和上傳的封裝
一.jsp的簡介
1.jsp是java server pages允許在頁面中使用java作為指令碼語言動態產生html代碼
2.jsp首先和html的區別,html可以直接放在瀏覽器中執行但是jsp必須把tomcat啟動起來才能看到效果
3.組成部分:1.靜態內容;2.指令;3.運算式;4.指令碼;5.聲明;6.注釋
3.1注釋:jsp有html使用的注釋,java使用的注釋,和自己的注釋
第一種:跟html注釋一樣,此注釋是第一種,在用戶端可以看見
第二種jsp注釋,在用戶端看不見,在編譯時間,會被擦除<%--注釋-->
第三種是標準java注釋,這種注釋只能寫在jsp指令碼中 //注釋 ; /*注釋*/
3.2指令:jsp頁面可以在最上方加入當前頁面的配置等資訊叫做jsp指令
page指令:當前頁面的配置資訊,最為常用
include:在一個頁面中,將另一個檔案嵌入其中
taglib:引入標籤庫
3.3指令碼:<%--jsp指令碼--%>可以寫任何java代碼,但是不能夠定義方法,全域變數.所有的jsp指令碼,都會和html代碼混合複製進_jspService方法中.
3.4靜態內容:所有被寫在jsp檔案中的沒有被任何jsp標籤包裹的,就是靜態內容,即,所有的html代碼,都是靜態內容
3.5聲明:用來寫自訂方法,成員變數的
3.6運算式:是在html代碼中,是為了使用聲明中定義的全域變數,或指令碼中定義的局部變數而存在的即運算式是沒有複雜邏輯,只能取值使用
二.上傳的封裝
public class SmartUpload {
private HttpServlet servlet;//
private ServletFileUpload sfu;//用於上傳的全域變數
private File uploadDir;//用來建立上傳檔案的檔案夾
private HashMap<String,String> parameters;//用來儲存普通表單資料
private HashMap<String,File> files;//用來儲存上傳檔案的檔案名稱和檔案
public SmartUpload(HttpServlet httpServlet){
this.servlet = httpServlet ; //構造方法,用來操作使用此輪子的servlet對象
inintDir();//初始化上傳檔案夾
sfu = new ServletFileUpload();//
sfu.setFileItemFactory(new DiskFileItemFactory());//初始化servletFileUpload
parameters = new HashMap<>();//初始化對象
files = new HashMap<>(); //初始化對象}
private void initDir(){
String uploadPath = servlet.getServletContext().getRealPath("")+File.separator+"upload";//拼接上傳檔案路徑
uploadDir = new File(uploadPath); //通過拼接路徑建立File對象
if(!uploadDir.exists()){ //判斷檔案夾是都存在
uploadDir.mkdirs();} //不存在則建立檔案夾
public void parse(HttpServletRequest request){ //解析request
List<FileItem> fileItems = sfu.parseRequest(request);//解析request放入List中
if(fileItems != null){ //判斷不為空白
for(FileItem fileItem : fileItems){//遍曆List
if(fileItem.isFormField()){ //判斷是否為表單資料
String key = fileItem.getFieldName();//擷取key
String value = fileItem.getString("utf-8");//擷取value
parameter.put(key,value);//存入hashMap中
}else { //不是表單資料
String fileName = fileItem.getName();//擷取檔案名稱
if(StringUtils.isEmpty(fileName)){ //引用是apache下的包
continue;}
String realName = TestUUID.handFileName(fileName);//利用UUID產生新的檔案名稱
File file = new File(uploadDir,realName);//通過檔案夾和檔案名稱建立檔案
fileItem.write(file);//寫檔案
files.put(fileName,file);//將檔案名稱和file對象存入hashMap
public String getParameter(String key){
return parameter.get(key);}
public Map<String,String> getParameterMap(){
return parameters;}
public Map<String,File> getUploadFiles(){
return files;}
三.request域
向request域中放值,值以key-value的形式存放,key只能是String,value可以是任何對象
存值:request.setAttribute("msg",msg);//索引值對形式存放
取值:request.getAttribute("msg");//通過key取value
java_day25_UUID,封裝上傳,jsp