下面介绍一个http servlet处理post方式的例子,见示例14-3。
【程序源代码】
1 // ==================== program description ==========================
2 // 程序名称:示例14-3 : surveyexample.html
3 // 程序目的:surveyexample源代码
4 // ==============================================================
5 <!doctype html public "-//ietf//dtd html//en">
6 <html>
7 <head>
8 <title>javausagesurvey</title>
9 </head>
10
11 <body bgcolor=#ffffff>
12 <p><img src=http://www.supcode.com/article/html/4/43/2005/02/10/images/bea_button_final_web.gif align=right>
13 <blockquote>
14 <font face="helvetica">
15 <form action="surveyservlet" method=post>
16 <input type=hidden name=survey value=survey01results>
17 <br><br>how many employees in your company?<br>
18 <br>1-100<input type=radio name=employee value=1-100>
19 <br>100-200<input type=radio name=employee value=100-200>
20 <br>200-300<input type=radio name=employee value=200-300>
21 <br>300-400<input type=radio name=employee value=300-400>
22 <br>500-more<input type=radio name=employee value=500-more>
23 <br><br>general comments?<br>
24 <br><input type=text name=comment>
25 <br><br>what ides do you use?<br>
26 <br>javaworkshop<input type=checkbox name=ide value=javaworkshop>
27 <br>j++<input type=checkbox name=ide value=j++>
28 <br>cafe‘<input type=checkbox name=ide value=cafe‘>
29 <br><br><input type=submit><input type=reset>
30 </form>
31 </font>
32 </blockquote>
33 </body>
34 </html>
【程序输出结果】
在客户端ie浏览的效果如图14-5所示。
screen.width-600)this.style.width=screen.width-600;">
图14-5 客户端浏览效果
服务器端的servlet就是要将客户端填写并发送的表单数据写入一个文件,并且用一个"thank you"信息响应用户。示例14-4就是servlet程序。
【程序源代码】
1 // ==================== program description ==========================
2 // 程序名称:示例14-4 : surveyservlet.java
3 // 程序目的:处理http post的表单请求
4 // ==============================================================
5 package examples.servlets;
6 import java.io.*;
7 import java.util.*;
8 import javax.servlet.*;
9 import javax.servlet.http.*;
10
11 public class surveyservlet extends httpservlet
12 {
13 string resultsdir;
14
15 public void init(servletconfig config)
16 throws servletexception
17 {
18 super.init(config);
19 resultsdir = getinitparameter("resultsdir");
20 if (resultsdir == null) {
21 enumeration initparams = getinitparameternames();
22 system.err.println("the init parameters were: ");
23 while (initparams.hasmoreelements()) {
24 system.err.println(initparams.nextelement());
25 }
26 system.err.println("should have seen one parameter name");
27 throw new unavailableexception (this,
28 "not given a directory to
write survey results!");
29 }
30 }
31
32 public void dopost(httpservletrequest req, httpservletresponse res)
33 throws servletexception, ioexception
34 {
35 res.setcontenttype("text/html");
36 printwriter toclient = res.getwriter();
37
38 try {
39 //打开文件将调查结果写入文件
40 string surveyname = req.getparametervalues("survey")[0];
41 filewriter resultsfile = new filewriter(resultsdir
42 + system.getproperty("file.separator")
43 + surveyname + ".txt", true);
44 printwriter tofile = new printwriter(resultsfile);
45 tofile.println("<begin>");
46 enumeration values = req.getparameternames();
47 while(values.hasmoreelements()) {
48 string name = (string)values.nextelement();
49 string value = req.getparametervalues(name)[0];
50 if(name.compareto("submit") != 0) {
51 tofile.println(name + ": " + value);
52 }
53 }
54 tofile.println("<end>");
55 //关闭文件
56 resultsfile.close();
57
58 // 响应客户
59 toclient.println("<html>");
60 toclient.println("<title>thank you!</title>");
61 toclient.println("<body bgcolor=#ffffff><p><img src=images
62 /bea_button_final_web.gif align=right>" +
63 "<font face="helvetica">" +
64 "thank you for participating</font></body>");
65 toclient.println("</html>");
66
67 }
68 catch(ioexception e) {
69 e.printstacktrace();
70 toclient.println("a problem occured while recording your answers. " +
71 "please try again.");
72 }
73
74 }
75 }
部分配置文件如下所示:
<servlet>
<servlet-name>surveyservlet</servlet-name>
<servlet-class>examples.servlets.surveyservlet</servlet-class>
<init-param>
<param-name>resultsdir</param-name>
<param-value>c:eawlserver6.1configmydomainapplications
defaultwebappweb-infclasses
examplesservlets</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>surveyservlet</servlet-name>
<url-pattern>/surveyservlet/*</url-pattern>
</servlet-mapping>
【程序输出结果】
在相同目录下生成了一个survey01result的文本文件,里面记录着客户提交的信息:
<begin>
employee: 100-200
ide: j++
survey: survey01results
comment:
<end>
同时返回给客户端信息,如图14-6所示。
screen.width-600)this.style.width=screen.width-600;">
图14-6 返回给客户端的信息
【程序注解】
在init()方法中先初始化了resultsdir变量,这个变量是以后保存文件的路径,这个变量的值在web.xml中。
dopost方法是用getparameternames和getparametervalues方法从表单中获取数据的,当参数名是submit时,就不对这个参数操作,并将其余客户端的参数名和参数值写入文件中。因为它返回文本给客户端,dopost 调用了 getwriter 方法。在写入响应主体部分之前,它进行了响应头部字段的设置setcontenttype("text/html")。
-
关于我们
公司介绍 最新动态 联系我们 -
产品与服务
域名注册 jsp空间 php空间 -
常见问题
空间操作手册 网站备案相关 退款相关问题 -
技术支持
技术 QQ :178966803 联系电话:13616026886 联系邮箱:fjjsp@vip.163.com
扫描关注微信公众号
闽公网安备 35060202000074号