Unit13-Servlet基础
课堂案例1—认识第一个Servlet
案例学习目标:学习Servlet的基本编写方法。
案例知识要点:Servlet的编写、Servlet的编译、Servlet的使用场合。
案例完成步骤:
1.在Tomcat的webapps文件夹中创建保存第7章程序文件的文件夹chap07。
2.复制WEB-INF文件夹和web.xml文件。
3.编写第一个Servlet程序FirstServlet.java。
【程序说明】
●第1行:将当前Servlet(Java类)放在myservlet包中;
●第2行—第5行:引入编写Servlet所需要的包;
●第8行—第13行:重载HttpServlet类中的doGet方法,实现Servlet的功能;
4.编译该FirstServlet.java为FirstServlet.class,完成第一个Servlet的编写。
【课堂案例1】显示了一个简单Servlet的基本结构。
该Servlet处理的是GET请求,Servlet也可以很方便地处理POST请求。
GET请求和POST请求的区别请读者参阅第4章。
说明
●编译Servlet之前,将Servlet所用到的的包(D:\Tomcat 6.0\lib\servlet-api.jar)添加
到classpath或IDE的搜索路径中;
●Servlet程序编写以后,必须在Servlet容器中进行配置后,才能进行正常访问。
在下一节
将会介绍Servlet的配置和调用。
课堂案例2—配置和调用Servlet
Servlet的配置一般通过一个配置文件(如web.xml)来实现,不同的Web服务器上安
装Servlet的具体细节可能不同,在Tomcat服务器下,Servlet应该放到应用程序的WEB-INF\classes目录下,而调用Servlet的URL是“http: //主机名/应用程序文件夹名/Servlet名”。
同时大多数Web服务器还允许定义Servlet的别名,因此Servlet也可能以使用别名形式的URL调用。
案例学习目标:学习通过修改web.xml文件配置Servlet以及调用Servlet的方法。
案例知识要点:web.xml的修改、Servlet的部署、调用Servlet的方法。
案例完成步骤:
1.部署Servlet。
将FirstServlet.java编译成FirstServlet.class文件,连同包(myservlet)复制到对应目录的WEB-INF/classes目录下(笔者目录为:d:\tomcat6.0\webapps\chap07\classes)。
【程序说明】
●第3行—第8行:完成对Servlet的名称(name)和Servlet类(class)之间的
匹配,本例将名称为First的Servlet匹配到myservlet包中的FirstServlet类;
●第9行—第12行:完成了Servlet的映射,即如果在浏览器地址栏中出现了/First
的内容,则映射成名称(name)为First的Servlet。
3.启动Tomcat服务器后,在IE的地址栏中输入http://localhost:8080/chap07/First。
运行结果如图13-1所示。
图13-1 FirstServlet运行结果
说明
●Servlet修改以后,重新启动服务器可以查看修改以后的结果;
●也可以对web.xml进行一些简单的修改后保存(改变文件的时间),这样可以不需要重新
启动服务器。
因为Servlet运行时会检查web.xml文件是否进行了修改。
课堂案例3—应用Servlet读取指定HTML表单数据
案例学习目标:学习Servlet读取指定HTML表单数据的基本方法。
案例知识要点:HTML页面中指定表单元素名称、Servlet根据名称读取表单元素、Servlet 把读取的两个表单元素的值以HTML列表的形式输出。
案例完成步骤:
1.打开webapps文件夹中保存第7章程序文件的文件夹chap07。
2.编写用户登录的HTML文件login.htm(详见chap07\login.htm)。
在创建表单的语句中指定由Login(步骤3创建的Servlet)进行处理。
<form name="form1" method="post" action="Login" onSubmit="return check()" > 3.编写读取login.htm表单中输入的用户名和密码的Servlet文件LoginServlet.java。
【程序代码】LoginServlet.java
【程序说明】
●第2行—第4行:引入相关包;
●第7行—第18行:重载doGet方法;
●第15行:设置响应的内容类型(这里为text/html),类似于page指令中的
ContentType属性;
●第10行:应用res.getWriter()构造输出对象out;
●第15行:应用req.getParameter("NAME")方法读取名称为“NAME”表单对象的值;
●第16行:应用req.getParameter("PWD")方法读取名称为“PWD”表单对象的值。
4.编译并部署LoginServlet。
5.配置web.xml文件。
在web.xml文件中添加以下内容:
<servlet>
<servlet-name>Login</servlet-name>
<display-name>Login</display-name>
<description>Login Servlet</description>
<servlet-class>myservlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
5.启动Tomcat服务器后,在IE的地址栏中输入http://localhost:8080/chap07/login.htm后,输入用户名为liujin,密码为liujin,如图13-2所示。
单击【提交】按钮后,运行结果如图13-3所示。
图13-2 login.htm运行结果
图13-3 LoginServlet运行结果
说明
●如果在运行Servlet时出现以下错误:“HTTP Status 405 - HTTP method POST is not
supported by this URL”,请首先检查Servlet中的方法(doGet/doPost)是否与数据提交的方法一致。
然后再检查web.xml文件是否书写正确;
●Servlet也通过标准输入读取POST数据,即在HttpServletRequest上调用getReader或者
getInputStream,这种方法适合于上载文件,或者POST数据是通过专门的客户程序而不是HTML表单发送的情况。
并且如果用这种方法读取POST数据时,不能再用getParameter来读取这些数据。