调用Servlet的多种方法浅析 |
本文标签:调用Servlet 要调用Servlet或Web应用程序,请使用下列任一种方法:由URL调用Servlet、在﹤FORM﹥标记中调用Servlet、在﹤SERVLET﹥标记中调用Servlet、在JSP文件中调用Servlet、在ASP文件中调用Servlet 。 1.由URL调用Servlet 这里有两种用Servlet的URL从浏览器中调用该Servlet的方法: (1)指定Servlet名称:当用WebSphere应用服务器管理器来将一个Servlet实例添加(注册)到服务器配置中时,必须指定“Servlet名称”参数的值 。例如,可以指定将hi作为HelloWorldServlet的Servlet名称 。要调用该Servlet,需打开http://your.server.name/servlet/hi 。也可以指定Servlet和类使用同一名称(HelloWorldServlet) 。在这种情况下,将由http://your.server.name/servlet/HelloWorldServlet来调用Servlet的实例 。 (2)指定Servlet别名:用WebSphere应用服务器管理器来配置Servlet别名,该别名是用于调用Servlet的快捷URL 。快捷URL中不包括Servlet名称 。 2.在﹤FORM﹥标记中指定调用Servlet 可以在﹤FORM﹥标记中调用Servlet 。HTML格式使用户能在Web页面(即从浏览器)上输入数据,并向Servlet提交数据 。例如:
ACTION特性表明了用于调用Servlet的URL 。关于METHOD的特性,如果用户输入的信息是通过GET方法向Servlet提交的,则Servlet必须优先使用doGet()方法 。反之,如果用户输入的信息是通过POST方法向Servlet提交的,则Servlet必须优先使用doPost()方法 。使用GET方法时,用户提供的信息是查询字符串表示的URL编码 。无需对URL进行编码,因为这是由表单完成的 。然后URL编码的查询字符串被附加到ServletURL中,则整个URL提交完成 。URL编码的查询字符串将根据用户同可视部件之间的交互操作,将用户所选的值同可视部件的名称进行配对 。例如,考虑前面的HTML代码段将用于显示按钮(标记为AM和FM),如果用户选择FM按钮,则查询字符串将包含name=value的配对操作为broadcast=fm 。因为在这种情况下,Servlet将响应HTTP请求,因此Servlet应基于HttpServlet类 。Servlet应根据提交给它的查询字符串中的用户信息使用的GET或POST方法,而相应地使用doGet()或doPost()方法 。 3.在﹤SERVLET﹥标记中指定调用Servlet 当使用﹤SERVLET﹥标记来调用Servlet时,如同使用﹤FORM﹥标记一样,无需创建一个完整的HTML页面 。作为替代,Servlet的输出仅是HTML页面的一部分,且被动态嵌入到原始HTML页面中的其它静态文本中 。所有这些都发生在服务器上,且发送给用户的仅是结果HTML页面 。建议在Java服务器页面(JSP)文件中使用﹤SERVLET﹥标记 。请参阅有关JSP技术 原始HTML页面中包含﹤SERVLET﹥和﹤/SERVLET﹥标记 。Servlet将在这两个标记中被调用,且Servlet的响应将覆盖这两个标记间的所有东西和标记本身 。如果用户的浏览器可以看到HTML源文件,则用户将看不到﹤SERVLET﹥和﹤/SERVLET﹥标记 。要在DominoGoWebserver上使用该方法,请启用服务器上的服务器端包括功能 。部分启用过程将会涉及到添加特殊文件类型SHTML 。当Web服务器接收到一个扩展名为SHTML的Web页面请求时,它将搜索﹤SERVLET﹥和﹤/SERVLET﹥标记 。对于所有支持的Web服务器,WebSphere应用服务器将处理SERVLET标记间的所有信息 。下列HTML代码段显示了如何使用该技术 。
使用NAME和CODE属性带来了使用上的灵活性 。可以只使用其中一个属性,也可以同时使用两个属性 。NAME属性指定了Servlet的名称(使用WebSphere应用服务器管理器配置的),或不带.class扩展名的Servlet类名 。CODE属性指定了Servlet类名 。使用WebSphere应用服务器时,建议指定NAME和CODE,或当NAME指定了Servlet名称时,仅指定NAME 。如果仅指定了CODE,则会创建一个NAME=CODE的Servlet实例 。装入的Servlet将假设Servlet名称与NAME属性中指定的名称匹配 。然后,其它SHTML文件可以成功地使用NAME属性来指定Servlet的名称,并调用已装入的Servlet 。NAME的值可以直接在要调用Servlet的URL中使用 。如果NAME和CODE都存在,且NAME指定了一个现有Servlet,则通常使用NAME中指定的Servlet 。由于Servlet创建了部分HTML文件,所以当创建Servlet时,将可能会使用HttpServlet的一个子类,并优先使用doGet()方法(因为GET方法是提供信息给Servlet的缺省方法) 。另一个选项是优先使用service()方法 。另外,CODEBASE是可选的,它指定了装入Servlet的远程系统的URL 。请使用WebSphere应用服务器管理器来从JAR文件配置远程Servlet装入系统 。 在上述的标记示例中,initparm1是初始化参数名,value是该参数的值 。可以指定多个“名称-值”对的集合 。利用ServletConfig对象(被传递到Servlet的init()方法中)的getInitParameterNames()和getInitParameter()方法来查找参数名和参数值的字符串数组 。在示例中,parm1是参数名,并在初始化Servlet后被才被设置某个值 。因为只能通过使用“请求”对象的方法来使用以﹤PARAM﹥标记设置的参数,所以服务器必须调用Servletservice()方法,以从用户处传递请求 。要获得有关用户的请求信息,请使用getParameterNames()、getParameter()和getParameterValues()方法 。 初始化参数是持续的 。假设一台客户机通过调用一个包含某些初始化参数的SHTML文件来调用Servlet 。并假设第二台客户机通过调用第二个SHTML文件来执行调用Servlet调用同一个Servlet,且该SHTML中未指定任何初始化参数 。那么第一次调用Servlet时所设置的初始化参数将一直可用,并且通过所有其它SHTML文件而调用的所有后继Servlet都不会更改该参数 。直到Servlet调用了destroy()方法后,才能重新设置初始化参数 。例如,如果另一个SHTML文件指定了另一个不同的初始化参数值,虽然已此时已装入了Servlet,但该值仍将被忽略 。 4.在JSP文件中调用Servlet 可以从JavaServer页面(JSP)文件中调用Servlet 。请参阅JSP技术部分 。 5.在ASP文件中调用Servlet 如果在Microsoft Internet Information Server(IIS)上有遗留的ASP文件,并且无法将ASP文件移植成JSP文件时,可用ASP文件来调用Servlet 。在WebSphere应用服务器中的ASP支持包括一个用于嵌入Servlet的ActiveX控制,下面介绍ActiveX控制AspToServlet的方法和属性 。 该方法说明如下: (1)String ExecServletToString(String servletName);执行ServletName,并将其输出返回到一个字符串中 。 (2)ExecServlet(String servletName);执行ServletName,并将其输出直接发送至HTML页面 。 (3)String VarValue(String varName);获得一预置变量值(其它格式) 。 (4)VarValue(String varName, String newVal);设置变量值 。变量占据的总大小应小于0.5个千字节(Kbyte) 。且仅对配置文件使用这些变量 。 其属性如下: ◆Boolean WriteHeaders;若该属性为真,则Servlet提供的标题被写入用户处 。缺省值为假 。 ◆Boolean OnTest;若该属性为真,服务器会将消息记录到生成的HTML页面中 。缺省值为假 。 下列ASP调用Servlet脚本示例是以Microsoft Visual Basic Scripting(VBScript)书写的 。
调用Servlet的方法也是根据程序员自身的要求来,那么以上的这些方法希望对你在工作中要实现调用Servlet有帮助 。 |