作为一位 Java Web 开发人员,大概会遭遇过下面这些状况:
如果坚持使用原生的 Servlet 做开发,上面这些坑是一定绕不过去的。
Servlet 是 Java Web 的基石, 为什么Servlet使用起来这么不方便?
Web 开发的原理是服务端接收到客户端传来的 request,进行业务处理,然后将结果通过 Response 响应给客户端的过程。
客户端和服务端通过 HTTP 协议进行数据交互,底层机制是客户端将用户输入的信息组装成 HTTP 协议报文,然后通过网络将报文传输到服务端。
服务端通过特定的 Web 容器(Tomcat、Jetty 等)接收报文并进行解析,将数据封装到 request 对象中,并通过 request 获取数据进行业务逻辑处理,将处理结果封装到 response 对象中,传给 Web 容器。
Web 容器再次进行解析,将 response 对象转为 HTTP 协议报文返回给客户端,客户端对结果进行渲染展示给用户。
服务端具体对接收请求做出响应的工作是由 Servlet 来完成的,但是 Servlet 有其自身无法克服的缺点:配置过于繁琐,同时 HTTP 协议传输的数据都是文本形式,这就需要开发者进行大量的数据类型转换,这种工作没有技术含量、简单枯燥易出错。因此,使用 Servlet 显得非常低效和落后。
程序员的时间和精力是有限的,不能把有限的时间和精力浪费在没有技术含量的体力活上,所以追求更加高效、更加便捷的开发模式。
让开发者将精力集中在核心业务的开发上,就是框架存在的价值。
Spring MVC 就是实现 MVC 设计模式的框架,是 Spring 框架的一个分支产品,以 Spring IoC 容器为基础,并利用容器的特性来简化它的配置。
Spring MVC 的优点
Spring MVC 工作流程