作者kyleJ (资工人)
看板java
标题[问题] Spring的RequestBody
时间Tue Aug 30 00:46:23 2016
大家好,扣除回文之外,这是我第一次在PTT上发文
若有不恰当的地方还请多多指教,谢谢
之前我用Java都是Java SE的部分比较多
主要做网页爬虫,连接档案系统或DB储存与分析资料
也有写Swing或JavaFX做GUI给User
但Java EE的部分就没什麽接触了
以前为了一个国科会案子有自己土法写JSP/Servlet
有维护过AXIS2产生的WebService的Server code
除此之外好像没什碰到Java EE的东西
後来我写网页服务应用都以PHP为主
再配合CodeIgniter的MVC框架才了解到MVC的好
所以最近要准备以Java写RESTful服务决定研究Spring+Hibernate
首先是Spring的部分照着spring.io的训练做真是吓人的好用
Hibernate的存在更是让我觉得之前浪费了很多生命写业务逻辑外的程式...
抱歉,前言好像多了点
在Spring上我使用RestController来写控制器
也用过RequestBody来让Client直接丢JSON变成Java物件使用
如一个新增User到资料库的服务:
@RequestMapping("/add")
public ResultBean addUser(@RequestBody User user){
// 先检查user不为null
// 再检查user里面所有field都不是null
// 再把user丢去hibernate储存
// 返回自订的Result物件让Sprint自动转为JSON
}
这边收到user第一件要做的事情检查是user不是nulll
第二件要检查是不是user的所有field都非null
update的服务也是如此,而其他物件的add、update也都必须要做
这是事先订好的,field可以是空字串,但不能是null
这部分我有写一个运用反射自动检查所有field的工具
丢任何物件进去都能检查有哪些field,以及是否全部都非null
但我好奇有没有方法让Spring自动检查RequestBody?
或是把Body转为物件後,先经过我写的程式检查再呼叫mapping的method?
若是Servlet我会override service method先检查
没问题後再让他转去doXXX方法执行
但对Sprint不熟不知道该怎麽做
上网查询查到比较多Struts2的资讯
想在此请问各位前辈们,感谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.132.178.168
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1472489186.A.256.html
1F:推 haha02: Spring帮你做data binding的时候可以一起做验证 08/30 00:56
感谢!这两天连同Spring MVC一起来研究看看
4F:推 gmoz: JSF2: 我也很好用阿QQ 08/30 13:00
之後有机会来看看 谢谢推荐!
5F:→ gpctv: 题外话,为何我用spring 4.0加Hibernate在作资料insert都会 08/30 13:14
6F:→ gpctv: 出现no session found 的错误 08/30 13:14
7F:推 haha02: 楼上你这个应该是Hibernate session没有绑到当前scope 08/30 14:10
8F:→ haha02: 你要看一下你的交易控制的AOP设定 08/30 14:10
※ 编辑: kyleJ (220.132.178.168), 08/30/2016 21:42:49
9F:推 gpctv: 感谢haha,我重new一个project,发现在application.xml内要 09/02 01:17
10F:→ gpctv: 加transcation manager,然後那个好像早期版本没那麽严,现在 09/02 01:17
11F:→ gpctv: 连线资讯好像要另外写然後放到web-inf内然後在设定property 09/02 01:17
12F:→ gpctv: Configuter 09/02 01:17
13F:→ gpctv: sessionfactory要定义datasourse 09/02 01:17
14F:→ gpctv: 有点颠覆过去的做法,感谢你 09/02 01:17