【转】JspSmartUpload组件的使用说明

 
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)
posted @ 2016-03-15 10:42  fukan  阅读(682)  评论(0编辑  收藏  举报