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 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)
上一篇: SQL查询重复记录的多种方法介绍
下一篇: win10怎么进入和退出安全模式?