程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JspSmartUpload組件的使用說明

JspSmartUpload組件的使用說明

編輯:關於JSP

    JspSmartUpload是一個小巧簡便的實現上傳下載功能的組件,在表單中提交圖片的時候,有以下注意點:

 

①表單設置:method="post" enctype="multiply/form-data"


②在Servlet中如果想要取得文本框提交的內容,不能使用request.getParameter(),因為這種提交方式是以二進制進提交的,所以使用以前的取值方法取到的都是null,這時候要使用 new SmartUpload.getRequest().getParameter("name");進行取值。


③在調用SmartUpload取值方法之前,一定先初始化上下文mySmartUpload.initialize(pageContext);,並要先調用upload()方法。


④我的處理上傳圖片是作為一個單獨的類,這時候需要在類裡面獲取servlet、request、response、pageContext對象,而前三個參數都可以由Servlet在方法中通過參數傳遞過來,pageContext需要使用這種方法獲取:
JspFactory jspFactory = JspFactory.getDefaultFactory();//取得JSP工廠類
//此處request、response由servlet中傳遞過來
PageContext pageContext = jspFactory.getPageContext(servlet,request,response,"",true,8192,true);//通過Jsp工廠類獲取上下文環境


⑤中文亂碼問題:如果文本框傳遞的是中文的話,那麼需要使用這種方法:new String(new SmartUpload.getRequest().getParameter("name").getBytes("GBK"));,我的upload.jsp中編碼是UTF-8,通過GBK轉字節在我的應用中可以正確處理中文問題。


網上摘的解決亂碼問題:
1:mySmartUpload.getRequest().getParameter("account") 獲取值亂碼問題
前台頁面(form)傳兩個值到servlet,一個是文件,另一個是文字。 
servlet接收文字的方法: 
Request req = smart.getRequest(); 
account = new String(req.getParameter("account").getBytes("iso-8859-1"), "gb2312"); 
 
但得到的是亂碼
解決:
這個問題分兩個步驟解決: 
首先,將前台JSP頁面中 
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
的UTF-8都改成GBK或GB2312
 
然後,在servlet中,在doGet或doPost方法中的第一行代碼寫 
request.setCharacterEncoding("GBK");//或GB2312也行; 
之後你創建smartUpload的對象..
 
得到request對象後正常獲得JSP中form的各元素值就不會有問題,比如: 
SmartUpload mySmartUpload = new SmartUpload();
 
String account = mySmartUpload.getRequest().getParameter("account"); 
System.out.println(account);//不會有亂碼了;  


2:mySmartUpload.getRequest().getParameter("account") 獲取值
 
mySmartUpload.getRequest().getParameter("account");
account不能是文件類型的ID (如: <input type="file" name="file1"/>中的file1)

 


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved