当前位置: 移动技术网 > IT编程>开发语言>Jsp > JspSmartUpload组件的使用说明

JspSmartUpload组件的使用说明

2018年10月30日  | 移动技术网IT编程  | 我要评论

    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)

 


 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网