作一个完整的Java Web项目须要掌握的技能

最近本身作了几个Java Web项目,有公司的商业项目,也有我的作着玩的小项目,写篇文章记录总结一下收获,列举出在作项目的整个过程当中,所须要用到的技能和知识点,带给尚未真正接触过完整Java Web项目的同窗一个比较完整的视角,提供一个所谓的“大局观”,也以便于同窗们更有针对性地学习。固然,这里所用到的例子项目是很是初级,简单的项目,因此大神们就能够不用往下看了。css

首先咱们从网站的架构谈起。通常来讲,咱们将网站分为前端和后端。前端主要负责页面的展现,后端则是业务逻辑的实现。因为HTML5的兴起,前端领域已经愈来愈火热,前端技术发展极快,今天咱们不作过多介绍,由于如今的互联网公司,前端工程师和Java工程师是彻底不一样的两种技术岗位。因此咱们仍是以Java的角度去看待一个项目。在前端没有那么火的前几年,或者说在经典的Java Web的开发模式中,咱们使用Jsp技术来做为展示层的实现,其实也就是所谓的前端。固然只懂得Jsp是不够的还须要懂html,css,js,ajax等一些前端的基础技术,Jsp技术在其中扮演外层包装的角色。那么后端呢?后端是因为一些实现了业务逻辑Java代码和数据库组成。说到这,就能够推出Web开发中经典的MVC模式,Model-View-Controller。View,,就是指表现层,Model,是用来承载数据的抽象结构,而Controller则是View和Model的桥梁。View存在与前端代码中,Controller,Model存在与后端代码中。在后端代码中,为了保证代码的整洁,易读性,通常会采用分层的办法,自顶向下分为controller层,service层,dao层,数据层或者叫持久层(直接与数据库打交道)。有时候,为了达到解耦的目的,会在上述基层中间加入响应的接口层,以使得接口与实现分离。在更加大型的网站中,会出现更加复杂的架构,好比dao层与数据层之间要有缓存层,或者访问压力增大后,须要使用集群,负载均衡等高级技术,但在这里,咱们就不深刻讨论复杂架构了。html

因此以上咱们看到,一个Web 项目前端须要表现层,后端有controller层,service层,dao层,持久层。在表现层,除了刚才提到的html,css,js,ajax,jsp等基础知识,在实际开发中,咱们还会用到许多框架技术,好比tiles,velocity,freemarker等模板技术来简化表现层的开发。在持久层,除了jdbc外,还有Mybatis,hibernate等框架来提升开发效率。在Java Web中最耀眼的当属spring了,Spring做为一个贯穿整个项目的框架,为项目开发带来依赖注入,面向切面编程的功能。除了这些,咱们还须要熟练掌握一种关系型数据库的使用,如MySQL,Oracle等,固然更好地话还须要掌握一种非关系型数据库,MongoDB,Redis
掌握了以上知识点,恭喜你,你已经能够开始写Java Web项目了。可是只会写而不会部署,咱们的项目仍然不能拿出来用。因此说到这里,咱们的项目代码已经写好,接下来该怎么办呢?固然是须要找一个容器来运行咱们的代码。这里的容器是固然不是指Java里的数据类型,而是指应用服务器,此处要特别区分应用服务器与Web服务器,至于Web服务器是什么,稍后会介绍。(若是有同窗不是很清楚服务器的概念,能够先看下一段,再回来看)目前,市面主要流行的应用服务器有Tomcat,Jetty,JBoss等。不少人会问咱们为何须要应用服务器?顾名思义,应用服务器就是用来运行咱们的应用代码的。这里须要特别提到的是,Java Web用到了像Jsp,servlet这样的动态web技术,而这些技术的代码是必须运行中应用服务器中的。因此当咱们写好应用代码后,须要把本身的应用部署到应用服务器上。应用部署好后,那么用户们该怎么访问呢?直接访问应用服务器吗?这个时候就须要web服务器出场了。在互联网上,最强大的应用层协议当属http协议了,人们访问网站就是经过http协议来进行访问的,而Web服务器就是支持http协议的服务器,因此就叫http服务器。Web服务器接收http请求,而后再将请求转交给应用服务器。有人会问用户直接访问应用服务器很差吗?为何要给web服务器,而后再到应用服务器?从功能实现上来讲,是能够的。许多应用服务器,好比Tomcat是具备web服务器的功能,因此直接访问也能够。可是因为在实际的生产环境中,因为负载均衡,cdn加速等缘由,咱们仍是须要在应用服务器的前端再加一个web服务器来提升访问效率,经常使用的有Nginx,Apache这样的服务器。
以前总是在讲这个服务器,那个服务器,不知道有没有同窗听懵了。其实服务器这个概念,咱们应该在真正接触计算机专业领域以前早就据说过,好比之前打游戏以为卡的时候你们都时不时会用到服务器这个词汇。可是我真正理解并研究服务器是在学习tomcat, jetty以后才开始的。那么服务器到底什么呢?服务器这个概念其实很简单,就是一台电脑,那它和咱们平常用的电脑有什么区别?第一,它通常没有显示器,它只有主机。第二,它的操做系统不一样于咱们经常使用的windows , Mac OS。更多的是*nix系统。第三,它运行了一些服务器端软件。好比说,咱们上文提到的Tomcat , Jetty , Nginx,Apache,其实这些都是服务器软件,只是主机运行了这些软件,因此有时候你们就混淆了叫法。因此所谓的数据库服务器,你们也知道了,其实就是运行了数据库的主机。说到服务器,咱们所须要掌握的重点知识就是服务器操做系统,也就是*nix系统,好比CentOS , Ubuntu等。前端

说到这里,其实一个简单的完整的Java Web项目就差很少了。咱们简单回顾一下,首先,咱们须要利用各类框架和开发技术写出应用代码。接下来,咱们须要一个台安装了*nix系统的主机,在上面安装好Web服务器软件,应用服务器软件,再把咱们的应用代码部署到应用服务器上。如今咱们只须要获取到主机的IP地址,就可以远程访问应用了。html5

知识点列表:

开发:

  1. 视图层技术——HTML,CSS,JS,AJAX,Tiles,Velocity,FreeMarker
  2. 持久层技术——MyBatis,Hibernate
  3. Spring , Spring MVC
  4. 项目构建工具Maven
  5. 日志Log4j
  6. 版本控制 Git

数据库技术:

  1. SQL语句
  2. 参数调优

操做系统:

  1. 熟练掌握一种Linux系统,原理,Shell命令

服务器技术:

  1. 熟练使用并理解一个应用服务器技术的原理(Tomcat)
  2. 熟练使用并理解一个Web服务器技术的原理(Nginx)

附加:

缓存技术:

  1. 熟练使用并理解一种缓存技术(Redis,Memcache,EhCache)

非关系型数据库

  1. 熟练使用并理解一种非关系型数据库(MongoDB)

中间件技术:

  1. JMS:activeMQ和kafka
  2. RPC: Dubbo

设计模式:

  1. 了解并可以使用几种最主要的设计模式

网络:

  1. 熟练使用并理解一个网络开发技术(Netty)
  2. 熟悉http,TCP协议

Java虚拟机:

    1. 熟悉jvm运行原理,内存分布
    2. jvm参数调优
相关文章
相关标签/搜索