第三章 Java Servlet编程.doc
文本预览下载声明
第三章 Java Servlet编程
本章要点
本章重点介绍Java Web编程中的Servlet编程。读者如果熟练掌握了Servlet编程,对于后面的JSP编程,会达到事半功倍的效果。
3.1 Servlet基础知识
Servlet是运行在Web服务器或者其他应用服务器(Application Server)上的一种特殊的Java程序。首先它和其他的Java程序一样编写、编译,它的特殊点在于,Servlet必须继承Servlet类或者是它的子类,通常是HttpServlet这个类,本书也是如此。
如果读者曾经写过CGI程序或者ASP等程序,那么将会更容易的了解Servlet(以及JSP):它就是用于在服务器端动态生成网页内容的应用程序。它接受一个客户端(一般是浏览器比如Microsoft IE或者Netscape Navigator)的请求,读取从客户端发送过来的数据,然后,根据这些发送过来的数据去访问数据库等其他应用程序,最后产生结果返回给客户端。图3-1描绘了JSP/Servlet在这种Web-Based应用中的地位,它处于图中的Web服务器端。
图3-1 Servlet/JSP的地位
3.2 编写第一个简单的Servlet程序
下面我们来编写第一个Servlet程序,我们通过这个简单的程序来分析一下Servlet编程的基本框架。这个程序很简单,就是当客户端连接到这个Servlet程序时,自动产生当前时间,并返回给客户端。
下面我们首先来看这个程序: 示例3-1:第一个Servlet程序
源文件:HelloWorld.java
package chap03;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Date;
public class HelloWorld extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
PrintWriter out = response.getWriter();
out.println(new Date());
}
}
我们来分析一下这个程序。从这个程序中可以看出,它引入了java.servlet和java.servlet.http这两个包,这两个包不是J2SE中的内容,而是J2EE中的,需要将servlet相应的包加入到CLASSPATH设置中,这样才能在命令行中使用javac来编译它。在这个程序中,我们让HelloWorld这个类继承了HttpServlet,并且覆盖了HttpServlet中的doGet()方法,使得它可以处理客户端的GET方式的请求,我们已经在第一章中对浏览器中的提交方式做了说明,在这里,我们直接在浏览器中输入地址来访问此Servlet资源,属于使用GET方式访问。在doGet()方法中有两个参数:HttpServletRequest和HttpServletResponse,这两个参数分别用于表示客户端的请求和服务器端的响应。通过HttpServletRequest,可以从客户端中获得很多客户端发送过来的信息,而通过HttpServletResponse,我们可以让服务器端对客户端(比如:浏览器)做出响应,最常用的就是向客户端发送信息。关于这两个参数,我们在后续的内容中还会细述。
现在我们首先通过命令行来编译这个类,并且需要将编译好的class文件放入到第一章设置好的目录中去,比如c:\JavaWebExam\WEB-INF\classes\,将chap03这个目录拷贝到上面的目录中。然后,为了能够从客户端浏览器访问到这个Servlet程序,必须进行一些配置:
3.2.1 配置servlet invoker
如果你希望每次新增一个Servlet的时候,可以直接使用servlet 调用器(servlet invoker)来调用它,则必须在Tomcat中将servlet调用器启用。可以通过如下的方式来启用:打开Tomcat安装目录/conf下的web.xml,找到下面这段代码:
!--
servlet
servlet-nameinvoker/servlet-name
servlet-class
org.apache.catalina.servlets.InvokerServlet
/servlet-class
init-par
显示全部