servlet处理表单数据实例批量接收表单数据



servlet处理表单数据实例批量接收表单数据。

上篇讲到 Servlet 处理表单的一些知识,今天在这里继续这个话题,我们使用更多的其他的方法去获取和处理表单的数据,以方便以后在项目中遇到的各种问题,哈哈哈

1. SurveyServlet 的改进
很多时候,我们可能并不知道表单中的每一个组件的名字,所以,我们可以使用 request.getParameterNames 方法来获取

源码:

      Enumeration e = request.getParameterNames();
String parameterName = null;
while(e.hasMoreElements()){
parameterName = (String) e.nextElement();
String[] values = request.getParameterValues(parameterName);
out.println(“<ul><br>”);
for(int i=0;i<values.length;i++){
out.println(“<li>”+values+”</li><br>”);
}
    out.println(“</ul><br>”);
}
因为大多数的内容和 SurveyServlet 差不多,所以我在Myeclipse 中直接 复制粘贴了一份 SurveyServlet.java 取名为 SurveyServlet2
然后把 survey.htm 中的 action也相应的改为 action=”/webproject02/servlet/SurveyServlet2″,然后测试吧!
程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger


可是结果却是这样!


程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger


错误了! 心想,怎么不可以呢? 只是重新提交给另一个 servlet 啊!
我想问题肯定是 映射的路径不对,导致 找不到 那个 servlet !于是我打开 web.xml 查看,呵呵,我大吃一惊!
根本就没有 SurveyServlet2 的映射! 这是我想到,在 Myeclipse 中的复制粘贴,只是提供另一个便捷的窗口,让开发人员可以随便的编辑,即使忘记了自己做过哪些修改,呵呵呵呵,原来如此,我就还是老老实实新建一个 servlet 吧!
重新 写了一个 SurveyServlet02.java ,呵呵呵,想想这回肯定不会有错了,哈哈哈,测试吧!

程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger

可是这时,输出的结果却是一句话,并不是我想要的结果!

程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger
这句话很重要,但是也很明显是没用的,这是任何一个 Servlet 程序 默认输出的结果,它说明那个Servlet找到了,但是对这个 servlet 所做的更改没有生效!
这个问题我遇到过,原因很简单,那就是 服务器还没有来得及对该文件进行上传保存,也就说在这个项目中文件的确是修改了,但是还没有将改动保存到服务器上的那个该文件,有没有发现,如果我们开启了服务器并将该项目部署了,每次我们修改一个文件,有时底下就会出现reloading…….呵呵呵,这个就是服务器在同步文件!所以产生了这个错误,解决办法也很简单,只要关闭服务器,然后重启就可以了!

重新输入:
程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger


输出结果: 成功了!哈哈哈,将所有的表单信息都输出来了,呵呵呵

程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger

2.对 Myeclipse 中的复制粘贴的研究
刚才我直接复制和粘贴,最后没有出现我想要的结果,原因是 web.xml 文件中都还没有该文件的映射,甚至没有 这个文件,于是,出于好奇,我决定来改改这个 web.xml 文件试试,哈哈哈
如图所示,我按这个方法添加了一个 Servlet 和 一个 ServletMapping
程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger

然后修改一下 survey.htm 中的 action 属性,呵呵,试试看!

程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger

结果还是错了:
程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger


但是这个结果输出的不对啊! 正确的应该调用那个 SurveyServlet2 啊,而不是那个 SurveyServlet02 啊!
肯定还是那个原因,服务器还没有同步成功!所以,我关闭又重启了一次,试试看

程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger

结果出来了!但是,也还是让我吃惊,没有用!输出来的结果是 SurveyServlet 处理的结果!

程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger

总结:复制然后粘贴了一份Servlet文件,web.xml 并不会重新 建立一个 Servlet 和 ServletMapping 的,那个副本只是用来保存以前版本的,它所做的修改是不会生效的,所有的东西还是会使用它原来的那个版本,所以要想改变处理方式,就得新建另一个Servlet 才行!

3. 使用其他的方式  Map
源码:            // 注意红色的部分,相当的重要啊!

Map map = request.getParameterMap();
Set set = map.keySet();
Iterator it = set.iterator();
String parameterName = null;
while(it.hasNext()){
parameterName = (String) it.next();
String[] values = request.getParameterValues(parameterName);
out.println(“<ul><br>”);
for(int i=0;i<values.length;i++){
out.println(“<li>”+values+”</li><br>”);
}
out.println(“</ul><br>”);
}
测试一下:

程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger

输出了正确的结果,哈哈哈,成功!

程序人生系列之JavaWeb学习 第4章 servlet处理表单数据(中) - yinger090807 - Yinger

http://yinger090807.blog.163.com/blog/static/142728185201132114214602/