1.Servlet教程之一个简单的Servlet--发生存文本下面是一个发生存文本的简单servlet实例。
HelloWorld.java
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassHelloWorldextendHttpServlet{
HttpServletResponsrespons publicvoiddoGetHttpServletRequestrequest.
IOException{ throwServletException.
PrintWritout=response.getWrit;
out.println"HelloWorld";
}
}
装置servlet方法会因web服务器不同而不同。详细请参考您使用的web服务器所带的装置文档。JavaWeb服务器即JavaWebServerJWS2.0上带有联机实例。JWS里,注意。servlet顺序必需JWS放在装置目录的servlet目录下才能运行。如果web服务器由多人使用并且没有好的虚拟服务器的下层结构来自动避免冲突,也可以像我一样在servlet目录下创建一个独立包(取名叫hall即在servlet目录下创建一个hall子目录,并把你写的servlet放在该目录下。这里我把HelloWorld.java放在hall目录下。其他大多数服务器的装置都大同小异,本教程的servlet和JSP例子都在BEA Weblog和IBMWebSpher3.0测试通过。其中WebSpher对于虚拟服务器有一套优秀的机制,所以没有必要为了名字的抵触而单独使用包。
那么有两种在包内编译类文件的方法可以使用。如果你以前从未用过包。
2.Servlet教程之Servlet基础结构
关于处置表单提交我将在后面几部分谈到下面我来谈谈处置用户GET请求的最简单的servlet框架。GET请求就是用户在浏览器的地址栏里输入一个地址、网页上点击连接或发生一个没有定义方法的HTML表单后产生的请求。Servlet还能轻松处置表单的提交(POST.
importjava.io.*;
importjavax.servlet.*;
importjavax.servlet.http.*;
publicclassSomeServletextendHttpServlet{
publicvoiddoGet
HttpServletRequestrequest.
HttpServletResponsrespons
IOException{ throwServletException.
//用 "request"读取http信息头(如cooki
//和HTML表单数据 如用户输入和提交的数据)
//用"response"指定http响应 和http信息头
//如指明信息的类型、设定cooki.
PrintWritout=response.getWrit;
//用 "out"输出内容到浏览器
}}
servlet都要用到HttpServlet扩展类。这些方法可分为两类:HttpServletRequest和HttpServletResponsHttpServletRequest含有获得表单数据、HTTP信息头等信息的方法。HttpServletRespons则包含指明HTTP响应 200,不论是用doGet还是doPost方法。404,等。信息头(Content-Type,Set-Cookie,等。方法,更重要的能使用PrintWrit方法向客户端输出信息。注意doGet和doPost方法会抛出两个异常,所以必需在定义里包含他要用到PrintWritHttpServlet和HttpServletRequestHttpServletRespons方法还必需分别引入java.iojavax.servlet和javax.servlet.http一般来说,doGet和doPost被servic方法调用的但有时候你可能想越过servic方法而直接使用自己定义的servic方法,比如定义一个既能处理GET也能处理POST请求的servlet
这样就可以在该目录下正常编译。举个例子,如果你Window下的servlet目录是C:JavaWebServerservlet包名(即子目录)hall,一种方法就是CLA SSPA TH里设置好指向包括有你servlet文件的目录。那么在do窗口设置如下:
DOS>setCCLA SSPA TH=C:JavaWebServerservlets;%CLA SSPA TH%,DOS>cdC:JavaWebServerservletshall,DOS>javacYourServlet.java免得以后每次都要重新打开一个do窗口。Window95/98系统下在autoexec.bat文件里加入"setCLA SSPA TH=..."表达式,第一步、设置路径。最好一步到位。将CLA SSPA TH指向servlet.jar和jsp.jarNT下,开始菜单-设置-控制面板,选择“系统”选择“环境”然后输入变量名和变量值。注意如果你包名是name1.name2.name3格式,还应该设置CLA SSPA TH指向包的顶层(即name1
然后执行"javacdirectoryYourServlet.java"注意Window下是反斜杆)或者unix下"javacdirectory/YourServlet.java"注意Unix下是正斜杆)再举个例子,第二种方法是转到包的上层目录。比方你window下的servlet目录是C:JavaWebServerservlet包名也就是子目录名是hall那么执行下列操作:
DOS>cdC:JavaWebServerservlets
DOS>javachallYourServlet.java
大部分JDK1.1版本的javac都要求反斜杆,注意Window下。后来在JDK1.2里得到修正,但是由于很多web服务器是根据JDK1.1来配的所以为了方便起见许多servlet作者还是坚持反斜杆。
javac-d选项可以用来指定将.class文件和源码文件放在不同的地方。
并通过 http://host/servlet/ServletName调用。注意这里的Servlet目录中的Servlet带有"s"而URL地址栏里的则没有。Servlet一般是放在JWS装置目录下的servlet目录下。所以这样调用:http://host/servlet/hall.HelloWorld其他服务器在Servlet放置目录和调用上可能会稍有不同。大部分服务器都允许你定义servlet目录的映射,上面的例子放在hall包里。因此一个servlet也可以通过http://host/any-path/any-file.html调用。具体得看不同服务器,详细可以检查服务器自带的文档。