springMVC(六)json请求和json响应

首先我们先实现一次key\value请求,然后在实现json请求,响应都使用json格式。

需求:根据学院id查询学院信息。

前端页面实现:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>


    Title
    





    

将内容添加到h1,里面作为子元素:

controller层

这里发过来的是普通请求,当然因为方便,我直接设置了defaultValue。json响应只需要用注解@ResponseBody修饰即可。(啊喂,你别告诉我处理json的包还没导入进来这是我从其他地方复制的)


    
      org.codehaus.jackson
      jackson-core-asl
      1.9.13
    
    
      org.codehaus.jackson
      jackson-mapper-asl
      1.9.13
    

    
      com.fasterxml.jackson.core
      jackson-annotations
      ${jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-databind
      ${jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-core
      ${jackson.version}
    
    
      net.sf.json-lib
      json-lib
      2.1
      jdk15
    

controller具体实现:

    @RequestMapping("/selectFacultyById3.action")
    public @ResponseBody Faculty selectFacultyById3(@RequestParam(value = "facultyCustom.facultyId",defaultValue = "1") Integer facultyId){
        Faculty faculty = facultyService.selectFacultyByFacultyId(facultyId);
        return faculty;
    }

测试:

springMVC(六)json请求和json响应_第1张图片
image.png

查看响应的json数据:


springMVC(六)json请求和json响应_第2张图片
image.png

解析出来的结果:


springMVC(六)json请求和json响应_第3张图片
image.png

添加到页面的指定位置:


springMVC(六)json请求和json响应_第4张图片
image.png

注意controller层返回结果就是你需要返回的json字符串,别用ModelAndView这种奇怪的东西~~~

请求方式json方式

这里遇到一个好大好大的坑:controller层接受json
一定要用对象!
不然参数绑定不上!!!!!!!
当然更不要用@RequestParam修饰Integer,String等包装类和对象。(如果请求类型不是json那就无所谓)

错误集锦:
使用包装类Integer
错误代码如下:

    @RequestMapping("/select.action")
    public @ResponseBody Faculty select(@RequestBody Integer facultyId){
        Faculty faculty = facultyService.selectFacultyByFacultyId(facultyId);
        return faculty;
    }

错误现象:


springMVC(六)json请求和json响应_第5张图片
image.png

这种错误很难察觉,一般都会认为路径存在问题,无论怎么改都是404-错误。。然后就会想清除缓存然后发现还是没用。就会写个普通的方法,却发现有用。一旦使用了@RequestBody就抽风。。。这就是我的测试步骤。。。。。(其实就是初学,对于接受参数不懂)


后记
之前发生错误的原因400,可以理解为参数绑定之类的错误,就是springmvc没有绑定成功导致错误。
解决方案一:
@RequestBody Map map;
使用map接受参数
解决方案二:
使用对象,属性对应名字。


controller层


    @RequestMapping("/select.action")
    public @ResponseBody Faculty select(@RequestBody Faculty facultyTemp){
        Faculty faculty = facultyService.selectFacultyByFacultyId(facultyTemp.getFacultyId());
        return faculty;
    }

jsp页面
改动部分是contentType: "application/json",设置请求类型data : JSON.stringify(json)这是讲数组转为json对象。之前获取到的json用的是eval解析。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>


    Title
    





    

将内容添加到h1,里面作为子元素:

测试结果:


springMVC(六)json请求和json响应_第6张图片
image.png

请求内容:

springMVC(六)json请求和json响应_第7张图片
image.png

响应内容:


springMVC(六)json请求和json响应_第8张图片
image.png

springmvc就算是结束了。。。validate校验比较简单看后面会不会补充。


明天更新的内容是json,主要是因为json这个东西无论是前端人员,还是后端人员都需要处理json。那么明天我将会用jquery ajax对json进行一些操作。

你可能感兴趣的:(springMVC(六)json请求和json响应)