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)


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值