某教育平台项目开发之--使用SSM框架开发过程遇到的问题总结
2016-08-14 14:50
801 查看
本次开发一个系统,前端是Android端,交互方式用json。
一、关于
前端用json数据传输。json数据格式如下:
后端用一个对象封装传递过来的数据,需要用到一个注解
(1)User里面的属性与json数据的属性一致(包括变量名和数量),那么这是最理想的情况;
(2)User里面的属性比json数据的属性多,但其他匹配,那么User里面的数据将被设置为默认值(如果是对象型,则是Null)
(3)User里面的属性比json数据的属性少。这时候可以用
二、关于无法正确解析前端传来的json数据
注意提醒前端用的编码方式跟后台一样,如果后端设置了json的格式是
三、当User里面的属性比json数据的属性少时,开发中又不想写个拓展类,但是多余的属性(比如“type”)又在方法体起作用。例如:
type=0,进入注册用户的代码块;type=1,进入找回密码的代码块,这时候的解决办法就是:
三、关于用@RequestBody封装前端传递过来的JSON数据
这是我在开发过程中无意间在百度看到的,可以用下面两种方法对前端的JSON数据进行封装。
一、用Map
二、用阿里巴巴的JSONObject (在开发书香校园APP的后端,我用的是这个,很实用,不必在担心前面所说的三种情况了)
联想:
数据表里面的字段一般都对应一个POJO类的属性,但是有些需求需要写复合查询语句,这样必定设计到两张表,select到的字段可能是包含两张表的某些内容,按照以往的做法,我会再写一个VO类,但是现在找到一个方法解决这个问题,不用写过多的VO类
一、关于
@RequestBody和
@JsonIgnoreProperties(ignoreUnknown=true)的问题
前端用json数据传输。json数据格式如下:
{ "mobileNum" : "13800138000", “userName”:”df54df”, "Password" : "123456" }
后端用一个对象封装传递过来的数据,需要用到一个注解
@RequestBody,这个注解的作用就是封装前端传递过来的Json数据到紧跟该注解的对象,那么会出现3种情况(假设封装的对象是User user,并且要求json数据的命名与User里面的属性命名一致):
(1)User里面的属性与json数据的属性一致(包括变量名和数量),那么这是最理想的情况;
(2)User里面的属性比json数据的属性多,但其他匹配,那么User里面的数据将被设置为默认值(如果是对象型,则是Null)
(3)User里面的属性比json数据的属性少。这时候可以用
@JsonIgnoreProperties(ignoreUnknown=true)简单地忽略掉从JSON(由于在应用中没有完全匹配的POJO)中获得的所有“多余的”属性。例如:
@JsonIgnoreProperties(ignoreUnknown = true) @Table(name="user") public class User extends Unique{ @Column(name="mobile_num") private String mobileNum; @Column(name="user_name") private String userName; @Column(name="password") private String password; @Column(name="has_card") private int hasCard; @Column(name="salt") private String salt; .....忽略以下getter、setter代码 }
二、关于无法正确解析前端传来的json数据
注意提醒前端用的编码方式跟后台一样,如果后端设置了json的格式是
application/json;charset=UTF-8,那么前端也要一样。在开发中,没加
@RequestBody的时候,系统能进入对应的方法体,只是想要封装json数据的对象获取不到数据,但是加了
@RequestBody却进入不了方法体。报的错误是不支持某种格式。
三、当User里面的属性比json数据的属性少时,开发中又不想写个拓展类,但是多余的属性(比如“type”)又在方法体起作用。例如:
type=0,进入注册用户的代码块;type=1,进入找回密码的代码块,这时候的解决办法就是:
@RequestMapping(value="/login/{type}",method= RequestMethod.POST) public @ResponseBody String login(HttpServletRequest request, @PathVariable("type") String type,String timestamp, @RequestBody User user){ if("0".equals(type)){ //注册用户的代码块 }else{ //找回密码的代码块 } }
三、关于用@RequestBody封装前端传递过来的JSON数据
这是我在开发过程中无意间在百度看到的,可以用下面两种方法对前端的JSON数据进行封装。
一、用Map
method(@RequestBody Map map) { map.get("code"); }
二、用阿里巴巴的JSONObject (在开发书香校园APP的后端,我用的是这个,很实用,不必在担心前面所说的三种情况了)
method(@RequestBody JSONObject jsonObj) { jsonObj.getString("code"); }
联想:
数据表里面的字段一般都对应一个POJO类的属性,但是有些需求需要写复合查询语句,这样必定设计到两张表,select到的字段可能是包含两张表的某些内容,按照以往的做法,我会再写一个VO类,但是现在找到一个方法解决这个问题,不用写过多的VO类
相关文章推荐
- 使用Vue框架开发商城mall项目中所遇到的问题及技术点总结
- 公司项目开发过程中遇到的问题总结!
- 微信后台开发三大框架使用过程中遇到的问题
- ssm框架开发过程中遇到的一错误以及解决问题提示
- maven配置SSM框架整合 其中包括maven在使用过程中遇到的问题
- 使用ssm框架的java项目由mysql转oracle遇到问题
- Android项目《Tom伴你行》开发过程中遇到的问题总结
- moss开发实施过程中遇到的问题总结:项目层面
- 开发过程中遇到的问题总结
- 开发过程中遇到的问题总结
- 项目开发遇到的问题及其解决.总结
- 使用Pluto+Tomcat 开发遇到的问题和总结 (2)
- 项目开发中经常遇到的一些问题总结
- 在使用Struts的过程中也遇到了一些问题,现在总结一下
- [项目过程中所遇到的各种问题记录]编辑器篇——FCKeditor相关知识及各种常见使用问题
- 开发过程中遇到的问题总结
- 开发过程中遇到的问题总结
- 开发过程中遇到的问题总结
- 开发过程中遇到的问题总结
- 项目采用asp.net mvc开发过程中遇到的问题。