要调用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提交数据。例如:
﹤FORMMETHOD="GET"ACTION="/servlet/myservlet"﹥ ﹤OL﹥ ﹤INPUTTYPE="radio"NAME="broadcast"VALUE="am"﹥AM﹤BR﹥ ﹤INPUTTYPE="radio"NAME="broadcast"VALUE="fm"﹥FM﹤BR﹥ ﹤/OL﹥ (用于放置文本输入区域的标记、按钮和其它的提示符。) ﹤/FORM﹥ 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代码段显示了如何使用该技术。
﹤SERVLET NAME="myservlet" CODE="myservlet.class" CODEBASE="url" initparm1="value"﹥ ﹤PARAM NAME="parm1" VALUE="value"﹥ ﹤/SERVLET﹥ 使用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)书写的。
﹤% ' Small sample asp file to show the capabilities of the servlets and the ASP GateWay ... %﹥ ﹤H1﹥ Starting the ASP-﹥Java Servlet demo﹤/H1﹥ ﹤% ' Create a Servlet gateway object and initialize it ... Set javaasp = Server.CreateObject("AspToServlet.AspToServlet") ' Setting these properties is only for the sake of demo. ' These are the default values ... javaasp.OnTest = False javaasp.WriteHeaders = False ' Add several variables ... javaasp.VarValue("gal") = "lag" javaasp.VarValue("pico")= "ocip" javaasp.VarValue("tal") = "lat" javaasp.VarValue("paz") = "zap" javaasp.VarValue("variable name with spaces") = "variable value with spaces" %﹥ ﹤BR﹥ Lets check the variables ﹤% Response.Write("variable gal = ") Response.Write(javaasp.VarValue("gal")) %﹥ ﹤BR﹥ ﹤% Response.Write("variable picopico = " & javaasp.VarValue("pico")) %﹥ ﹤BR﹥ ﹤HR﹥ ﹤% galout = javaasp.ExecServletToString("SnoopServlet") If javaasp.WriteHeaders = True Then %﹥ Headers were written ﹤% Else %﹥ Headers were not written ﹤% End If Response.Write(galout) %﹥ ﹤H1﹥ The End ...﹤/H1﹥ 调用Servlet的方法也是根据程序员自身的要求来,那么以上的这些方法希望对你在工作中要实现调用Servlet有帮助。
分享到:
相关推荐
其中,`init(ServletConfig config)`方法在Servlet被加载时调用,用于初始化Servlet实例。传入的`ServletConfig`对象包含了Servlet的配置信息,如初始化参数。这些参数可以在`web.xml`中定义,如示例所示,通过`...
另外,Servlet 编译后的 Java 字节码只有在被请求时才执行,同时服务器会缓存运行的 Servlet,所以尽管当首次调用 Servlet 时会有几秒钟的加载时间,但对后续的客户端请求响应会非常快。 本文对 JSP、ASP 和 PHP 三...
- Spring:Spring是一个全面的后端开发框架,提供了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)架构模式等功能,还集成了数据访问、事务管理、安全性和测试工具。 - Struts:Struts是基于MVC设计模式...
5. ActionServlet 根据 ActionMapping 所包含的映射信息决定将请求转发给哪个 Action,如果相应的 Action 实例不存在,就先创建这个实例,然后调用 Action 的 execute()方法。 6. Action 的 execute()方法返回一个 ...
数据库连接部分负责处理数据存储和检索,支持多种数据库类型,确保数据的安全性和易访问性。而JSP自动生成模块则是系统的核心,它结合模板和标签库技术,允许用户通过简单的界面操作,自动创建包含静态HTML和动态JSP...
2. **ActionServlet处理**:如果请求被识别为Struts请求,Filter Dispatcher会调用`process()`方法,该方法负责解析请求并根据`struts-config.xml`配置文件找到对应的ActionMapping。 3. **ActionMapping匹配**:...
### JSP安全编程实例浅析 #### 一、引言 在现代Web开发中,JavaServer Pages (JSP)作为一种动态网页技术被广泛应用于构建复杂的企业级应用。然而,随着互联网的发展,各种针对Web应用程序的安全威胁也日益增多。...
Servlet容器(如Tomcat)会解析HTTP请求,调用相应的Servlet方法处理请求,然后通过ServletResponse对象返回响应。 总的来说,Java Web程序的客户端和服务器端交互原理涉及到网络通信协议的深刻理解和Java编程技术...
开发者可以通过重写Servlet的`doGet`和`doPost`方法来处理HTTP的GET和POST请求。 JSP则是Java Web开发中用于创建动态网页的视图技术。它允许将HTML代码与Java代码混合编写,使得页面内容的生成更加灵活。JSP文件在...
通过正确的配置和JavaScript调用,前端可以无缝地访问后端的Java方法,极大地提高了开发效率。然而,这种紧密的集成也需要注意安全问题,确保只有授权的方法可以被前端调用。在后续的文章中,将会探讨后端如何反向...
在安全性方面,Java有一套严格的访问控制机制和安全模型,包括类加载器、安全管理器等,可以有效防止恶意代码的执行,保护用户系统的安全。此外,Java还提供了异常处理机制,使得程序在遇到错误时能够有序地恢复或...
JSP文件会被服务器转换为Servlet(Java类),然后执行并返回响应给客户端。 2. **图形报表库**: 在JSP中实现图形报表通常需要借助第三方库,例如JFreeChart、Google Charts、Highcharts或ECharts等。JFreeChart是...
`Session`接口提供了获取和设置Session的创建时间、ID、最后访问时间以及有效期的方法。`HttpSession`接口则扩展了`Session`,增加了获取ServletContext、设置Session作用域的属性等方法。 **2. 集群Session与实现*...
例如,如果用户通过GET方法访问URL "***" 并且表单中的某个字段也叫“param”且值为“bbb”,那么服务器通常会接收到一个“param”参数,值为“bbb”。但如果GET请求中的参数名与URL中的参数名不同,则表单中的参数...
5、反射概念:Java从第一天开始就在内部具有反射概念,如接口,重复类,抽象类或方法概念。PHP 5.0以前没有任何反射概念,从PHP 5.0开始,它引入了这个功能,但与Java相比并没有那么大的进步。 6、页面加载速度:...
拦截器的作用是拦截框架中的方法调用或Web请求,并在方法或请求执行前后执行特定的代码逻辑。拦截器可以在配置文件中声明,也可以通过编程方式添加到框架中。拦截器的运行机制通常是基于Java的动态代理或AOP(面向切...