原因是:
在 SmartUpload文件类的情况下,request会失灵,原因不详,记住就ok;
要用 su.getRequest().getParameter(),替代request.getParameter();
这样,解决!
有个例子:
<body>
<% //文件上传代码开始
SmartUpload su =new SmartUpload();
su.initialize(pageContext);
//su.setMaxFileSize(100000);
su.setAllowedFilesList("jpg,JPG,gif");
su.setDeniedFilesList("exe,bat,jsp,js,htm,html");
su.upload();
su.save("/image");
//文件上传代码结束
int idd =Integer.parseInt(session.getAttribute("idd").toString()) ;
String name=su.getRequest().getParameter("name");
String sex=su.getRequest().getParameter("sex");
if(sex.equals("M")){
sex="男";
}else{
sex="女";
}
String password=su.getRequest().getParameter("pwd");
String age=su.getRequest().getParameter("age");
String anser=su.getRequest().getParameter("answer");
String shopp[]=su.getRequest().getParameterValues("shopping");
String shop="";
for(int i=0;i<shopp.length;i++){
if(i!=0)
shop+=",";
shop+=shopp[i];
}
String photo="image/"+su.getFiles().getFile(0).getFileName();//获取上传图片的名称
Connection conn = DBUtil.getConn();
String s="update test set name=?,sex=?,pwd=?,age=?,answer=?,shopping=?,photo=? where id=?";
PreparedStatement sql=conn.prepareStatement(s);
sql.setString(1, name);
sql.setString(2, sex);
sql.setString(3, password);
sql.setString(4, age);
sql.setString(5, anser);
sql.setString(6, shop);
sql.setString(7, photo);
sql.setInt(8,idd);
int m=sql.executeUpdate();
if(m!=0){
session.removeAttribute("idd");
out.println("<script type='text/javascript'> alert('修改成功!'); location.href='View.jsp'; </script>");
}else out.println("<script type='text/javascript'> alert('修改失败!'); location.href='View.jsp'; </script>");
%>
</body>