Servlet和JSP是开发Java Web应用程序的两种基本技术,Spring MVC是Spring框架中用于开发Web应用的一个模块。相信你们也和我同样,是从编写Servelt和JSP开始,而后一步步向Spring MVC靠拢。那么Spring MVC到底简化了Servlet什么地方,使Spring MVC成为Web应用开发的首选框架呢,本文将会就这个方面进行探讨。html
Servlet是一种基于Java语言,用于建立Web应用程序。在Servlet以前,CGI(通用网关接口)脚本语言做为服务端编程语言很受欢迎,可是这门技术有不少的缺点:前端
CGI(通用网关接口) CGI即便可让服务器可以调用外部程序,并将HTTP请求信息传递给外部程序处理,对于每个请求,会启动一个新的进程。 web
CGI技术的缺点spring
Servlet 编程
Servlet的优势浏览器
Servlet的基本目录 tomcat
Servlet接口 在最基本的Servlet类中,须要实现Servlet接口定义的init()、servic()、destroy()、getServletConfig()和geServletInfo()方法,其中业务逻辑在service中编写,在service方法中最经常使用的是经过PrintWriter对象进行内容的输出。服务器
演进1:GenericServlet抽象类 实现Servlet接口的时候必须将全部的方法实现,即便方法中没有任何代码。在GenericServlet抽象类的帮助下,只须要重写service方法便可。架构
演进2:HttpServlet抽象类 HttpServlet覆盖了GenericServlet类,将ServletRequest和ServletResponse对象分别封装为HttpServletRequest和HttpServletResponse对象。HttpServlet同时实现了service方法,在请求进来时,Web容器首先调用HttpServlet的service方法,并根据请求的类型调用doGet或doPost方法,搜易咱们只须要覆盖doGet()和goPost()方法便可。mvc
写过Servlet的朋友应该知道,Servlet的最大缺点就是在Servlet类中编写大量繁杂的HTML代码,使得Java代码与HTML代码糅杂在一块儿,因此JSP应运而生。
JSP本质也是Servelt,然而其不须要编译,JSP页面是一个以.jsp扩展名的文本文件。简单的JSP页面在第一次请求后被翻译为(JSP名)_jsp的servlet,翻译以后的Servelt能够看到:_jspInit(),_jspDestory(),_jspService()这样的方法其实都是和Servlet相对应的。
Spring提供了强大的控制反转(IOC)和依赖注入(DI)功能,达到项目组件的解耦。
学过Servlet的朋友应该知道,当要使用Servlet完成的复杂的功能时,须要编写多个Servlet类,而且在web.xml进行注册,这对于完成复杂的Web应用,代码编写会变得很复杂,开发成本也会很高。因此Spring提供了强大的Web开发框架Spring MVC。Spring MVC是Spring产品的一部分,享有Spring松耦合等全部优势。
Spring MVC是一个模型-视图-控制器的Web框架,创建在前端控制器servlet(DispatcherServlet),它负责发送每一个请求到合适的处理程序,使用视图来返回响应结果。
Spring MVC的架构:
Spring web MVC框架提供了MVC(模型 - 视图 - 控制器)架构和用于开发灵活和松散耦合的Web应用程序的组件。MVC模式致使应用程序的不一样方面(输入逻辑,业务逻辑和UI逻辑)分离,同时提供这些元素之间的松散耦合
DispatcherServlet组件类 Spring MVC框架是围绕DispatcherServlet设计的,它处理全部的请求和响应。Spring MVC DispatcherServlet的工做流程:
DispatcherServlet处理HTTP请求的工做流程:
至此Servlet到Spring MVC的演化之路落下帷幕,只能感慨,技术的变动和迭代速度远远超乎咱们的意料,咱们只有不断地学习,才能跟上时代的潮流。