Java Servlet应用step by step 不要被Java Servlet的名词吓倒，只要你有台安装了Windows 95/98的计算机，即使不会编程也能按照本文的步骤一步一步地开发一个简单的Java Serverlet程序，并能在此基础上作些小的修改以满足你的需求。本文所讲系统，可以直接在Internet上作简单应用，也可将程序不变地移植到实际Web系统中。 首先还是看一看Java Servlet能做些什么吧：它可以实现网页中很多交互式效果。我们将制作一张含有表格的网页，其他人通过浏览器访问该网页后便可以将相关信息如姓名、年龄等填进表格，然后点击"提交"按钮。这时在服务器上我们可以使用Java Servlet程序对用户提交的信息进行处理，并给用户一个反馈。Java Servlet程序的作用类似于CGI程序，但比CGI程序效率更高。
现在可以检查一下你的环境，本文尽力用普通读者所具有的环境来实现整个系统和功能，使普通读者也能领略Servlet开发的乐趣。
·一台PC机
·操作系统Windows 95/98
·具有IP地址(如果没有可以随便配一个，当然如果你能上网的话更好。)
·开发软件有两个：JDK 1.2和JSWDK 1.0.1
JDK1.2是传统的Java开发工具，有近20MB，在很多光盘上都可以得到，也可从http://java.sun.com/products/jdk/1.2/下载（从网上下载得到的是最新的Java 2 SDK）。
JSWDK 1.0.1只有745KB，可从在http://java.sun.com/products/jsp/download.html下载，找到该页面中的"JavaServer Web Development Kit"项，在"Download"后选择你的操作系统平台（如Windows 95/NT），点击"Continue"，在出现的页面中点击"Accept"接受协议，在接着出现的页面中便可以点击"FTP download"或"HTTP download"下载这个软件jswdk1_0_1-win.zip了。
有了开发工具，下面便可以开始工作了！

一、安装软件

运行JDK 1.2安装程序，缺省情况下将在C：\jdk1.2目录中安装好开发工具。
然后将下载下来的jswdk1_0_1-win.zip用Winzip软件解压缩至某个目录，如：D：\app，该目录下将自动建立一个子目录：jswdk-1.0.1。这时JSWDK 1.0.1便已经安装在d:\app\jswdk-1.0.1目录下了。

二、启动JSWDK 1.2

