Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14442017
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:35:13

下载本文示例代码
 ?ervlets是JAVA 2.0中新增的一个全新功能, Servlets是一种采用JAVA技术来实现CGI功能的一种技术。Servlet和CGI一样都是运行在WEB服务器上,用来生成WEB页面。 一、JAVA Servlets为什么优于传统的CGI   JAVA Servlets比传统的CGI或其它CGI类似替代技术来说,效率更高,使用更方便,功能更强大,更小巧也更便宜: 1)效率,传统CGI对每一个HTTP请求都要产生一个新的进程。如果某个CGI程序是一个执行非常快的操作,打开进程的时间也许占用了大部分执行时间。而对JAVA Servlets来说,在JAVA 虚拟机上,每一个请求由一个‘小’JAVA线程(thread)响应,而不是一个`大`操作系统进程。类似地,传统CGI如果对同一个CGI程序有N个同时请求,这个CGI程序的代码将被导入内存N次。JAVA Servlets 产生N个线程,但只有一个JAVA Servlets CLASS的copy。同时JAVA Servlets比CGI有更多的优化选择,象预先计算,打开数据库连接等。 2)方便,JAVA Servlets能自动的粘贴和解码HTML表单数据,读和设置HTTP头,处理COOKIES,跟踪SESSIONS,等其它大量功能。 3)强大的功能,JAVA Servlets可以很容易的实现对CGI来说是不可能或很困难的事务。JAVA Servlets能直接和服务器进行通讯而CGI是不能的。 4)JAVA Servlets之间能共享数据,很容易实现诸如数据库连接池。它能方便的实现管理从REQUEST到REQUEST请求,简化SESSION和获取前一页面。而CGI之间通讯差,由于每个CGI程序的调用都开始一个新的进程,调用间通讯通常要通过文件进行,因而相当缓慢。同一台服务器上的不同CGI程序之间的通讯也相当麻烦。 5)调用时间:CGI程序是作为单独过程运行的,通常调用时间较长,这个间接成本在每次调用的时候都要发生。在使用解释器的时候调用时间会更长。而内存中的servlet可以非常迅速地加载。 6)安全:有些CGI版本有明显的安全弱点。即使是使用最新的标准和PERL等语言,系统也没有基本安全框架,而要靠一组事实上的规则。而java定义有完整的安全机制,包括ssl,ca认证,安全政策等规范。 7)小巧,JAVA Servlets使用JAVA编写,遵循标准API。它能直接或借助插件在几乎所有WEB服务器上运行。 8)价格低,显然,有很多都是FREE。 Servlet的一些应用范围: 1) 用于处理HTML表单:通过HTTP产生POSTed数据,包括买卖订单或信用卡数据。因此 vlet可以成为订单处理系统的一部分,和产品存货数据库一道工作,也许可以用在在线支付系统上。 2)允许人们之间的合作:一个servlet能并发处理多个请求;他们可以使用在诸如在线会议这样的同步请求支持系统。 3) 转送请求:Servlet可以转送请求给其他的服务器和servlets。这就允许在镜象同样内容的几个服务器之间平衡负载。按照任务类型或组织范围,可以允许被用来在几个服务器中划分逻辑上的服务器。 4) servlet 编写者们可以定义彼此之间共同工作的激活代理,每个代理者是一个servlet,而且代理者能够在他们之间传送数据。 二、Servlet的结构   在具体掌握servlet之前,须对java语言有所了解。下面是基于您了解java基础上的,在Servlet API中最重要的是Servlet interface. 所有的servlets implement(执行)这个interface, 方式多种:或者是直接的,或者通过扩展类(class)执行它,如 HttpServlet。 这个Servlet interface 提供安排servlet与客户端联系的方法. Servlet 编写者可以在他们开发 servlet程序时提供更多一些或所有的这样方法.   当一个servlet接收来自客户端的调用请求, 它接收两个对象: 一个是ServletRequest,另外一个是ServletResponse. 这个ServletRequest类概括从客户端到服务器之间的联系, 而 ServletResponse类概括从servlet返回客户端的联系.   ServletRequest interface 可以获取到这样一些信息如由客户端传送的阐述名称,客户端正在使用的协议, 产生请求并且接收请求的服务器远端主机名. 它也提供获取数据流的servlet, ServletInputStream, 这些数据是客户端引用中使用HTTP POST 和 PUT 方法递交的. 一个ServletRequest的子类可以让 servlet获取更多的协议特性数据. 例如: HttpServletRequest 包含获取 HTTP-specific头部信息的方法.   ServletResponse interface 给出相应客户端的servlet方法. 它允许servlet 设置内容长度和回应的mime类型, 并且提供输出流, ServletOutputStream, 通过编写者可以发回相应数据. ServletResponse子类可以给出更多 protocol-specific容量的信息。 例如: HttpServletResponse 包含允许servlet 操作HTTP-specific头部信息的方法.   上面有关类和 interfaces描述构成了一个基本的Servlet框架. HTTP servlets有一些附加的可以提供session-tracking capabilities的方法. servlet编写者可以用这些API在有他人操作时维护servlet与客户端之间的状态. 三、Servlet的接口   Servlet 从javax包的httpservlet类扩展,在HttpServlet中加入了一些附加的方法,这些方法可以被协助处理HTTP 基本请求的HttpServlet类中的方法service自动地调用。这些方法有: doGet 用来处理HTTP的GET请求。   这个GET操作仅仅允许客户从HTTP server上"取得"(GET)资源。重载此方法的用户自动允许支持方法HEAD。这个GET操作被认为是安全的,没有任何的负面影响,对用户来说是很可靠的。比如,大多数的正规查询都没有副作用。打算改变存储数据的请求必须用其他的HTTP方法。这要求方法也必须是个安全的操作。方法doGet的缺省执行将返回一个HTTP的BAD_REQUEST错误。 方法doGet的格式: protected void doGet(HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doPost 用来处理HTTP的POST请求。   这个POST操作包含了在必须通过此servlet执行的请求中的数据。由于它不能立即取得资源,故对于那些涉及到安全性的用户来说,通过POST请求操作会有一些副作用。   方法doPost的缺省执行将返回一个HTTP的BAD_REQUEST错误。当编写servlet时,为了支持POST操作必须在子类HttpServlet中实现(implement)此方法。 此方法的格式: protected void doPost(HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doPut用来处理HTTP的PUT请求。   此PUT操作模拟通过FTP发送一个文件。对于那些涉及到安全性的用户来说,通过PUT请求操作也会有一些副作用。 此方法的格式: protected void doPut(HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doDelete用来处理HTTP的DELETE请求。   此操作允许客户端请求一个从server移出的URL。对于那些涉及到安全性的用户来说,通过DELETE请求操作会有一些副作用。 方法doDelete的缺省执行将返回一个HTTP的BAD_REQUEST错误。当编写servlet时,为了支持DELETE操作,必须在子类HttpServlet中实现(implement)此方法。 此方法的格式: protected void doDelete (HttpServletResquest request, HttpServletResponse response) throws ServletException,IOException; doHead 用来处理HTTP的HEAD请求。   缺省地,它会在无条件的GET方法执行时期中运行,但是不返回任何数据到客户端。只返回包含内容信息的长度的header。由于用到GET操作,此方法应该是很安全的(没有副作用)也是可重复使用的。此方法的缺省实现(implement)自动地处理了HTTPDE的HEAD操作并且不需要通过一个子类实现(implement)。 此方法的格式: protected void doHead (HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doOptions用来处理HTTP的OPTIONS请求。   此操作自动地决定支持什么HTTP方法。比如说,如果一个servlet的作者创建HttpServlet的子类并重载方法doGet,然后方法doOptions会返回下面的header: Allow:GET,HEAD,TRACE,OPTIONS 一般不需要重载方法doOptions。 此方法的格式: protected void doOptions (HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doTrace用来处理HTTP的TRACE请求。 此方法的缺省执行产生一个包含所有在trace请求中的herder的信息的应答(response)。 在开发servlet时,多数情况下需要重载此方法。 此方法的格式: protected void doTrace (HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; 在开发以HTTP为基础的servlet中,Servlet开发者关心方法doGet和方法doPost即可。 四、Servlet的生命周期   如果你写过java的小应用程序(Apple),那Servlet对你来说就不会太难,SZ更为简单因为Servlet不用考虑图形界面的应用,而与小应用程序一样,Servlet与有一个生命周期。Servlet的生命周期是当服务器装载运行servlets:接收来自客户端的多个请求并且返回数据给客户端. 然后在删除移开servlets.下面详细描述如下: 1)初始化时期   当一个服务器装载servlet时, 它运行servlet的 init() 方法. public void init(ServletConfig config) throws ServletException { super.init(); //一些初始化的操作,如数据库的连接 }   需要记住的是一定要在init()结束时调用super.init().init()方法不能反复调用,一旦调用就是重装载servlet. 直到服务器调用destroy方法卸载servlet后才能再调用. 2)Servlet的执行时期   在服务器装载初始化servlet后, servlet就能够处理客户端的请求. 用 service 方法做到这一点. 每个客户端请求有它自己service方法: 这些方法接收客户端请求, 并且发回相应的响应.Servlets能同时运行多个service. 这是很重要的, 这样, service方法可以按一个thread-safe 样式编写. 如:service方法更新servlet对象中的一个字段field, 这个字段可以同时存取的. 假如某个服务器不能同时并发运行 service方法,也可以用SingleThreadModel interface. 这个 interface 保证不会有两个以上的线程threads并发运行. 在Servlet执行期间其最多的应用是处理客户端的请求并产生一个网页。其代码如下: PrintWriter out = response.getWriter(); out.println("$#@60;html$#@62;"); out.println("$#@60;head$#@62;$#@60;title$#@62;"# Servlet $#@60;/title$#@62;$#@60;/head$#@62;"); out.println("$#@60;body$#@62;"); out.println("Hello World"); out.println("$#@60;/body$#@62;$#@60;/html$#@62;"); out.close(); 3)Servlet结束时期   Servlets一直运行到他们被服务器卸载。在结束的时需地收回在init()方法中使用的资源,在Servlet中是通过destory()方法来实现的。 public void destroy() { //回收在init()中启用的资源,如关闭数据库的连接等。 } 五、Servlet应用实例   现在我们来一个简单的例子来说明Servlet的应用,其完全成的功能是读取表单的内容并输出到浏览器上。 test.html test.java $#@60;html$#@62; $#@60;title$#@62;表单应用例子$#@60;/title$#@62; $#@60;meta http-equiv="Content-Type" content="text/html;charset=gb2312"$#@62; $#@60;/head$#@62; $#@60;body bgcolor="#FFFFFF"$#@62; $#@60;form method="post" action="\servlet\test"$#@62; $#@60;p$#@62;姓名: $#@60;input type="text" name="name"$#@62; $#@60;/p$#@62; $#@60;p$#@62; Email: $#@60;input type="text" name="email"$#@62; $#@60;/p$#@62; $#@60;p$#@62;意见: $#@60;textarea name="yj"$#@62;$#@60;/textarea$#@62; $#@60;/p$#@62; $#@60;p$#@62; $#@60;input type="submit" name="Submit" value="发送"$#@62; $#@60;/p$#@62; $#@60;/form$#@62; $#@60;/body$#@62; $#@60;/html$#@62; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class test extends HttpServlet { private DBConnectionManager connMgr; //Initialize global variables public void init(ServletConfig config) throws ServletException { super.init(config); } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); String name=request.getParameter("name"); String mail=request.getParameter("mail"); ServletOutputStream out=response.getOutputStream (); out.println("$#@60;html$#@62;"); out.println("$#@60;head$#@62;$#@60;title$#@62;servlet表单应用例子$#@60;/title$#@62;$#@60;/head$#@62;"); out.println("$#@60;body$#@62;"); out.println(name); out.println("$#@60;br$#@62;"); out.println(mail); out.println("$#@60;/body$#@62;$#@60;/html$#@62;"); out.close(); } //Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } public void destroy() { } }   把test.html放入web服务器的根目录下,而test.java 这个servlet编译成class后一般都放在web服务器的class目录下,在resin中是放在doc\WEB-INF\classes目录下,而resin能在运行时自动编译,报所以直接报test.java 放在doc\WEB-INF\classes目录下即可。  ?ervlets是JAVA 2.0中新增的一个全新功能, Servlets是一种采用JAVA技术来实现CGI功能的一种技术。Servlet和CGI一样都是运行在WEB服务器上,用来生成WEB页面。 一、JAVA Servlets为什么优于传统的CGI   JAVA Servlets比传统的CGI或其它CGI类似替代技术来说,效率更高,使用更方便,功能更强大,更小巧也更便宜: 1)效率,传统CGI对每一个HTTP请求都要产生一个新的进程。如果某个CGI程序是一个执行非常快的操作,打开进程的时间也许占用了大部分执行时间。而对JAVA Servlets来说,在JAVA 虚拟机上,每一个请求由一个‘小’JAVA线程(thread)响应,而不是一个`大`操作系统进程。类似地,传统CGI如果对同一个CGI程序有N个同时请求,这个CGI程序的代码将被导入内存N次。JAVA Servlets 产生N个线程,但只有一个JAVA Servlets CLASS的copy。同时JAVA Servlets比CGI有更多的优化选择,象预先计算,打开数据库连接等。 2)方便,JAVA Servlets能自动的粘贴和解码HTML表单数据,读和设置HTTP头,处理COOKIES,跟踪SESSIONS,等其它大量功能。 3)强大的功能,JAVA Servlets可以很容易的实现对CGI来说是不可能或很困难的事务。JAVA Servlets能直接和服务器进行通讯而CGI是不能的。 4)JAVA Servlets之间能共享数据,很容易实现诸如数据库连接池。它能方便的实现管理从REQUEST到REQUEST请求,简化SESSION和获取前一页面。而CGI之间通讯差,由于每个CGI程序的调用都开始一个新的进程,调用间通讯通常要通过文件进行,因而相当缓慢。同一台服务器上的不同CGI程序之间的通讯也相当麻烦。 5)调用时间:CGI程序是作为单独过程运行的,通常调用时间较长,这个间接成本在每次调用的时候都要发生。在使用解释器的时候调用时间会更长。而内存中的servlet可以非常迅速地加载。 6)安全:有些CGI版本有明显的安全弱点。即使是使用最新的标准和PERL等语言,系统也没有基本安全框架,而要靠一组事实上的规则。而java定义有完整的安全机制,包括ssl,ca认证,安全政策等规范。 7)小巧,JAVA Servlets使用JAVA编写,遵循标准API。它能直接或借助插件在几乎所有WEB服务器上运行。 8)价格低,显然,有很多都是FREE。 Servlet的一些应用范围: 1) 用于处理HTML表单:通过HTTP产生POSTed数据,包括买卖订单或信用卡数据。因此 vlet可以成为订单处理系统的一部分,和产品存货数据库一道工作,也许可以用在在线支付系统上。 2)允许人们之间的合作:一个servlet能并发处理多个请求;他们可以使用在诸如在线会议这样的同步请求支持系统。 3) 转送请求:Servlet可以转送请求给其他的服务器和servlets。这就允许在镜象同样内容的几个服务器之间平衡负载。按照任务类型或组织范围,可以允许被用来在几个服务器中划分逻辑上的服务器。 4) servlet 编写者们可以定义彼此之间共同工作的激活代理,每个代理者是一个servlet,而且代理者能够在他们之间传送数据。 二、Servlet的结构   在具体掌握servlet之前,须对java语言有所了解。下面是基于您了解java基础上的,在Servlet API中最重要的是Servlet interface. 所有的servlets implement(执行)这个interface, 方式多种:或者是直接的,或者通过扩展类(class)执行它,如 HttpServlet。 这个Servlet interface 提供安排servlet与客户端联系的方法. Servlet 编写者可以在他们开发 servlet程序时提供更多一些或所有的这样方法.   当一个servlet接收来自客户端的调用请求, 它接收两个对象: 一个是ServletRequest,另外一个是ServletResponse. 这个ServletRequest类概括从客户端到服务器之间的联系, 而 ServletResponse类概括从servlet返回客户端的联系.   ServletRequest interface 可以获取到这样一些信息如由客户端传送的阐述名称,客户端正在使用的协议, 产生请求并且接收请求的服务器远端主机名. 它也提供获取数据流的servlet, ServletInputStream, 这些数据是客户端引用中使用HTTP POST 和 PUT 方法递交的. 一个ServletRequest的子类可以让 servlet获取更多的协议特性数据. 例如: HttpServletRequest 包含获取 HTTP-specific头部信息的方法.   ServletResponse interface 给出相应客户端的servlet方法. 它允许servlet 设置内容长度和回应的mime类型, 并且提供输出流, ServletOutputStream, 通过编写者可以发回相应数据. ServletResponse子类可以给出更多 protocol-specific容量的信息。 例如: HttpServletResponse 包含允许servlet 操作HTTP-specific头部信息的方法.   上面有关类和 interfaces描述构成了一个基本的Servlet框架. HTTP servlets有一些附加的可以提供session-tracking capabilities的方法. servlet编写者可以用这些API在有他人操作时维护servlet与客户端之间的状态. 三、Servlet的接口   Servlet 从javax包的httpservlet类扩展,在HttpServlet中加入了一些附加的方法,这些方法可以被协助处理HTTP 基本请求的HttpServlet类中的方法service自动地调用。这些方法有: doGet 用来处理HTTP的GET请求。   这个GET操作仅仅允许客户从HTTP server上"取得"(GET)资源。重载此方法的用户自动允许支持方法HEAD。这个GET操作被认为是安全的,没有任何的负面影响,对用户来说是很可靠的。比如,大多数的正规查询都没有副作用。打算改变存储数据的请求必须用其他的HTTP方法。这要求方法也必须是个安全的操作。方法doGet的缺省执行将返回一个HTTP的BAD_REQUEST错误。 方法doGet的格式: protected void doGet(HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doPost 用来处理HTTP的POST请求。   这个POST操作包含了在必须通过此servlet执行的请求中的数据。由于它不能立即取得资源,故对于那些涉及到安全性的用户来说,通过POST请求操作会有一些副作用。   方法doPost的缺省执行将返回一个HTTP的BAD_REQUEST错误。当编写servlet时,为了支持POST操作必须在子类HttpServlet中实现(implement)此方法。 此方法的格式: protected void doPost(HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doPut用来处理HTTP的PUT请求。   此PUT操作模拟通过FTP发送一个文件。对于那些涉及到安全性的用户来说,通过PUT请求操作也会有一些副作用。 此方法的格式: protected void doPut(HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doDelete用来处理HTTP的DELETE请求。   此操作允许客户端请求一个从server移出的URL。对于那些涉及到安全性的用户来说,通过DELETE请求操作会有一些副作用。 方法doDelete的缺省执行将返回一个HTTP的BAD_REQUEST错误。当编写servlet时,为了支持DELETE操作,必须在子类HttpServlet中实现(implement)此方法。 此方法的格式: protected void doDelete (HttpServletResquest request, HttpServletResponse response) throws ServletException,IOException; doHead 用来处理HTTP的HEAD请求。   缺省地,它会在无条件的GET方法执行时期中运行,但是不返回任何数据到客户端。只返回包含内容信息的长度的header。由于用到GET操作,此方法应该是很安全的(没有副作用)也是可重复使用的。此方法的缺省实现(implement)自动地处理了HTTPDE的HEAD操作并且不需要通过一个子类实现(implement)。 此方法的格式: protected void doHead (HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doOptions用来处理HTTP的OPTIONS请求。   此操作自动地决定支持什么HTTP方法。比如说,如果一个servlet的作者创建HttpServlet的子类并重载方法doGet,然后方法doOptions会返回下面的header: Allow:GET,HEAD,TRACE,OPTIONS 一般不需要重载方法doOptions。 此方法的格式: protected void doOptions (HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; doTrace用来处理HTTP的TRACE请求。 此方法的缺省执行产生一个包含所有在trace请求中的herder的信息的应答(response)。 在开发servlet时,多数情况下需要重载此方法。 此方法的格式: protected void doTrace (HttpServletResquest request, HttpServletResponse response) throws ServletException, IOException; 在开发以HTTP为基础的servlet中,Servlet开发者关心方法doGet和方法doPost即可。 四、Servlet的生命周期   如果你写过java的小应用程序(Apple),那Servlet对你来说就不会太难,SZ更为简单因为Servlet不用考虑图形界面的应用,而与小应用程序一样,Servlet与有一个生命周期。Servlet的生命周期是当服务器装载运行servlets:接收来自客户端的多个请求并且返回数据给客户端. 然后在删除移开servlets.下面详细描述如下: 1)初始化时期   当一个服务器装载servlet时, 它运行servlet的 init() 方法. public void init(ServletConfig config) throws ServletException { super.init(); //一些初始化的操作,如数据库的连接 }   需要记住的是一定要在init()结束时调用super.init().init()方法不能反复调用,一旦调用就是重装载servlet. 直到服务器调用destroy方法卸载servlet后才能再调用. 2)Servlet的执行时期   在服务器装载初始化servlet后, servlet就能够处理客户端的请求. 用 service 方法做到这一点. 每个客户端请求有它自己service方法: 这些方法接收客户端请求, 并且发回相应的响应.Servlets能同时运行多个service. 这是很重要的, 这样, service方法可以按一个thread-safe 样式编写. 如:service方法更新servlet对象中的一个字段field, 这个字段可以同时存取的. 假如某个服务器不能同时并发运行 service方法,也可以用SingleThreadModel interface. 这个 interface 保证不会有两个以上的线程threads并发运行. 在Servlet执行期间其最多的应用是处理客户端的请求并产生一个网页。其代码如下: PrintWriter out = response.getWriter(); out.println("$#@60;html$#@62;"); out.println("$#@60;head$#@62;$#@60;title$#@62;"# Servlet $#@60;/title$#@62;$#@60;/head$#@62;"); out.println("$#@60;body$#@62;"); out.println("Hello World"); out.println("$#@60;/body$#@62;$#@60;/html$#@62;"); out.close(); 3)Servlet结束时期   Servlets一直运行到他们被服务器卸载。在结束的时需地收回在init()方法中使用的资源,在Servlet中是通过destory()方法来实现的。 public void destroy() { //回收在init()中启用的资源,如关闭数据库的连接等。 } 五、Servlet应用实例   现在我们来一个简单的例子来说明Servlet的应用,其完全成的功能是读取表单的内容并输出到浏览器上。 test.html test.java $#@60;html$#@62; $#@60;title$#@62;表单应用例子$#@60;/title$#@62; $#@60;meta http-equiv="Content-Type" content="text/html;charset=gb2312"$#@62; $#@60;/head$#@62; $#@60;body bgcolor="#FFFFFF"$#@62; $#@60;form method="post" action="\servlet\test"$#@62; $#@60;p$#@62;姓名: $#@60;input type="text" name="name"$#@62; $#@60;/p$#@62; $#@60;p$#@62; Email: $#@60;input type="text" name="email"$#@62; $#@60;/p$#@62; $#@60;p$#@62;意见: $#@60;textarea name="yj"$#@62;$#@60;/textarea$#@62; $#@60;/p$#@62; $#@60;p$#@62; $#@60;input type="submit" name="Submit" value="发送"$#@62; $#@60;/p$#@62; $#@60;/form$#@62; $#@60;/body$#@62; $#@60;/html$#@62; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class test extends HttpServlet { private DBConnectionManager connMgr; //Initialize global variables public void init(ServletConfig config) throws ServletException { super.init(config); } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); String name=request.getParameter("name"); String mail=request.getParameter("mail"); ServletOutputStream out=response.getOutputStream (); out.println("$#@60;html$#@62;"); out.println("$#@60;head$#@62;$#@60;title$#@62;servlet表单应用例子$#@60;/title$#@62;$#@60;/head$#@62;"); out.println("$#@60;body$#@62;"); out.println(name); out.println("$#@60;br$#@62;"); out.println(mail); out.println("$#@60;/body$#@62;$#@60;/html$#@62;"); out.close(); } //Process the HTTP Post request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } public void destroy() { } }   把test.html放入web服务器的根目录下,而test.java 这个servlet编译成class后一般都放在web服务器的class目录下,在resin中是放在doc\WEB-INF\classes目录下,而resin能在运行时自动编译,报所以直接报test.java 放在doc\WEB-INF\classes目录下即可。 下载本文示例代码


JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介JAVA Servlets简介
阅读(113) | 评论(0) | 转发(0) |
0

上一篇:JSP中JavaBean的应用

下一篇:JSP简介(二)

给主人留下些什么吧!~~