当前位置: 首页 > 后端技术 > Node.js

一个完整的JavaWeb项目背后的密码

时间:2023-04-03 17:29:50 Node.js

前言在整个过程中,所需要的技能和知识点,会给那些没有真正接触过完整的JavaWeb项目的同学带来一个相对完整的视角,提供一个如此-称为“大图视图”,让同学们对JavaWeb项目有更好的了解。有针对性地学习。当然,这里使用的示例工程都是非常基础和简单的工程,高手们不用往下看。首先,让我们从网站的结构开始。一般来说,我们把网站分为前端和后端。前端主要负责页面的展示,后端是业务逻辑的实现。由于html5的兴起,前端领域也越来越火爆,前端技术发展的速度极快。今天我们就不过多介绍了,因为在现在的互联网公司中,前端工程师和Java工程师是两个完全不同的技术岗位。所以我们还是从Java的角度来看一个项目。在前几年前端还没有那么流行的时候,或者说在经典的JavaWeb开发模式中,我们使用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等框架来提高开发效率。JavaWeb中最耀眼的当属Spring。Spring作为贯穿整个项目的框架,为项目开发带来了依赖注入和面向切面编程的功能。除了这些,我们还需要熟练掌握一种关系型数据库的使用,比如MySQL、Oracle等,当然最好掌握一种非关系型数据库,MongoDB、Redis。掌握了以上知识点,恭喜你,你已经可以开始编写JavaWeb项目了。但是只能写不能部署,我们的项目还是不能用。那么至此,我们的项目代码已经写完了,接下来我们应该做什么呢?当然,我们需要找到一个容器来运行我们的代码。当然这里的容器不是指Java中的数据类型,而是指应用服务器。在这里,我们需要区分应用服务器和网络服务器。至于web服务器是什么,我们后面会介绍。(如果有同学对服务器的概念不是很清楚,可以先看下一段,再回来看)目前市场上流行的应用服务器主要有Tomcat、Jetty、JBoss等,很多人们会问为什么我们需要应用服务器?顾名思义,应用服务器就是用来运行我们的应用代码的。这里需要特别说明的是,JavaWeb使用了Jsp、Servlet等动态Web技术,而这些技术的代码必须运行在应用服务器中。所以我们在编写应用代码的时候,需要将我们的应用部署到应用服务器上。应用部署完成后,用户应该如何访问呢?直接访问应用服务器?这个时候,web服务器就需要发挥作用了。在互联网上,最强大的应用层协议是http协议。人们通过http协议访问网站,而web服务器就是支持http协议的服务器,所以称为http服务器。Web服务器接收http请求,然后将请求转发给应用服务器。有人会问,用户直接访问应用服务器不好吗?为什么到web服务器,然后到应用服务器?就功能而言,这是可能的。很多应用服务器,比如Tomcat,都有Web服务器的功能,直接访问也是可以的。但是在实际生产环境中,由于负载均衡、CDN加速等原因,我们还是需要在应用服务器前面增加一个web服务器来提高访问效率。常用的服务器有Nginx和Apache。我以前一直在谈论这个服务器和那个服务器。不知道有没有同学一头雾水。其实在我们真正接触到计算机专业领域之前,我们应该早就听说过服务器的概念了。比如我们以前打游戏感觉卡的时候,大家时不时会用到服务器这个词。但是在学习了tomcat和jetty之后才真正了解和研究server。那么究竟什么是服务器呢?服务器的概念其实很简单,就是一台电脑,那么它和我们日常使用的电脑有什么区别呢?首先,它一般没有显示器,只有主机。其次,它的操作系统不同于我们常用的windows和MacOS。更多的是一个nix系统。第三,它运行一些服务器端软件。比如我们上面提到的Tomcat、Jetty、Nginx、Apache,其实都是服务器软件,只是宿主机运行的是这些软件,所以有时候人们会把名字搞混。所以所谓的数据库服务器,众所周知,其实就是运行数据库的主机。说到服务器,我们需要掌握的重点知识就是服务器操作系统,也就是nix系统,比如CentOS、Ubuntu等。话虽如此,其实一个简单完整的JavaWeb项目就差不多了相同。我们简单回顾一下,首先,我们需要使用各种框架和开发技术来编写应用程序代码。接下来,我们需要一台安装了*nix系统的主机,在上面安装web服务器软件和应用服务器软件,然后将我们的应用代码部署到应用服务器上。现在我们只需要获取主机的IP地址就可以远程访问应用程序了。知识点列表:开发:1.视图层技术——HTML、CSS、JS、AJAX、Tiles、Velocity、FreeMarker2,持久层技术——MyBatis、Hibernate3、Spring、SpringMVC4、项目构建工具Maven5、日志Log4j6、版本控制Git数据库技术:1.SQL语句2.参数调优操作系统:1.熟悉Linux系统,原理,Shell命令服务器技术:1.熟练使用并理解一种应用服务器技术(Tomcat)的原理2.熟练掌握在使用和理解一种Web服务器技术(Nginx)的原理附加:缓存技术:1.熟练使用和理解一种缓存技术(Redis、Memcache、EhCache)非关系数据库熟练使用和理解一种非关系数据库(MongoDB)中间件技术:1.JMS:activeMQ和kafka/2。RPC:Dubbo设计模式:1.了解并能够使用几种最重要的设计模式网络:1.熟练使用和了解一种网络开发技术(Netty)2.熟悉http、TCP协议Java虚拟机:1名.熟悉jvm运行原理和内存分配2.jvm参数调优原文:blog.csdn.net/JasonLiuLJX/article/details/51494048阅读更多Android插件思考JavaConcurrent面试,幸好我有点道德,否则我会被Android酷炫实用的开源框架(UI框架)(Android)面试题级答案(精选版)相信自己,没有不可能,只有想不到![微信图片_20180703092352.jpg(https://upload-images.jianshu...