打开一个DOS窗口，点击窗口系统标题条左边的MS-DOS图标，在弹出的系统菜单中选择"属性"命令，或直接按菜单栏中的"属性"按钮。(如果你进入DOS状态是全屏幕的，你可以按Alt+Enter键，使其还原为窗口状态。）在接着出现的"属性"对话框中点击"内存"选项卡，在"初始环境"后的下拉菜单中将"自动"改为2816，点击"Exit"按钮返回DOS窗口。
在DOS窗口中运行如下DOS命令以设置环境变量：
set CLASSPATH=c:\jdk1.2\bin
set path=C:\jdk1.2\bin;c:\windows;c:\windows\command

【注意】如果你的JDK 1.2和Windows操作系统安装在其他目录，DOS命令中的目录名称应作相应修改。
然后在该DOS窗口中用CD命令进入JSWDK 1.0.1安装目录（如d:\app\jswdk-1.0.1）运行startserver.bat即可。这时会出现另一个DOS窗口，显示一串字符串，最后显示endpoint created：localhost/127.0.0.1:8080，表明正常启动完毕。
打开一个浏览器，输入：http://你的机器IP地址:8080，（如果你对IP地址不熟悉，也可直接输入：http://127.0.0.1:8080）。这时浏览器中显示出缺省的页面，在该页面中可查看Servlet例子（缺省页面其实是D:\app\jswdk-1.0.1\webpages\index.html文件）。
如果要关闭JSWDK，可在前面的DOS窗口中运行stopserver.bat。

三、编制最简单的Java Servlet程序

在前面的DOS窗口中输入命令以设置好环境变量：
set CLASSPATH=c:\jdk1.2\bin;d:\app\jswdk-1.0.1\lib\servlet.jar
然后用任意的文本编辑器输入如下文本：
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class mys extends HttpServlet
{
public void service(HttpServletRequest rq, HttpServletResponse rp)
throws ServletException,IOException
{
ServletOutputStream out=rp.getOutputStream();
out.println("hi ");
}
}
将上述文件用文本格式保存下来，文件名为mys，更改后缀为.java。这便是一个Java Servlet程序了，将其保存到某个目录，在前面的DOS窗口下进入保存该文件的目录，输入
javac mys.java
命令以编译程序，得到编译后的字节码文件mys.class。
该Java Servlet程序不能直接运行，需要通过Web方式来运行它。好在JSWDK中提供了运行环境，我们只要将环境配置一下就可以了。
在DOS窗口下执行下面的命令
copy mys.class D:\app\jswdk-1.0.1\examples\WEB-INF\servlets
将编译后的程序拷贝到Java Servlet运行目录。
为了运行该Java Servlet程序，需要修改一个文件：
D:\app\jswdk-1.0.1\examples\WEB-INF\servlets.properties
用文本编辑器打开该文件，在其最后加上两行：
mys.code=mys
mys.initparams=foo

这时，可以开始检验你的第一个Java Servlet程序了。打开你的浏览器，输入http://你的机器IP地址:8080/examples/servlet/mys。（同样如果你对IP地址不熟悉，也可直接输入：http://127.0.0.1:8080/examples/servlet/mys）
浏览器将显示Java Servlet的输出"hi"，表明成功！
以上是开发的基本步骤，下面我们可以对其中一些略作修改，以满足更多的要求。我们常需要改动的地方有：
1．public class mys中的mys可以修改为你所希望的各种字符串，如hello，first等。当然修改后前面的操作步骤中所有的mys字符串必须相应地改为新的字符串。
2．out.println("hi ");是一个输出语句，可以向浏览器输出各种字符串，根据你的需要可将其中的字符串改成任意的内容。也可使用多个out.println( )语句输出多条内容。同时可使用各种控制和循环语句相配合。

四、反馈HTML文档

上面的程序只是简单地将一串文本显示到用户的浏览器上，如果想在文本中加上HTML标签或将一个网页反馈给用户，使得反馈界面更加友好，可以将程序修改如下：
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class mys extends HttpServlet
{
public void service(HttpServletRequest rq, HttpServletResponse rp)
throws ServletException,IOException
{
response.setContentType("text/html");
ServletOutputStream out=rp.getOutputStream();
out.println("<h1> hi</h1> ");
}
}
该程序加了一条语句：response.setContentType("text/html");
这样，用out.println（ ）打印时便可以在其中的字符串中加上HTML控制标签，如该例子中使用<h1>标签使hi在用户浏览器上用1号标题格式显示。
以同前面的方法来运行该程序便可以看到其效果。值得一提的是，由于Servlet运行一次便驻留内存，因此现在这里用的仍然是mys名称，则需要先运行stopserver.bat关闭JSWDK，再运行一次startserver.bat重新启动JSWDK才可看到新的Servlet运行效果。

五、处理表单

Servlet真正有用之处在于它可以对用户在表单中填写的内容进行处理，并根据情况作出不同的反馈。
制作表单是属于网页制作的内容，不过即使你没做过网页，现在动手做一个简单的也并不复杂。不妨在文本编辑器中输入如下内容：
<form action=http://202.100.127.200:8080/examples/servlet/mys method=get>
输入姓名：<input type=text name=xx> <br>
输入年龄：<input type=text name=yy> <br>
<input type=submit value= "提交">
</form>
将其用文本方式保存到d:\app\jswdk-1.0.1\webpages目录中，文件名后缀必须更改为.HTM或.HTML，如文件名可以为：test.html。
用浏览器进入这个目录或直接输入http://127.0.0.1:8080/test.html或输入http://你的机器IP地址:8080/test.html打开这个文件，便可以看到输入姓名和年龄的表单，同时有个提交按钮。
该网页代码中，http://202.100.127.200:8080/examples/servlet/mys 是前面运行Servlet而在浏览器中输入的字符串，根据你的机器设置可将202.100.127.200改为你自己的机器IP地址，或直接改为：127.0.0.1。<input type=text name=xx>可以在浏览器中显示一个文本输入区域，为了在Serlvet中能够识别不同的文本输入区域，使用name=xx为其起了一个名字xx，你也可以不用xx作为名字而使用其它字符串。
表单制作做好后，再看一下如何在Servlet程序中处理用户提交的姓名和年龄信息。其程序如下：
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class mys extends HttpServlet
{
public void service(HttpServletRequest rq, HttpServletResponse rp) throws ServletException,IOException
{
rp.setContentType("text/html");
ServletOutputStream out=rp.getOutputStream();
out.println("Your name is "+rq.getParameter("xx"));
out.println(" Your age is "+rq.getParameter("yy"));
}
}
这里，用rq.getParameter("xx")得到用户在名称为:xx的输入区域中填写了什么内容，然后返回一个字符串，对返回的字符串可作各种处理。如写到文件中去、用作数据库查询、写入数据库、对字符串作判断或验证等。这里简单地将用"+"操作符将其和"Your name is"连接组成新的字符串，用out.println( )反馈给浏览器。
这样，用户在浏览器中输入xyx和27后，点击"提交"按钮，便会收到反馈：
Your name is xyx Your age is 27

六、分开处理get或post

前面制作的表单中第一句为:
<form action=http://202.100.127.200:8080/examples/servlet/mys method=get>
其中method=get主要用于向服务器发出少许信息，而由服务器反馈大量信息的场合。如果要从浏览器向服务器发出大量信息，则应该用method=post。
不管用method=get还是method=post，前面的Servlet程序都能处理，但如果想在一个Servlet程序中对method=get和method=post作不同处理，则可将前面程序中的service改成doGet或doPost。也可同时使用doGet或doPost，类似如下的程序结构：

public class mys extends HttpServlet
{
public void doGet(HttpServletRequest rq, HttpServletResponse rp)
throws ServletException,IOException
{
...
}
public void doPost(HttpServletRequest rq, HttpServletResponse rp)
throws ServletException,IOException
{
...
}
}

七、改变端口号

前面的例子中，在浏览器地址栏输入："http://IP地址"时都要跟上一个端口号"8080"，如果希望省略端口号，可将D:\app\jswdk-1.0.1\webserver.xml文件中的<Service id="service0">改为：
<Service id="service0" port="80">

八、换到自己的目录（安装新的Web应用）

前面输入http://202.100.127.200:8080/examples/servlet/mys运行Servlet程序时使用的是缺省的examples目录，如果想把你的Servlet程序放在其它目录，可在JSWDK安装目录如D:\app\jswdk-1.0.1下创建子目录如my，在DOS窗口中进入该子目录，执行
xcopy ..\examples\*.*/s
命令，将examples目录拷贝至自己的目录，然后修改D:\app\jswdk-1.0.1>下webserver.xml文件，在其原有的语句：
<WebApplication id="examples" mapping="/examples" docBase="examples"/>
下面增加一行：
<WebApplication id="my" mapping="/my" docBase="my"/>
执行stopserver.bat关闭JSWDK，再执行startserver重新启动，这时不仅可以将Servlet程序放在examples目录用"http://202.100-.127.200:8080/examples/servlet/程序名"来运行，而且可以放在my目录下用"http://202.100-.127.200:8080/my/servlet/程序名" 来运行。

(徐迎晓)