SpringMVC处理ajax请求

使用到的技术

  • axios
  • vue.js
  • SpringMVC

注意事项

  • 引入axios和vue源文件
  • 保持对静态资源的访问,在spring-mvc.xml中配置<mvc:default-servlet-handler/>

使用到的注解

@RequestBody
@ResponseBody


向后端发送请求

以键值对的形式向后端发送请求参数:

html中的请求发送格式:

<div id="app">
    <input type="button" value="SpringMVC" @click="testAjax()">
</div>
<script type="text/javascript" src="./js/axios.min.js"></script>
<script type="text/javascript" src="./js/vue.js"></script>
<script>
    /*
    axios({
        url:"",
        method:"",  //以name=value的方式发送的请求参数,无论使用的方法是get或者post,请求参数都会被拼接到请求地址后
                    //此种方法的请求参数可以通过request。getParameter()获取
        params:{},  //以json格式发送的请求参数,请求参数会被保存到请求报文的请求题传输到服务器
        data:{}
    }).then(response=>{
        console.log(response.data)
    })
    */
    var vue=new Vue({
        el:"#app",
        methods:{
            testAjax(){
                axios.post(
                    "/test/ajax?id=1001",
                    {username:"admin",password:"123456"}
                ).then(response=>{
                    console.log(response.data);
                })
            }
        }
    })
</script>

controller:

@Controller
@RequestMapping("/test")
public class AxiosController {

    @RequestMapping("/ajax")
    public void test(Integer id, HttpServletResponse response) throws IOException {
        System.out.println("id:"+id);	//后端获取参数
        response.getWriter().write("hello,axios");	//返回前端的数据
    }
}

运行结果:
浏览器控制台打印:hello,axios
IDEA控制台打印:id:1001

以json格式发送的请求参数,使用Map集合进行接收

发送请求vue中的方法:

testRequestBodyMap(){
   	axios.post(
        "/test/requestBodyMap",
        {username:"admin",password:"123456",age:23,gender:"male"}
    ).then(response=>{
        console.log(response.data);
    })
},

controller:

@RequestMapping("/requestBodyMap")
public void demo1(@RequestBody Map<String,Object> map, HttpServletResponse response) throws IOException {
    System.out.println(map);
    response.getWriter().write("helloMap");
}

运行结果:
浏览器控制台打印:helloMap
IDEA控制台打印:{username=admin, password=123456, age=23, gender=male}

以json格式发送的请求参数,使用对象进行接收

发送请求vue中的方法:

testRequestBodyObj(){
    axios.post(
        "/test/requestBodyObj",
        {username:"admin",password:"123456",age:23,gender:"male"}
    ).then(response=>{
        console.log(response.data);
    })
},

controller:

@RequestMapping("/requestBodyObj")
public void demo2(@RequestBody User user,HttpServletResponse response) throws IOException {
    System.out.println(user);
    response.getWriter().write("helloObj");
}

运行结果:
浏览器控制台打印:helloObj
IDEA控制台打印:User{id=null, username=‘admin’, password=‘123456’, age=23, gender=‘male’}


发送的请求格式一样,只是接收的方法使用的形参格式不同
@RequestBody

1. 将请求中的内容和控制器方法的形参进行绑定
2. 使用@RequestBody注解将json格式的请求参数转化为java对象
   - 导入jackson依赖
   - 在springMVC的配置文件中设置`<mvc:annotation-driven/>`
   - 在处理请求的控制器方法的形参位置,直接设置json格式的请求参数要转换的java类型的形参,使用@RequestBody注解标识即可

后端响应数据到到前端

vue中的方法:

testResponseBody(){
    axios.post(
        "/test/responseBody"
    ).then(response=>{
        console.log(response.data);
    })
}

controller:

@RequestMapping("/responseBody")
@ResponseBody
public User demo3(){
    User user=new User();
    user.setId(1001);
    user.setUsername("张三");
    return user;
}

运行结果:
浏览器控制台打印:{id: 1001, username: ‘张三’, password: null, age: null, gender: null}

controller方法的返回值可以使对象,数组,集合…

@ResponseBody

将所标识的控制器方法的返回值作为响应报文的响应体响应到浏览器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值