1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Servlet,与表单的交互,引言:,表单是,HTML,中一种友好的用户交互界面。用户可以通过表单输入数据,但表单本身并不能对用户输入的数据进行处理。,驻留在,Web,服务器端的,Servlet,可以方便的处理表单提交的数据,本节举例说明,Servlet,是如何处理表单数据的,。,本讲内容:,创建包含表单的,HTML,文件,编写处理表单的,Servlet,一、,创建包含表单的,HTML,文件,下面是一个包含表单的个人信息调查表,HTML,文件。,文档名称(,HTMLForm.html,),HTMLForm.
2、html,01:,02:,03:,04:,情况调查表,05:,06:,07:,请输入您的个人信息:,08:,09:,10:,姓名,:,11:,12:,13:,单位,:,14:,15:,HTMLForm.html,16:,专业:,17:,18:,计算机应用,19:,计算机软件技术,20:,网络工程,21:,多媒体技术,22:,软件工程,23:,24:,25:,26:,27:,28:,29:,网页样式:,实例的第,09,行表明处理表单的,Servlet,为,RequestParamExample,。,将实例的,HTML,文档复制到,TOMCAT_HOME,webappsmyServlet,目录下,
3、启动,Tomcat,后在,IE,浏览器的地址栏输入,localhost:8080/myServlet/HTMLForm.html,,则浏览器窗口显示的内容如图所示。,二、,编写处理表单的,Servlet,在,Servlet,中,由表单提交的数据,可以使用,HttpServletRequset,类提供的,getParameter,方法取得一个变量的值,如对于表单中的下列语句:,可以使用下列方法获得在姓名文本框中输入的内容:,String name=,request.getParameter,(,name,),;,对于实例,8-3,所示的,HTML,文档,编写一个,Servlet,,将表单提交的内
4、容以网页的形式返回给填写者。,处理表单提交数据的,Servlet,(,RequestParamExample.java,),01,:,package ch8;,02,:,import,java.io,.*;,03,:,import,javax.servlet,.*;,04,:,import,javax.servlet.http,.*;,05,:,public class,RequestParamExample,extends,HttpServlet,06,:,07,:,public void,doGet(HttpServletRequest,request,HttpServletRespons
5、e,response),08,:,throws,IOException,ServletException,09,:,10,:,/,处理表单请求信息,11,:,request.setCharacterEncoding(GBK,);,12,:,String name=,request.getParameter(name,);,13,:,String work=,request.getParameter(work,);,14,:,String,prof,=,request.getParameter(prof,);,处理表单提交数据的,Servlet,(,RequestParamExample.jav
6、a,),15,:,/,构建响应信息,16,:,response.setContentType(text/html;charset,=GB2312);,17,:,PrintWriter,out=,response.getWriter,();,18,:,out.println,();,19,:,out.println,(Name,Servlet,);,20,:,out.println,();,21,:,out.println,(,欢迎你,,+name+,!你填写的信息已经被成功地处理。,);,22,:,out.println,(,你填写的信息如下,:);,23,:,out.println,(,你的
7、姓名是:,+name);,24,:,out.println,(,你的工作单位是:,+work);,25,:,out.println,(,你的专业是:,+,prof,);,26,:,out.println,();,27,:,out.println,();,28,:,29,:,程序说明:,第,11,行,request.setCharacterEncoding(GBK,),设置请求页面的字符集为,GBK,简体中文。第,16,行,response.setContentType(text/html;charset,=GB2312),设置响应内容为,HTML,文档,字符集为,GB2312,。从实例中可以看
8、出,第,18,行到,27,行的输出内容组成了一个完整的,HTML,文档。,要注意的是,第,12,行、,13,行和,14,行,getParameter,方法的参数,要与,HTML,文档中表单组件的名称相对应。,部署程序:,为了测试将实例的,Servlet,(,源程序名为,RequestParamExample.java,),,首先要对它进行编译,编译成功后复制到,TOMCAT_HOMEwebappsmyServletWEB-INFclassesch8,目录中。然后修改,web.xml,文件,加入以下容:,RequestParamExample,ch8.RequestParamExample,Re
9、questParamExample,/,RequestParamExample,当,Servlet,部署完成以后,重新启动,Tomcat,。然后在图,8-3,的表单输入用户信息,单击“提交”按钮后,名为,RequestParamExample,的,Servlet,将处理提交的数据。如图,8-4,所示的是响应窗口。,程序结果:,三、中文乱码问题,在,Tomcat 5.0,中为了正确的处理中文信息,要修改,TOMCAT_HOMEconf,目录中的,server.xml,文档,在其中增加,URIEncoding,=GBK,。修改后的内容为,:,GET,与,POST,方法说明:,最后说明一点,如果将实
10、例,8-3,中,09,行“,”,中的“,POST”,改为“,GET”,,相应地将实例,8-4,中,09,行的“,public void,doGet,()”,的“,doGet,”,改为“,doPost,”,,不会响应,Servlet,的处理结果。,改为“,POST”,方法后,实例,8-3,提交后的结果如图,8-5,所示。图,8-4,中可以在地址栏看出表单提交后三个变量,name,、,work,和,prof,的值。使用“,POST”,方法后,从图,8-5,中的地址栏可以看出变量信息将不在地址栏显示出来。,上机实践题:,编写一个用户注册响应程序,在用户输入注册信息后,显示用户的注册内容,.,上网作业:下载,Dreamwaver,并学习其使用技术。,






