Rog*_*ger 26 java model-view-controller spring
我需要清理一些事情.我一直在寻找这个问题的答案,但我似乎无法找到我的具体问题的好答案(例如,这个问题正在蚕食答案:servlet和Web服务之间的区别).
根据我的理解,有一些不同的方法可以在"面向MVC"的Web应用程序中实现"请求处理",即"控制器",其中两个是:
HttpServlet,并且使用类似的方法doGet和doPost等.@Controller类(是的,使用a DispatcherServlet).有了这个你使用@RequestMethod GET/ POST等现在问我的问题......
[编辑]:强调关键字
Ben*_*ley 21
如果你是一名有兴趣学习这门语言的学生,那么我现在就会坚持使用servlet.只使用servlet编写Web应用程序是可能的,但实际上你可能也想看看JSP.
JSP是一种编写servlet的便捷方式,它允许您将html与脚本元素混合使用(尽管建议您避免使用jsp中的Java代码来支持标记和el表达式).在封面下,它将被编译为servlet,但它避免了你必须使用大量凌乱的打印语句.
至少要对servlet和JSP有一个基本的了解是很重要的.Spring MVC是构建在servlet之上的众多框架之一,旨在使编写Web应用程序的任务变得更加容易.基本上所有请求都映射到DispatcherServlet,它充当前端控制器.
然后,DispatcherServlet将调用其注释与传入请求匹配的控制器.这比在web.xml中自己编写这些映射更简洁(尽管使用servlet 3.0,您现在可以注释servlet).但是你也可以使用许多其他好处,例如将表单字段映射到对象,使用jsr303注释验证该对象,将输入和输出映射到xml或json等等.此外,它与核心弹簧紧密集成,因此您可以轻松地接入您的服务供控制器调用.
值得注意的是,在servlet之上构建了大量竞争框架.Spring MVC是最流行的之一,因此它不是一个糟糕的选择.
Gio*_*nni 13
Servlet和Spring MVC Controller可用于执行相同的操作,但它们在Java应用程序的不同级别上运行
servlet是J2EE框架的一部分,每个Java应用程序服务器(Tomcat,Jetty等)都是为运行servlet而构建的.Servlet是J2EE堆栈中的"低级"层.您不需要servlet.jar来运行您的应用程序,因为它已预先打包了应用程序服务器
Spring MVC控制器是一个基于servlet构建的库,可以使事情变得更容易.Spring MVC提供了更多内置功能,例如表单参数到控制器方法参数映射,更容易处理二进制表单提交(即表单可以上传文件).您需要将所需的jar打包到您的应用程序才能运行Spring MVC Controller
当你需要"低级别"时,你应该使用一个servlet,例如可能是出于性能原因.Spring MVC表现不错,但是如果它有一些开销,如果你需要从应用服务器中挤出所有内容(并且你已经调整了其他层,比如db),请使用servlet.如果要了解J2EE Web规范的基础(即用于教育目的),可以选择servlet
在所有其他情况下,您可以/应该选择Web框架.Spring MVC就是其中之一; 使用Spring MVC,您不需要重新发明轮子(即二进制表单管理,表单参数到bean转换,参数验证等).Spring MVC的另一个优点是,在一个类中,您可以轻松地管理来自不同URL和方法的输入,在servlet中执行相同操作是可能的,但代码更复杂且可读性更低.我的观点是Spring MVC适用于构建休息服务和管理简单应用程序(即简单形式的Web应用程序).如果您需要使用Ajax管理非常复杂的表单,嵌套表单以及具有会话和页面状态的应用程序,我的建议是切换到基于组件的框架(例如apache wicket).
JSF和JSP以及Spring MVC都基于Servlet。由于您必须编写直接的html,因此servlet并不是很“好用”的问题。
如果您能够使用现代Web技术,我只会在需要直接输出HTTP的位置使用Servlet,例如将图像从数据库写入HTTP。
使用与Dipatcherservlet或FacesServlet一起使用的SpringMVC或JSF更快,更有趣。他们解析您的文件并通过servlet发送。