我知道,这取决于webapp.但是在正常情况下,你做什么:一个servlet,它服务于不同的页面(比如一个具有不断变化的内容的独立应用程序),或者每个页面都有一个servlet.
以博客为例.有一个包含最新博客条目的起始页面,一个用于显示一个博客条目和一个存档的文章视图.您是使用三个不同的servlet实现此功能,还是将其分配给函数.至少有很多东西是共享的,比如http-headers.
那么,你的经历是什么,最有效的是什么?
通常,您将根据用例创建一个servlet.Servlet就像您的应用程序的控制器.当您从用户识别交互时,然后实现servlet来控制该交互.
也就是说,如果您使用普通的servlet/JSP来构建站点.如果您使用像struts这样的框架,您会发现它们实现了前端控制器模式,并使用单个servlet来接收所有请求,并将这些请求转发给实现用户请求的实际逻辑的操作类.这对你自己来说要难得多,但这是一个很好的做法......这就是为什么这么多人使用这些框架的原因.
简而言之,您将为每个webapp创建许多servlet,因为每个webapp都会暴露几个用例.
[编辑]重新阅读您的问题,似乎您使用术语网站表示页面或视图.同样,这取决于该观点上发生的事情.例如,要显示最新的博客条目,您可以拥有一个servlet,用于构建数据库中的条目列表以供显示.如果用户单击某个条目,则另一个servlet可以检索该单个条目以供查看,依此类推.主要是,每个动作都是一个用例,因此是一个不同的servlet.
大多数Web框架使用调度程序servlet(例如:Spring MVC)来处理将请求路由到适当的类/控制器.
当你开始拥有大量页面时,这种方法效果最好,因为你有一种更加用户友好的方式(关于web.xml)来声明/管理一个处理http请求及其url的类.示例(再次弹簧mvc):
@Controller public class MyController { @RequestMapping("/viewPosts") public void doViewPosts(HttpRequest r, HttpResponse res) { //... } }
此外,拥有一个调度程序servlet可以使代码流集中.