当前位置:编程学习 > JS >>

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)

 


 

补充:Web开发 , Jsp ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,