servlet 如何获取form中的参数

dengjianqiang200 2007-07-01 08:50:01
我的form
<form action="./uploadMusic" id="fileUploadForm" name="fileUploadForm" method="post" enctype="multipart/form-data" >
<input type="radio" name="musictype" value="0" />
<input type="file" name="file" size="60" />
<input type="submit" name="uploadButton" id="uploadButton" value="上传"/>
</form>

web.xml

<servlet>
<servlet-name>uploadMusic</servlet-name>
<servlet-class>com.ajax.upload.uploadMusic</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>uploadMusic</servlet-name>
<url-pattern>/uploadMusic</url-pattern>
</servlet-mapping>

servlet:

public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {

String musictype = request.getParameter("musictype");
if(musictype==null)musictype="";
System.out.println("-----------------------dopost " +musictype);

}

为什么获取不到musictype 的值呢?

servlet如何获取表单传过来的参数呢?

请各位指教!

谢谢!
...全文
2677 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjf405 2007-07-04
  • 打赏
  • 举报
回复
帮顶~~
cumtshine 2007-07-04
  • 打赏
  • 举报
回复
使用了multipart/form-data最好就只用FILE就可以了.不要再加别的了.
HIDDEN是没有问题了.除了这些,别的可输入的在提交之后都是不可以的.比如RADIO或者TEXT.
许飘大叔 2007-07-03
  • 打赏
  • 举报
回复
nmjj2006 的方法应该可行
许飘大叔 2007-07-03
  • 打赏
  • 举报
回复
用了enctype="multipart/form-data" >了

那样是不能获取到的

Ami121 2007-07-03
  • 打赏
  • 举报
回复
你是再上传文件,用getParameters()是得不到文件的内容的.要通过流来实现

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import org.apache.commons.fileupload.*;
public class FileUpload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";

//Initialize global variables
public void init() throws ServletException {
}

//Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
response.setContentType(CONTENT_TYPE);

String con="";
String geter="";
System.out.println("kkkkkkkkkpppp");
try {
System.out.println("ll");
DiskFileUpload fu=new DiskFileUpload();

//设置允许上传得文件的大小
fu.setSizeMax(100*1024*1024);

//设置在内存中存储数据的大小
fu.setSizeThreshold(4096);

//如果文件超过SizeThreshold值,就暂时存放到c:/temp
fu.setRepositoryPath("c:\\temp");

//开始读取上传信息
List fileItems =fu.parseRequest(request);

Iterator it=fileItems.iterator();

//循环的处理用户的请求
while(it.hasNext()){

FileItem item=(FileItem)it.next();

//如果是信息内容和接受人的信息就记录下
if(item.isFormField()){

System.out.println("opop");
//说明这个不是文件,
String paraName=item.getFieldName();
if(paraName.equals("geter")){

geter=item.getString();
}else if(paraName.equals("content")){

con=item.getString();
}
}else{

System.out.println("opopyyy");
//说明是文件,
//得到文件全路径
String name=item.getName();
long size=item.getSize();//文件大小

//得到文件名
String filename=name.substring(name.lastIndexOf("\\")+1);
//上传文件
System.out.println("ok");
item.write(new File("c:\\upload\\"+filename));

}

}

} catch (Exception ex) {
ex.printStackTrace();
}

}

//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}

//Clean up resources
public void destroy() {
}
}
jhandsome007 2007-07-03
  • 打赏
  • 举报
回复
实在不行,自己写个流吧 ....
jhandsome007 2007-07-03
  • 打赏
  • 举报
回复
跟你写的 enctype="multipart/form-data" 有关,

加上了这个的话,你那个 request 已经不上原来的那个 request 了,必须使用 upload 里的
request 了,进行转换!
nmjj2006 2007-07-03
  • 打赏
  • 举报
回复
如果不能用SMART组件的话,那就只能自己写上传的javabean了
自己写的话可以解决你的问题.通用上载组件的原理及实现
http://bankbill.51.net/upload/
网上有很多关于这方面的讨论 不知道你能不能使用apache的commons-fileupload
把你的具体情况和需求能说的详细点吗?
dengjianqiang200 2007-07-03
  • 打赏
  • 举报
回复
首先要谢谢各位的积极帮助,但是我现在不能用smartupload及struts了,只是一个单纯的表单向servlet提交,就是上传一个文件及其相关的信息,还有没其他 的办法 啊!
dhxyu 2007-07-02
  • 打赏
  • 举报
回复
中国JavaEE技术交流社区-欢迎您的参与探讨!
-- 打造“中国JavaEE技术交流社区“,欢迎j2ee爱好者朋友们的踊跃参与!
http://www.j2eedve.com/
nmjj2006 2007-07-02
  • 打赏
  • 举报
回复
<form action="./uploadMusic" id="fileUploadForm" name="fileUploadForm" method="post" enctype="multipart/form-data" >
你是上传文件enctype="multipart/form-data"当Form中有这个时候就表示传递给服务器的是一个流了.你用request.getParamter();是取不到参数的~
解决办法有许多种:
常用的有使用jspsmartupload包 来接收参数
在就是使用struts中的FORMFILE 来接收.
使用jspsmartupload包时候接收代码是:
//建立上传对象
SmartUpload su=new SmartUpload();
//初始化
su.initialize(pageContext);
//上传
su.upload();
com.jspsmart.upload.File f=su.getFiles().getFile(0);
byte[] b=new byte[f.getSize()];
for(int i=0;i<f.getSize();i++)
{
b[i]=f.getBinaryData(i);
}
long time=System.currentTimeMillis();
String filename=time+"."+f.getFileExt();
System.out.println("hhhhhhhhhh="+filename);
f.saveAs("/tmp/"+filename,su.SAVE_VIRTUAL);
String realPath=request.getSession().getServletContext().getRealPath("/");
TestDB.Exec(filename,(realPath+"tmp\\"));
filename=filename.substring(0,filename.length()-4)+".htm";
System.out.println("filename="+filename);
}
我随便找了个贴的,要取不是上传文件的其他参数就用su.getRequest().getParameter("musictype")来的到就可以了~如果使用formfile直接使用老办法就可以接收到参数
rainv 2007-07-01
  • 打赏
  • 举报
回复
把form里的
method="post"
去掉
lxdhdgss 2007-07-01
  • 打赏
  • 举报
回复
最有可能的问题就是<form action="./uploadMusic" id="fileUploadForm" name="fileUploadForm" method="post" enctype="multipart/form-data" >里面的action="./uploadMusic"错误。你换个别的,比如../uploadMusic,或../../uploadMusic试试
wang19841229 2007-07-01
  • 打赏
  • 举报
回复
这么些应该是正确地
me_loong 2007-07-01
  • 打赏
  • 举报
回复
你这样获取是正确,如果没获到,你看是不是提交给这个servlet了,
<form action="uploadMusic" id="fileUploadForm" name="fileUploadForm" method="post" enctype="multipart/form-data" >


<form action="uploadmusic" id="fileUploadForm" name="fileUploadForm" method="post" enctype="multipart/form-data" >
你试一下

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