Java Servlet的Web或应用程序服务器,并作为请求来自Web浏览器或其他HTTP客户端和HTTP服务器上的数据库或应用程序之间的中间层上运行的程序。
使用servlet,你可以收集来自用户的输入,通过网页形式,现在从数据库或其他来源的记录,并创建动态网页。
Java Servlet的服务程序使用公共网关接口(CGI)来实现同样的目的。但Servlet的与CGI相比提供了几个优点。
性能明显更好。
Servlet的执行的Web服务器的地址空间内。这不是必要创建一个单独的进程来处理每个客户端请求。
Servlet是与平台无关的,因为它们是用Java编写的。
在服务器上执行的Java安全管理器一组的限制,以保护服务器计算机上的资源。因此,Servlet是可信的。
Java类库的全部功能,是一个servlet。它可以与小应用程序,数据库或其他软件,你已经通过socket和RMI机制看到了。
下图显示了在Web应用程序的位置Servelts。
Java Servlet是运行的Web服务器上有一个解释器,支持Java Servlet规范的Java类。
Servlet可以使用在javax.servlet和javax.servlet.http包,这是一个标准的Java企业版的扩展版本的Java类库,它支持大型开发项目的一部分。
这些类实现Java Servlet和JSP规范。在写这篇在线教程的时候,该版本是Java Servlet 2.5和JSP 2.1。
就像任何其他的Java类,创建和编译Java servlet。在您安装的servlet包,并将它们添加到计算机上的类路径中,你可以与JDK的Java编译器或任何其他编译器编译servlet
这一步涉及到下载的Java软件开发工具包(SDK),并适当地设置PATH环境变量的实现。
您可以下载SDK从Sun的Java servlet的网站:http://java.sun.com/products/servlet/.
一旦您下载的Java实现,按照给定的说明来安装和配置的设置。最后,设置PATH和JAVA_HOME环境变量指向的目录,其中包含java和javac,通常分别为java_install_dir/bin和java_install_dir。
如果您运行的是Windows SDK安装在C:\ jdk1.5.0_20,则需要在C:\autoexec.bat文件添加下面一行。
set PATH=C:\jdk1.5.0_20\bin;%PATH% set JAVA_HOME=C:\jdk1.5.0_20
另外,在Windows NT/2000/XP中,您也可以右键单击“我的电脑”,选择“属性”,再“高级”,再“环境变量”。然后更新PATH的值,然后按“确定”按钮。
在Unix(Solaris和Linux等),如果SDK安装在/usr/local/jdk1.5.0_20,你使用的是C shell,你把下面的内容添加到.cshrc文件。
setenv PATH /usr/local/jdk1.5.0_20/bin:$PATH setenv JAVA_HOME /usr/local/jdk1.5.0_20
另外,如果你使用像Borland的JBuilder,Eclipse的IntelliJ IDEA的,或Sun ONE Studio集成开发环境(IDE),编译并运行一个简单的程序,应该让IDE知道你在哪里安装Java。
许多的Web服务器支持Servlet是可以在市场上。有些Web服务器是可自由下载和Tomcat是其中之一。
Apache Tomcat是一个开放源代码的Java Servlet和JavaServer Pages技术的软件实现,可以作为一个独立的服务器进行测试的Servlet,并可以集成到Apache Web服务器。下面是在你的机器上安装TOMCAT的步骤:
下载最新版本的Tomcat http://tomcat.apache.org/.
一旦你下载安装,解压缩的二进制分发到一个方便的位置。例如,在C:\apache-tomcat-5.5.29在Windows上,或/usr/local/apache-tomcat-5.5.29在Linux/ Unix和创建CATALINA_HOME环境变量指向这些安装的位置。
Tomcat可以开始通过Windows机器上执行下面的命令:
$CATALINA_HOME\bin\startup.bat or C:\apache-tomcat-5.5.29\bin\startup.bat
Tomcat可以启动UNIX(Solaris和Linux等)的机器上执行下面的命令:
$CATALINA_HOME/bin/startup.sh or /usr/local/apache-tomcat-5.5.29/bin/startup.sh
启动后,默认包含在Tomcat中的Web应用程序将可通过访问输入http://localhost:8080/。如果一切顺利,那么它应该显示以下结果:
有关配置和运行Tomcat的进一步信息包含在文档可以在这里找到,以及在Tomcat Web站点:http://tomcat.apache.org
停止Tomcat既可以通过Windows机器上执行下面的命令:
C:\apache-tomcat-5.5.29\bin\shutdown
Tomcat在Unix(Solaris和Linux等)机器停止可以执行下面的命令:
/usr/local/apache-tomcat-5.5.29/bin/shutdown.sh
由于servlet是不属于的Java平台标准版,必须确定Servlet类的编译器。
如果运行的是Windows,需要在C:\autoexec.bat文件中添加以下行。
set CATALINA=C:\apache-tomcat-5.5.29 set CLASSPATH=%CATALINA%\common\lib\servlet-api.jar;%CLASSPATH%
另外,在Windows NT/2000/XP中,您也可以右键单击“我的电脑”,选择“属性”,再“高级”,再选“环境变量”。然后将更新CLASSPATH的值,然后按“确定”按钮。
在Unix(Solaris和Linux等),如果使用的是C shell,你把下面的几行到.cshrc文件。
setenv CATALINA=/usr/local/apache-tomcat-5.5.29 setenv CLASSPATH $CATALINA/common/lib/servlet-api.jar:$CLASSPATH
注:假设你的开发目录是C:\ServletDevel(Windows)或/usr/ServletDevel(UNIX),那么你就需要在CLASSPATH中添加这些目录以及类似的方式,类似已经在上面添加一样。
下面是示例的源代码结构的一个servlet的例子: Hello World:
// Import required java libraries import java.io.*; import javax.servlet.*; import javax.servlet.http.*; // Extend HttpServlet class public class HelloWorld extends HttpServlet { private String message; public void init() throws ServletException { // Do required initialization message = "Hello World"; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); // Actual logic goes here. PrintWriter out = response.getWriter(); out.println("<h1>" + message + "</h1>"); } public void destroy() { // do nothing. } }
让我们在上面的代码中,编写HelloWorld.java文件,把这个文件放在C:\ServletDevel(窗口)或/usr/ServletDevel(UNIX),那么你将需要添加这些目录在CLASSPATH中。
假设你的环境是正确,进入ServletDevel目录和编译HelloWorld.java中如下设置:
$ javac HelloWorld.java
如果servlet依赖于任何其他库,你必须在你的CLASSPATH中包括JAR文件以及。我的servlet-api.jar只包括JAR文件,因为这里没有使用任何其他库中的Hello World程序。
此命令行使用内置的javac编译器附带的Sun Microsystems Java软件开发工具包(JDK)。为使此命令正常工作,必须包括您所使用的Java SDK的位置到PATH环境变量。
如果一切顺利,上面编译生成HelloWorld.class的文件在同一目录下。下一节将解释如何将部署在生产一个编译Servlet。
默认情况下,一个servlet的应用程序位于路径<Tomcat-installation-directory>/webapps /ROOT目录和类文件在<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes中。
如果有一个完全合格的类名称com.myorg.MyServlet,那么这个servlet类必须位于WEB-INF/classes/com/myorg/MyServlet.class中。
现在,让我们HelloWorld.class复制到<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes中,并在web.xml文件中创建以下条目在<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/
<servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping>
上面的条目要创建内部<web-app>...</ web应用程序>标签在web.xml文件中。有可能是在此表中的各个条目已经可以,但不要在意。
几乎已经完成了,现在让我们使用<Tomcat-installation-directory>\BIN\的startup.bat(在Windows上)或<Tomcat-installation-directory>/BIN/startup.sh(启动tomcat服务器上的Linux / Solaris等),最后在浏览器的地址框中输入http://localhost:8080/HelloWorld。如果一切顺利,你会得到下面的结果:
要详细的servlet,可以通过完全在线教程: Java Servlets.