在一般情况下,可以从JSP页面或另一个servlet调用操作servlet,作为表单提交或链接激活的结果。根据请求的类型,该servlet重新从操作库中检索相应的操作类型。由于典型的web应用程序要处理大量的请求,所以操作库中为每个操作类型保持一个操纵实例。对于给定的请求类型,这些操作是可重用的。对于多个请求,重用单个操作可以大幅减少框架实例化所需的操作数量。
要记住,多个线程可以并发地发出相同的请求,这意味着,这些线程可以并发访问单一的操作实例。所以,操作必须是线程安全的。实现线程安全操作的最简单方法就是避免保持固有状态,这可以通过使用局部变量而不是类成员来实现,因为局部变量一次仅可以由一个线程来访问。
操作servlet从操作库中获得一个操作后,它便调用此操作的perform方法。Perform方法实现了特定应用程序的功能,通常用于更新业务对象。Action.perform返回一个操作路径选择器,它具有一个URI和boolean变量,指示是否将请求转发或重定向至这个URI。操作servlet使用操作路径选择器调用路径选择器的route方法,route方法将请求转发或重定向到适当的web组件。通常,web组件是JSP页面、HTML页面或其他的servlet,并且该组件通常包含一个表单或链接,它们的提交或激活会分别发出请求,于是,新的周期开始。