Java Web开发技术方案

Java Web开发技术方案

Java Web开发分前端、后端:
Java Web前端:
—就是在Web应用中用户可以看得见碰得着的东西。包括Web页面的结构、Web的外观视觉表现以及Web层面的交互实现。
—前端开发主要使用ajax/jQuery/js/html/css等, 使用JS,应用JQuery/html/CSS等,进行交互效果的开发
Java Web后端:
—后端更多的是与数据库进行交互以处理相应的业务逻辑。需要考虑的是如何实现功能、数据的存取、平台的稳定性与性能等
—后端开发主要使用java/MySQL/Oracle等, 使用Java、SQL语句开发.

Java web前端开发框架:
前端工程化的框架nodejs,React,router,react,redux,webpack

Java web后端开发框架:
SSM & SSH: spring + springmvc/struts + spring jdbc/hibernate/mybatis等

大多数项目在java后端都是分了三层:
控制层(controller/action),业务层(service/manage),持久层(dao)。
控制层
负责接收参数,调用相关业务层,封装数据,以及路由到jsp页面。然后jsp页面上使用各种标签(jstl/el)或者手写java(<%=%>)将后台的数据展现出来
业务层
负责实现业务逻辑
持久层
数据访问、存储

Java web应用运行机制:
使用maven或者eclipse等工具把你的代码打成一个war包,把这个war包发布到你的生产环境下的web容器(tomcat/jboss/weblogic/websphere/jetty/resin)里。
发布完了之后,启动你web容器,开始提供服务,然后通过配置域名,dns等,设计的网站就可以访问了
1、在浏览器中输入你的网站域名(www.xxx.com),之后发生了什么?
浏览器在通过ip路由到你的服务,在tcp3次握手之后,通过tcp协议开始访问你的web服务器,
你的web服务器得到请求后,开始提供服务,接收请求,之后通过response返回你的应答给浏览器

2、上面的执行过程在实现上分为两种:
传统的Java web项目开发:
1、客户端发送请求
2、服务端的servlet或controller接收请求(路由规则由后端制定,项目开发的重心在后端,web后端的权重很大,UI,前端只是附属)
3、调用service,dao代码完成业务逻辑
4、返回jsp
5、jsp展现一些动态的代码

新的Java web项目开发方式
1、浏览器发送请求
2、直接到达html页面(路由规则由前端制定,项目开发重心在前移)
3、html页面负责调用服务端接口产生数据(通过ajax等等,后台返回json格式数据)
4、填充html,展现动态效果,在页面上进行解析并操作DOM

前端不仅仅是css,js那么简单,前端在使用了一些框架和工具形成前端项目,在项目层面拆开,前端也需要有MVC框架,也需要编译,打包,部署,是很复杂的,
越是大型互联网公司,前端项目越是工程化的项目,包括前端项目的版本管理,运维等。

java web项目都尽量要避免使用jsp,越是大中型的web应用,越是要搞前后台解耦,玩分布式架构,这样的web应用架构才更强:
正常的分布式架构,是都要拆开的:
web服务器集群(nginx) + 应用服务器集群(tomcat) + 文件服务器集群 + 数据库服务器集群 + 消息队列集群 + 缓存集群等等

新的Java web项目开发方式的请求步骤:
大量并发浏览器请求—>web服务器集群(nginx)—>应用服务器集群(tomcat)—>文件/数据库/缓存/消息队列服务器集群
同时又可以玩分模块,还可以按业务拆成一个个的小集群,把核心的业务封装成一个业务中心,玩远程业务调用,玩rpc,玩soa,使用springboot+Docker玩微服务,这样才是一个弹性的分布式架构

特点:
1、实现真正的前后端解耦,前端服务器使用nginx。
前端服务器放的是css、js、图片等等一系列静态资源(甚至还可以把css、js、图片等资源放到特定的文件服务器,例如阿里云的oss,并使用cdn加速),
前端服务器负责控制页面引用、跳转、调用后端的接口
后端服务器使用tomcat(把应用服务器tomcat想象成一个数据提供者),加快整体响应速度,后端服务暂时超时或者机,前端页面也会正常访问,只不过数据刷不出来而已
2、Java web项目开发分工明确:
前端工程师:负责页面逻辑,跳转错误,浏览器兼容性问题,脚本错误,页面样式等问题。
后端工程师:负责接口数据出错,数据没有提交成功,应答超时等问题的处理。
3、大并发情况下,可以同时水平扩展前后端服务器,通过部署服务器集群。减少后端服务器的并发压力,除了接口以外的其他所有http请求全部转移到前端nginx上。
前端框架解决类似于页面嵌套,分页,页面跳转控制等功能,而调用接口就是调用controler里的方法,如果页面上有一些权限等等相关的校验,那么这些相关的数据也可以通过ajax从接口里拿
4、也许你也需要有微信相关的轻应用,那样你的接口完全可以共用,如果也有app相关的服务,那么只要通过一些代码重构,也可以大量复用接口,提升效率。
5、页面显示的东西再多也不怕,因为是异步加载

Java Web开发中前后端分离的技术方案:
1、前端使用AngularJS编写SPA(Single Page Application)应用,后端服务器只提供RESTful接口且完全无状态化。
特点:
前后完全分离,前端开发者完全不需要关心服务端用了什么技术,只需要一份接口说明文档即可。
移动端app与PC端网站可以共用同一套接口。
如果”页面”过多,SPA应用第一次加载速度会稍慢。

2、使用NodeJS渲染Web页面,然后调用后端RESTful接口。
特点:
前后完全分离, 后端开发者可以专注于业务逻辑开发。
NodeJS代码如果异常处理不好容易直接挂掉进程。
增加了一层NodeJS,提高了网络传输的开销,增加了部署和维护成本

已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
JAVA开发人员必备是HTML格式的 JavaTM 2 Platform Standard Edition 6 API 规范 本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于生成与呈现无关的图像的类和接口。 java.awt.print 为通用的打印 API 提供类和接口。 java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 java.beans.beancontext 提供与 bean 上下文有关的类和接口。 java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和接口,以获得关于类和对象的反射信息。 java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。 java.net 为实现网络应用程序提供类。 java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。 java.nio.channels 定义了各种通道,这些通道表示到能够执行 I/O 操作的实体(如文件和套接字)的连接;定义了用于多路复用的、非阻塞 I/O 操作的选择器。 java.nio.channels.spi 用于 java.nio.channels 包的服务提供者类。 java.nio.charset 定义用来在字节和 Unicode 字符之间转换的 charset、解码器和编码器。 java.nio.charset.spi java.nio.charset 包的服务提供者类。 java.rmi 提供 RMI 包。 java.rmi.activation 为 RMI 对象激活提供支持。 java.rmi.dgc 为 RMI 分布式垃圾回收提供了类和接口。 java.rmi.registry 提供 RMI 注册表的一个类和两个接口。 java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security 包中的类取代。 java.security.cert 提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口。 java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页