Java 从xpages客户端脚本和常规notes表单调用HttpServlet类?

Java 从xpages客户端脚本和常规notes表单调用HttpServlet类?,java,xpages,lotus-domino,lotus,Java,Xpages,Lotus Domino,Lotus,我对Java是新手(同样,有一段时间没有接触过它) 我有一个简单的(计划中要复杂得多的)HttpServlet类,我正在尝试从一个网页调用它,无论是从常规Notes表单还是在xPage上的csjs package com.pnc.cld; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.h

我对Java是新手(同样,有一段时间没有接触过它)

我有一个简单的(计划中要复杂得多的)HttpServlet类,我正在尝试从一个网页调用它,无论是从常规Notes表单还是在xPage上的csjs

package com.pnc.cld;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorld extends HttpServlet
{
    private static final long serialVersionUID = -2950148158748149L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        System.out.println("doGet: Hello World!");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException
    {
        System.out.println("doPost: Hello World!"); 
    }
}
我找到了这篇文章

它最初是中文的,所以有点难以理解,但从我从中收集到的信息来看,您需要添加一个IServletFactory类,该类将servlet映射到您的url,以便在浏览器中调用它

但是我有错误。修正了其中一些

但我仍然会犯一些错误。其中一项:

ServletFactory类型必须实现继承的抽象方法IServletFactory.getServletMatch(String,String)ServletFactory.java

另外,文章似乎说您需要将
com.ibm.xsp.adapter.servletFactory
添加到services目录,但我在PC上的任何地方都找不到该文件

有没有更好的文章或工作示例来调用httpservlet?

Bruce,
在Domino上,您需要实现servlet OSGi样式。从我的OpenNTF项目中窃取代码。servlet确实在工作

也许你应该研究一下斯文博客文章中的样本数据库。将Domino设计器切换到Java透视图,并查看“代码/Java”部分。在那里你可以找到3个文件。其中一个处理URL并将其映射到servlet。第三个文件存储在META-INF文件夹中,定义IServletFactory应该在哪里查找ServletFactory类(第二个文件)。第一个文件是servlet本身。
但要小心:我们也遇到了示例数据库中的错误。原因很简单:在servlet代码中抛出一个“静态”异常:-D删除该代码,您就没事了。我们在8.5.3机器上进行了测试,但我相信在较旧的版本上也会进行测试。

谢谢Stephan。我去看看。但我是靠自己工作的!好吧,在把几篇文章放在一起的帮助下。包括这一个,它取了一个用中文写的心房并组织起来。我在给编写者写信时遇到了一个问题,但还没有机会查看它,但我一定会查看您的示例。在servlet中有一个编写者和一个输出流。就像高地人->只有一个。因此,一旦您触摸输出流,您就无法触摸写入程序。但是这应该是一个问题,因为你总是可以
PrintWriter w=new PrintWriter(out)
out是你的outputStream有一个try-catch块,里面有一个throw-new异常子句-所以catch总是毫无理由地打印stacktrace。嗨,没问题-这是“挑战性的”,但只花了我们“几分钟”在被问到这个问题几年后,我偶然发现了这个问题,还有更多。正如Stephan Wissel所回答的,“更好的”方法是将servlet写入OSGi插件。只要稍加努力,你就可以在国家科学基金会内部实现这一目标。需要注意的是,需要使用
java.pol
编辑来授予NSF java代码更广泛的安全特权,编辑
notes.ini
(或通过Internet站点)以允许使用PUT和DELETE方法,并按照Sven Hasselbach指出的(您的链接)将lwpd jar添加到DDE的构建路径中。我关于这个主题的博客系列: