专栏首页养码场Java 开发基本技能,你都get了吗?

Java 开发基本技能,你都get了吗?

作为一位 Java Web 开发人员,大概会遭遇过下面这些状况:

  • 客户端请求参数,要一个个地取,不能用循环,醉了……
  • 参数取出来都是 String 类型,还得一个个做类型转换,很恼火…...
  • 配置文件写得比代码还多,这是要逼疯开发的节奏吗?
  • Servlet 处理多个请求,需要手动完成逻辑控制,就不能智能一点吗?!

如果坚持使用原生的 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 IoC 为基础,将各个组件都以 JavaBean 的形式配置。
  • 代码复用:可使用现有的业务对象作为表单对象,不需要去扩展某个特定框架的基类。
  • 自定义数据转换器:可根据需求对数据类型进行转换,比如将特定格式的字符串转为日期类型。
  • 功能强大的表单标签库:让 JSP 表单的数据绑定更加便捷高效。
  • 国际化:支持根据用户区域显示不同国家的语言。

Spring MVC 工作流程

  • 客户端请求被 DispatcherServlet(前端控制器)接收
  • 根据 HandlerMapping 映射到 Handler
  • 生成 Handler 和 HandlerInterceptor(如果有则生成)
  • Handler 和 HandlerInterceptor 以 HandlerExecutionChain 的形式一并返回给 DispatcherServlet
  • DispatcherServlet 通过 HandlerAdapter 调用 Handler 的方法做业务逻辑处理
  • 返回一个 ModelAndView 对象给 DispatcherServlet
  • DispatcherServlet 将获取的 ModelAndView 对象传给 ViewResolver 视图解析器,将逻辑视图解析成物理视图 View
  • ViewResolver 返回一个 View 给 DispatcherServlet
  • DispatcherServlet 根据 View 进行视图渲染(将模型数据填充到视图中)
  • DispatcherServlet 将渲染后的视图响应给客户端

本文分享自微信公众号 - 养码场(yangmachang0)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • BAT程序员都在看,它们是否也是你的睡前读物?

    点评:一本技术大牛写的关于Java并发编程的书,书中采用循序渐进的讲解方式,从并发编程的底层实现机制入手,逐步介绍了在设计Java并发程序时各种重要的技术、设计...

    养码场
  • 面对梦想,不妨从扎实自己技能开始

    例如小扎。每年给自己定一个目标,已连续7年完成了自己新年计划,例如2010年励志学好普通话;2012年回归每天写代码的日子;2014年每天写一封经过谨慎思考后的...

    养码场
  • 同样是工作3年程序员,为什么别人每月25K你却只有15K?

    你有没有静下心来思考过:同样是做了x年Java开发,为什么你的技术比别人差很多?为什么别人每月26K你却只有15K?

    养码场
  • Python 操作 MariaDB 数据

    我们需要导入 MariaDB 的 Python 模块,即 import MySQLdb 才能使用 python 对 MariaDB进行数据的增删减查等操作。

    py3study
  • 【工具】社交数据与行为金融学如何实现超越大盘、绝对收益量

    一、互联网让大数据就在身边   互联网作为改变人类历史的产物,近年来得到了飞速的发展,随着互联网的日益普及,其正在逐渐改变人们的生活习惯。商场的购物份额正在被足...

    小莹莹
  • 前端资源、交流社区、技术博客等整理总汇

    最近看到这篇前端资源总汇的文章,整理的非常详细,于是搬过来,方便自己后期查阅,侵删。

    德顺
  • 前端资源分享——只为更好前端

    一、团队组织 网站说明腾讯 AlloyTeam 团队腾讯Web前端团队,代表作品WebQQ,致力于前端技术的研究ISUX腾讯社交用户体验设计,简称ISUX,腾...

    wangxl
  • 在腾讯云上使用kubeadm搭建Kubernetes集群

    容器技术在国内已经非常火爆,作为IT从业者的一员,必须跟上时代的浪潮,掌握容器相关技术。提到容器技术必然会提到容器的编排系统,在众多编排系统中Google的Ku...

    Hunter
  • 《白帽子讲Web安全》学习笔记

      最近加入新公司后,公司的官网突然被Google标记为了不安全的诈骗网站,一时间我们信息技术部门成为了众矢之的,虽然老官网并不是我们开发的(因为开发老官网的前...

    Edison Zhou
  • 白帽子如何快速挖到人生的第一个漏洞 | 购物站点挖掘商城漏洞

    本文针对人群:很多朋友们接触安全都是通过书籍;网上流传的PDF;亦或是通过论坛里的文章,但可能经过了这样一段时间的学习,了解了一些常见漏洞的原理之后,对于漏洞挖...

    HACK学习

扫码关注云+社区

领取腾讯云代金券