> App Server.您看到Tomcat在运行时间足迹或学习量或重量方面很重要?我会倾向于选择与IDE完美集成的东西.所以Eclipse Tomcat或者Apache Geronimo,也许是在
WebSphere Community Edition的幌子下做这个工作.从我所看到的,这些都足够你想要的,而学习曲线真的很可控.
>是JSP.你可能会发现你的演示文稿需要变得更加复杂.去JSF的额外努力可能还没有付出 – 漂亮的小部件,如日期选择器.
>在你的处理中,你将有一个servlet(或者一个action类,如果你使用的是JSF),该类可以有一个类型为Engine的成员变量在启动时初始化,然后用于每个请求.要牢记的是,许多用户将同时击中该servlet,因此引擎.您的引擎是否可以安全地从多个线程同时使用?
在这一点上扩大.在实现JSP时,有两种型号(具有某些创造性),如Model 1和Model 2所示.参见this explanation.
在模型1的情况下,您倾向于将代码直接放入JSP中,它的作用是控制器角色. Persoanlly,即使处理小型,快速开发的应用程序,我不是这样的.我总是使用模型2.但是如果你选择你可以把一些Java放入你的JSP.
// 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();
}