关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
6年前关门了。
改进这个问题
这是一个由两部分组成的问题[请耐心听我说]:
最近有人和我争论说springmvc注解@controller是一个完全不同的品种,在任何时候都没有实现servlet。
我从孩提时代就开始将servlet作为控制器来实现,而且从未遇到过类似的情况(至少在java方面)。
问题1:@controller是否有指向servlet的链接?
问题2:在没有servlet的情况下是否有其他机制来实现请求/响应?我知道jsp/jsf等,但在核心部分,它们仍然是servlet,所以不是这样的。
4条答案
按热度按时间z6psavjg1#
问题1:@controller是否有指向servlet的链接?
控制器是从在urweb.xml文件中配置的名为dispatcherservlet的servlet调用的。
您的请求首先由DispatcherServlet处理,DispatcherServlet根据urlMap决定应该调用哪个控制器。
2skhul332#
实际上,springmvc使用前端控制器设计模式来消除代码重复问题。因此,根据前端控制器设计模式,我们不需要编写多个servlet,即dispatcherservlet。但我要告诉你,每一个请求都只通过dispatcherservlet处理。
ebdffaop3#
springmvc通过servlet调度请求和响应。使用servlet规范是很常见的,因为它受所有servlet容器的支持,您可以选择您喜欢的,如jetty、tomcat等。
servlet只是说明如何处理请求、响应、会话等。但没必要。看看netty或类似的产品。
从体系结构的Angular 来看,servlet和@controller是相似的。
bsxbgnwa4#
servlet是
Servlet
.一
@Controller
注解引用控制器的概念,并且独立于javax.servlet.Servlet
. spring文档非常清晰(我的重点是):这个
@Controller
注解指示特定类充当控制器的角色。spring不要求您扩展任何控制器基类或引用servlet api。但是,如果需要,您仍然可以引用特定于servlet的特性。因此,您的标题问题的答案是:否(您还询问了“java中的所有控制器”,但请注意,spring!=全是java。)
你关于“实现请求/响应的其他方法”的问题太模糊了,无法回答。实现任何事情都有无限的方法。如果愿意,可以用java编写一个原始的http服务器。您可以使用完全不同于http的协议。如果这是你的要求的一部分,你可以做一些根本不基于网络的事情。您可以使用不同的语言/框架,而不是java。具体点。