我正在尝试为Java应用程序创建Web用户界面。用户界面将非常简单,包括一个页面和一个结果页面,结果页面类似于Google的搜索引擎或Ask.com。
我对Java的基本API相当熟悉,但是我没有在Web环境中使用Java的丰富经验(尽管我使用过ASP.NET),所以我在寻找一些建议:
_我 应该使用哪个 Web应用程序服务器 ?_请注意,我的界面非常轻巧,我只需要快速,易于启动/重置/停止和(重新)部署应用程序的工具。另外,我需要它在 多种环境 下工作,即GNU / Linux,Mac OS X和Windows XP / Vista。另外,我正在使用ant和Eclipse,所以如果我可以轻松地添加一些ant服务器管理目标和/或使用IDE管理服务器,那将是很棒的。我研究了 Tomcat 和 Jetty ,后者似乎非常轻巧,易于安装和部署。这是理想的,因为GUI仅用于演示目的,并且我可能需要将其部署在其他计算机上。但是,Tomcat已经存在了很长时间,而且看起来更加成熟。
ant
Eclipse
至于 网页 ,Java Server Pages看起来很合适,因为对于我要完成的工作(处理表单并输出结果)来说,它们似乎足够简单,但是我全都愿意提出建议。
我还有另一个要求,它要求我解释应用程序的“基本”工作流程:基本上,我有一个类Engine,该类具有run(String)处理用户输入并返回结果以供显示的方法。此类是应用程序的 核心 。现在,我只想 实例化 该类 一次 ,因为它需要 大量 内存,并且需要很长时间才能启动,因此我想在应用程序/服务器启动时创建它,并将该引用存储为应用程序的整个范围(即直到我停止服务器)。然后,对于每个用户请求,我只需调用实例的run方法Engine,并显示其结果。 用Java如何做到这一点?
Engine
run(String)
run
在这一点上要扩大。在实现JSP时,有两个模型(有些发明)称为模型1和模型2。请参见此说明。
在模型1的情况下,您倾向于将代码直接放入JSP中,它充当控制器角色。坦率地说,即使是在处理小型,快速开发的应用程序时,我也不是这样。我始终使用模型2。但是,如果您选择将Java放入JSP中,则可以使用它。
<% MyWorker theWorker = MyWorkerFactory.getWorker(); // theWorker.work(); %>
我希望拥有这样的工厂,以便您可以控制工人的创建。工厂会有类似的东西(举一个非常简单的例子)
private static MyWorker s_worker = new MyWorker(); public static synchronized getWorker() { return s_worker; }
或者,您可以在首次调用该方法时创建工作程序。
对于模型2,您自然会有一个Servlet,您将在其中放入一些代码,因此您只需
private MyWorker m_worker = MyWorkerFactory.getWorker();
这将在加载servlet时初始化。无需担心将其设置为在启动时加载,您只需知道它将在运行第一个请求之前进行初始化。更好的是,使用servlet的init()方法。保证在处理任何请求之前将调用此方法,这是此类工作的Servlet API架构。
public class EngineServlet extends HttpServlet { private Engine engine; // init is the "official" place for initialisation public void init(ServletConfig config) throws ServletException { super.init(config); engine = new Engine(); }