首页
开源软件
问答
博客
翻译
资讯
Gitee
众包
活动
专区
源创会
高手问答
开源访谈
周刊
公司开源导航页
登录
注册
资讯
软件
博客
动弹
专区
问答
活动
工具
培训
APP
Gitee
新媒体
OSC 直播栏目
技术领航
OSC 公众号
硬核 + 嬉笑怒骂
OSC 微博
技术圈大 V 出没
OSC 视频号
AI 百科
OSC 今日头条
微头条显行业百态
LFOSSA 公众号
LF 开源软件学园
模力方舟公众号
大模型托管平台
Gitee 服务号
研发管理解决方案
登录
注册
从 MVC 到前后端分离
本文首先描述 MVC 模式是什么,然后针对 MVC 的不足发表了作者的个人观点,随后引出了基于 REST 架构实现前后端分离的方案,最后使用了 Java 的 Spring 框架搭建了一个简单的 REST 框架。全文从原理到实战,希望对于想了解如何实现前后端分离架构的朋友有所帮助。由于篇幅有限,且个人水平不足,难免会出现一些遗漏或不足...
作者:
黄勇
从 MVC 到前后端分离
分享
复制链接
README badge(
)
社交分享
微信
QQ
微博
0--_--0
2017/08/17 09:25
你这样对前端要求挺高的 我遇到的很多前端 只会画图而已
我想问下 我们这个单独有个java web项目 专门是通过httpclient调用 java Service的接口 这种模式叫什么? 这样也解决了跨域的问题 但是就是 html的页面整合就是我们java开发了
回复
举报
老菜鸟2022
2016/11/10 13:50
黄总你好,我们公司的网站,也部分实现了前后端分离,但遇到一些疑问:
1,如果页面只是单纯的查询,没有太多交互(比如一个数据列表页),后台可以完全不用开发jsp,html交给nginx,前端负责调用restful分页查询接口即可。
2,然而对于复杂逻辑的,对同步性要求较高的页面,比如订单提交页,支付页,我们还是走jsp。因为当前页面需要上一个页面传过来很多业务数据,而且这些数据还需要在后头做一下校验,用html不好控制。
请问我们的搞法对不对,期望您给一些指点。
回复
举报
Dr_啵
2016/06/17 12:05
分析的比较透彻 特别是对于rest的安全机制提供了参考的解决方案
回复
举报
黄勇
2016/03/31 17:38
引用来自“jiahuawalden”的评论
勇哥,这几天一直在看你这篇博文,而且自己也做了demo,遇到一个问题想寻求你的帮助。
问题就是当我新增一个广告的时候,前端传送的json数据无法自动反序列化成java对象。不知道你用没有遇到。
最终抛出一个异常
org.springframework.http.converter.HttpMessageNotReadableException: Required request body content is missing: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@ca5fd29d
然后我自己找了好久,在spring项目的官网上说只需要在@response注解的参数传入@RequestBody(required=false)就可以解决这个异常了,确实最终这个异常能够解决,但是又出现一个新的问题,就是前端的值在后端无法获取到。
前段json数据:
{'advertiserName':'这是一个名字','description':'这是一个描述'}
请问该问题现在解决了吗?建议您下载一下我提供的源码。
回复
举报
黄勇
2016/01/30 20:43
引用来自“FSW”的评论
你好,我想请问一下,springmvc4.2 中的这个配置 <mvc:annotation-driven/> 是否已带默认的JSON序列化,如果不需要定制,应该不需要加以下这个配置了吧
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
没错,由于本文对 ObjectMapper 进行了定制,所以需要重新配置 MappingJackson2HttpMessageConverter。
回复
举报
ulyn
2015/11/04 13:28
1.前面的图片裂了
2.跨域的可能还需要考虑下P3P Header
3.这种模式属于浏览器渲染的方式,采用这个模式的话,最好还能够提供前端请求合并的方式。总觉得还是得前后混合渲染的方式以达最优交互体验
回复
举报
黄勇
2015/11/04 00:12
引用来自“webit”的评论
这个图不妥
http://i.imgur.com/qu5dZn1.png
AJAX 可以理解成“传输协议”,来回箭头都应该是 AJAX
而 json 只是 response 的 返回格式 与之对应的request通常是 multipart/form-data,application/x-www-form-urlencode,multipart/form-data
当然 request 也可以采用 form-* + json 这是无限制的
绿色的是 ajax 请求,蓝色的是 ajax 请求回调函数返回的 json 数据,这是我想表达的
回复
举报
zqq90
2015/11/03 15:33
这个图不妥
http://i.imgur.com/qu5dZn1.png
AJAX 可以理解成“传输协议”,来回箭头都应该是 AJAX
而 json 只是 response 的 返回格式 与之对应的request通常是 multipart/form-data,application/x-www-form-urlencode,multipart/form-data
当然 request 也可以采用 form-* + json 这是无限制的
回复
举报
黄勇
2015/10/31 15:09
引用来自“Evils0rr0w”的评论
勇哥,前面都用注解,为啥最后的SecurityAspect不用注解呢?
如何使用注解呢?有何建议,欢迎讨论!
回复
举报
黄勇
2015/10/29 18:35
引用来自“boyart”的评论
@勇哥
,文中“序列化”和“反序列化”的定义好像说反了吧?
多谢指正,该 bug 已修复
回复
举报
Liuzh_533
2015/10/28 00:03
学习了~~
回复
举报
黄勇
2015/10/27 10:14
引用来自“iehyou”的评论
要实现这样的 要分工细 ,小点还是MVC快速。。。
这只是一个架构,和工作分工关系不大,也就是说,一个人同时做前端和后端都可以,并不需要两个人一前一后。
回复
举报
黄勇
2015/10/26 20:05
引用来自“hxf10047”的评论
读了你的架构探险,觉得写的很不错,就是内容少了点。还是关注你空间比较好
感谢支持,欢迎讨论!
回复
举报
黄勇
2015/10/26 17:57
引用来自“joaboo”的评论
赞,一直想在项目中做这样的尝试,但有个问题,都用ajax的话,seo怎么做?
有大量优化 seo 的解决方案,比如:在 a 标签中的 href 中设置需要让爬虫识别的内容,通过 onclick 事件来发送 ajax 请求。
回复
举报
黄勇
2015/10/26 11:15
引用来自“倚楼听风雨_”的评论
到处都是ajax,对服务器压力太大了,效果也不会好到哪去吧
实践下来发现服务器并没有太大的压力,前后端 API(也就是 http 请求)需要设计比较得当。
回复
举报
黄勇
2015/10/26 11:13
引用来自“西南茂”的评论
问个问题,这样做是不是导致前端开发者的工作量变大了呢?还有就是对服务器的压力...
前端需要对界面进行渲染,可考虑使用 angular 这样的框架,开发效率和用户体验都会高许多。服务器不会有太大压力,毕竟返回的都是 json 数据,需要控制请求频率与数据大小。
回复
举报
黄勇
2015/10/26 11:11
【补充】源码地址:
http://www.oschina.net/code/snippet_223750_51696
回复
举报
轩少_
2015/10/25 22:49
勇哥v5霸气
回复
举报
yzChen233
2015/10/25 22:39
到处都是ajax,对服务器压力太大了,效果也不会好到哪去吧
回复
举报
西南茂
2015/10/25 22:34
问个问题,这样做是不是导致前端开发者的工作量变大了呢?还有就是对服务器的压力...
回复
举报
开源中国首席红薯
2015/10/25 22:34
勇哥威武。
回复
举报
回复 @
{{ emoji.type }}
{{emojiItem.symbol}}
评论用户
u
n
推荐博客
Databend 产品月报(2025年4月)
Databend
·
今天 16:58
0 评论
开源领域的桌面端 Manus?最懂打工人的智能体?DeepChat !
肖滢
·
今天 15:49
0 评论
SQLShift 全新上线:Oracle→OceanBase 迁移利器
爱可生开源社区
·
昨天 14:54
0 评论
PAI Model Gallery 支持云上一键部署 Qwen3 全尺寸模型
阿里云大数据AI技术
·
昨天 13:24
0 评论
携手创未来,“HarmonyOS 协同·创新”技术沙龙在济南顺利举办
肖滢
·
昨天 13:23
0 评论
Dora SSR x AI x Blockly 低科技和高科技的碰撞
IppClub
·
昨天 11:14
0 评论
千亿级打点PV的成本治理实践
百度Geek说
·
昨天 11:09
1 评论
Dora SSR x Blockly—这种感觉我从未拥有
IppClub
·
昨天 11:07
0 评论
从架构原理到落地实践:Apache SeaTunnel×Cloudberry数据集成全解读
Apache SeaTunnel
·
前天 18:30
0 评论
LFOSSA 人才激励计划 2025春季正式启动!6类开源奖学金开放申请!
OSC 培训
·
前天 17:49
0 评论
删除一条评论
评论删除后,数据将无法恢复
取消
确定
顶部
我想问下 我们这个单独有个java web项目 专门是通过httpclient调用 java Service的接口 这种模式叫什么? 这样也解决了跨域的问题 但是就是 html的页面整合就是我们java开发了
1,如果页面只是单纯的查询,没有太多交互(比如一个数据列表页),后台可以完全不用开发jsp,html交给nginx,前端负责调用restful分页查询接口即可。
2,然而对于复杂逻辑的,对同步性要求较高的页面,比如订单提交页,支付页,我们还是走jsp。因为当前页面需要上一个页面传过来很多业务数据,而且这些数据还需要在后头做一下校验,用html不好控制。
请问我们的搞法对不对,期望您给一些指点。
引用来自“jiahuawalden”的评论
勇哥,这几天一直在看你这篇博文,而且自己也做了demo,遇到一个问题想寻求你的帮助。问题就是当我新增一个广告的时候,前端传送的json数据无法自动反序列化成java对象。不知道你用没有遇到。
最终抛出一个异常
org.springframework.http.converter.HttpMessageNotReadableException: Required request body content is missing: org.springframework.web.method.HandlerMethod$HandlerMethodParameter@ca5fd29d
然后我自己找了好久,在spring项目的官网上说只需要在@response注解的参数传入@RequestBody(required=false)就可以解决这个异常了,确实最终这个异常能够解决,但是又出现一个新的问题,就是前端的值在后端无法获取到。
前段json数据:
{'advertiserName':'这是一个名字','description':'这是一个描述'}
引用来自“FSW”的评论
你好,我想请问一下,springmvc4.2 中的这个配置 <mvc:annotation-driven/> 是否已带默认的JSON序列化,如果不需要定制,应该不需要加以下这个配置了吧<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
2.跨域的可能还需要考虑下P3P Header
3.这种模式属于浏览器渲染的方式,采用这个模式的话,最好还能够提供前端请求合并的方式。总觉得还是得前后混合渲染的方式以达最优交互体验
引用来自“webit”的评论
这个图不妥http://i.imgur.com/qu5dZn1.png
AJAX 可以理解成“传输协议”,来回箭头都应该是 AJAX
而 json 只是 response 的 返回格式 与之对应的request通常是 multipart/form-data,application/x-www-form-urlencode,multipart/form-data
当然 request 也可以采用 form-* + json 这是无限制的
http://i.imgur.com/qu5dZn1.png
AJAX 可以理解成“传输协议”,来回箭头都应该是 AJAX
而 json 只是 response 的 返回格式 与之对应的request通常是 multipart/form-data,application/x-www-form-urlencode,multipart/form-data
当然 request 也可以采用 form-* + json 这是无限制的
引用来自“Evils0rr0w”的评论
勇哥,前面都用注解,为啥最后的SecurityAspect不用注解呢?
引用来自“boyart”的评论
@勇哥 ,文中“序列化”和“反序列化”的定义好像说反了吧?引用来自“iehyou”的评论
要实现这样的 要分工细 ,小点还是MVC快速。。。引用来自“hxf10047”的评论
读了你的架构探险,觉得写的很不错,就是内容少了点。还是关注你空间比较好引用来自“joaboo”的评论
赞,一直想在项目中做这样的尝试,但有个问题,都用ajax的话,seo怎么做?引用来自“倚楼听风雨_”的评论
到处都是ajax,对服务器压力太大了,效果也不会好到哪去吧引用来自“西南茂”的评论
问个问题,这样做是不是导致前端开发者的工作量变大了呢?还有就是对服务器的压力...