做一个完整的Java Web项目需要掌握的技能
转自: https://blog.csdn.net/JasonLiuLJX/article/details/51494048
--------------------------------------------------------------------------------
最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收获,列举出在做项目的整个过程中,所需要用到的技能和知识点,带给还没有真正接触过完整Java Web项目的同学一个比较完整的视角,提供一个所谓的“大局观”,也以便于同学们更有针对性地学习。当然,这里所用到的例子项目是非常初级,简单的项目,所以大神们就可以不用往下看了。
首先我们从网站的架构谈起。一般来说,我们将网站分为前端和后端。前端主要负责页面的展示,后端则是业务逻辑的实现。由于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层与数据层之间要有缓存层,或者访问压力增大后,需要使用集群,负载均衡等高级技术,但在这里,我们就不深入讨论复杂架构了。
所以以上我们看到,一个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地址,就能够远程访问应用了。
知识点列表:
开发:
- 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参数调优
做一个完整的Java Web项目需要掌握的技能相关推荐
- javaweb做什么能赚钱_做一个完整的Java Web项目需要掌握的技能
原文链接:http://blog.csdn.net/JasonLiuLJX/article/details/51494048 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小 ...
- 做一个完整的Java Web项目太难了,因为这些你不会!
作者:元素侠Jason 链接:https://blog.csdn.net/JasonLiuLJX 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收 ...
- 用PaddleDetection做一个完整的目标检测项目(上)
文章转载自:微信公众号:飞桨PaddlePaddle的微信文章 原文章中由于排版问题,导致文字遮挡,不便阅读,因此对文章格式稍作更改,增加了一些关键词加粗,便于后续阅读. PaddleDetectio ...
- Eclipse导入和调试别人的Java web项目完整教程(超详细,包括报错解决)
本文详细介绍了如何导入一个外部的Java Web项目,如果看了本文还是不会调试,可以问我 个人主页的其他分类专栏也有一些比较好的项目 1.主要工作 (1)保证电脑有java 环境配置以及JDK 文件. ...
- Java Web项目是怎么跑起来的?
良心公众号 关注不迷路 01 简单Java程序的启动过程 在之前的HelloWorld是怎么跑起来的?一文中,我们一起学习了IDE执行简单的Java程序的过程.可以总结为如下三个步骤: 首先,将程序通 ...
- 创建Java Web项目并实现前后端交互
目录 一:使用工具 二:创建Java Web项目 三:编写代码 一:使用工具 Eclipse 版本如下: 注:不同版本的eclipse创建的项目基础目录可能会有所不同. 二:创建Java Web项目 ...
- Java web 开发填坑记 2 -如何正确的创建一个Java Web 项目
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72566261 本文出自[赵彦军的博客] Java web 开发填坑记 1-如何正确 ...
- idea如何导入java工程_Eclipse java web项目 ,导入IntelliJ IDEA 完整操作!
或许你用惯了Eclipse,有点排斥其他工具了, 你写框架的时候,编译速度是不是特别慢啊? 有时候还超过45秒,自动取消运行! 有时候代码是正常的,却无端端报错?下午吃个饭回来又好了? 最近工作换了I ...
- 如何使用graphpad做柱形图_系列文章 如何使用PaddleDetection做一个完整项目(三)...
系列文章 如何使用PaddleDetection做一个完整项目(三) 该文章是PaddleDetection的完结篇,请参考之前两篇文章 https://zhuanlan.zhihu.com/p/10 ...
最新文章
- 如何将github上源代码导入eclipse中
- 李飞飞、邓中翰当选美国国家工程院院士
- 【转】.NET Core全面扫盲贴
- HDU 1294 Rooted Trees Problem
- vs2010 导出创建dll 导入使用dll 导出有命名空间的类 函数 外部函数
- SpringBoot------集成PageHelper分页功能
- 电子电路原理面试题目及答案(一)
- Magick.NET图片处理:解决Tga格式图片转Jpg后上下镜像问题
- 打印端口用计算机名,如何设置打印机端口,教您设置电脑打印机端口
- 洛谷P2689 东南西北
- 使用RealSense SDK访问摄像头
- ccid 设备通讯(Linux)
- Pytorch官方文档英语翻译
- 真空灾难:物理学最著名的未解难题之一
- 基于xml的数据交换技术
- 图像处理专业术语中英文对照
- MVC, MVP 与 MVVM
- 简练软考知识点整理-实施整体变更控制过程
- jsp中img显示本地图片
- 商女不知亡国恨,隔江犹吃炒腰花
热门文章
- CF1037H. Security
- CF750E-New Year and Old Subsequence【动态dp】
- P6640-[BJOI2020]封印【SAM,二分】
- P4357-[CQOI2016]K远点对【K-Dtree】
- P3329-[ZJOI2011]最小割【最小割树】
- Grakn Forces 2020——D题Pecco模型总结
- [XSY] 智慧树(线性同余方程组,线段树/树状数组)
- 操作系统复习笔记 07 Process Synchronization 进程同步
- 动态规划训练13 [Catch That Cow poj3278]
- JS中typeof的用法