导读去年毕业来到杭州已经半年多了。我是软件工程专业的,上学的时候理论就可以掌握了。但是在实际应用的时候,还是有一些人不是很理解,所以一直向带我的人请教。毕竟,三人同行,必有我师。经过一段时间的理论和实践,我或多或少地掌握了方法。前后端分离(separationofserverandclient)没有前后端分离在实践的过程中,我也和其他程序员进行了交流。很多都没有把前后端(server和client)分开,而是前后端一起做的。失去。如果前后端不分离的话,此时server端主要是指java代码,client端主要是指jsp。数据通过springMVC封装到ResponseBody中,然后返回给jSP。JSP获取数据并呈现页面。这里不需要考虑端口号。比如:/***CreatedByzbyon16:032019/3/5*/@RequestMapping(value="/",method=RequestMethod.GET)@ResponseBodypublicResultfun(){returnnull;}前后端分离当然,当前后端分离,后端还是以java代码为主,前端变化很大。.后台java通过springMVC的Rest方式的Controller层从前端页面接收接口和参数。经过一系列的入参校验后,交易层(即服务层)就被调用到这里。这里主要是hibernate(mybatis)层的事务,实现数据库的事务性操作。然后调用*dao(dataAccessobject)层实现事务的原子操作,即将瞬态java对象转换为持久态数据库对象。逐层深入,逐层返回,会通过Result传回前端。前端主要使用h5进行页面布局,CSS3进行页面美化。JavaScript配合jQuery调用后台的接口,传递参数,获取后台返回的数据。返回数据的双向绑定是通过vue.js实现的。可能还会涉及到其他框架,比如页面布局的bootstrap,数据表格展示的jqgrid等等。前后端分离,如何实现数据交互我们将写好的java代码部署在服务器上,比如Tomcat,Jboss等主流服务器。这里我们使用Tomcat来说明。我们将项目部署在Tomcat上。具体如何部署Tomcat,可以参考本教程《Tomcat8权威指南》。我们现在一般在maven中以插件的形式配置Tomcat,方便本地测试,路径为根路径,比如下面的代码:install//mavencloudCodeSaleManager生成的war生成的名称src/main/resourcestrueorg.apache.tomcat.maventomcat7-maven-plugin2.258081/UTF-8zfounder-custmom-member-portaltomcat7在真实项目中,一般会有测试服务器和正式服务器。测试服务器是我们用户的测试数据库和测试服务器,我们使用的官方服务器是官方数据库和官方服务器。有人说,输成这样是胡说八道。但是我们的测试数据库和官方数据库不同,所以如果都写在同一个配置文件里,修改起来会很麻烦。因此,我们在打包的时候可以有一个测试包和一个正式包,其中涉及到mavenprofile配置文件(在pom中配置激活配置文件):devtrue../../platform-dev.properties<配置文件>prd../../platform-prd.properties/profile>Tomcat启动后,访问后端接口(url)的格式如下:scheme://host.domain:port/path/filenamescheme——定义了Internet服务的类型。最常见的类型是httphost-定义域主机(http的默认主机是www)domain-定义Internet域名,例如runoob.com:port-定义主机上的端口号(http的默认端口号是80)path-定义服务器路径(如果省略,文件必须在网站的根目录)。filename-定义文档/资源的名称当然如果没有域名,我们要访问本地,也可以这样:http://ip:port/path/filename这里的ip涉及到内网和本地地址。内网也是局域网,一般都是192.168开头的……本机地址是:127.0.0.1。两者有什么区别?假设我的server_path访问如下constant={dev:{**server_path:"http://127.0.0.1:58081/",**imgPre:"http://web.cs.wentonghuishou.com/",commonParams:{}},}_env="dev";window.constant=constant[_env];我做后端Java,启动Tomcat。我的同事是做前端的,他是用上面的server_path来访问我的,也就是说他想通过我本地ip请求我的接口,是没有办法访问到我后端的接口的。因为这是我的本地ip,只有我个人可以访问。因此,我可以自己访问。如图:如果他把server_path改成server_path:"http://192.168.40.177:58081/",那么他想通过局域网访问我的界面,可以访问我。因为我们在同一个局域网。如图:如何从外网访问,即我和同事不在同一个局域网,但是他想访问我的后台接口,怎么办?应该是去掉了网络域限制,我可以访问我的内网,也就是我访问的本机。这时候出现了内网穿透的软件,比如ngrok,小米球等,小米球可以实现内网穿透。它是如何实现内网穿透的,主要是通过域名的反向代理,也就是所谓的反向代理。其实反向代理也没那么高大上,别被它吓倒了。当然这里需要输入端口号,这里是前端hbuilder的端口号,也就是8020这个端口号,为什么要端口号呢?端口号可以判断被黑机器的进程。比如mysql的3306端口号,Tomcat的80端口号等等为什么是前端端口号,因为我们先访问页面,页面通过server_path访问后端接口,我们不需要这里要考虑这方面。小米球的配置如下,这里是免费版:当我们在浏览器地址栏输入http://zby.ngrok.xiaomiqiu.cn...,你会发现可以访问我的前端-结束页面,并调用我后台的接口,实现了ip的反向代理。域名解析也是一样,使用ip的反向代理。如图所示: