欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JspSmartUpload组件的使用说明

程序员文章站 2023-08-26 19:51:45
    jspsmartupload是一个小巧简便的实现上传下载功能的,在表单中提交图片的时候,有以下注意点:   ①表单设置:method="po...

    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 factory = 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)