springMvc中ajax请求和json格式的相关问题

测试返回类型:
返回值类型是String:
在这里插入图片描述
这里面的返回值是要跳转目的页面的名称
上图:会跳转到到success.jsp去,我们去获取:

${requestScope.user};

返回值类型是String的还可以进行关键字来跳转到其他页面:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小凤这个名字是不是很魔性,哈哈哈哈哈哈哈哈哈哈
在这里插入图片描述
先把依赖导入,因为我们要用json来传吗,要把对象和json互转

  <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20140107</version>
    </dependency>
      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-core</artifactId>
        <version>2.9.0</version>
      </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>
    <dependency>

小白可能会问怎么转呢:以图为例
在这里插入图片描述
@RequestBody,POST的请求,把请求体中的数据封装到对象中,那要是get呢?参数就在地址栏中了
,这时,就通过一个注解@PathVariable

   /**
     * 参数占位符
     * @param id
     * @return
     * http://localhost:8080/anno/testPathVariable/10
     */
    @RequestMapping("/testPathVariable/{sid}")
    public  String testPathVariable(@PathVariable(name = "sid") int id) throws UnsupportedEncodingException {
        System.out.println(id);
        System.out.println("执行了");
        return "success";
    }

@ResponseBody:会把我们返回的list转换为josn格式传到前台

首先我先定义一个按钮,让其发生点击事件时就去发出post请求

<button id="btn">发送ajax请求</button>
<script src="js/jquery-3.2.1.min.js"></script>

来测试一下点击事件叭!!!

<script>
        $(function () {
            console.log("test........")
            $("#btn").click(function () {
                alert("test........");
            });
        })
    </script>

但是点击并没有反应???
原来拦截器给拦截了

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:SpringMVC.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

我们在web.xml中 的设置<url-pattern>/</url-pattern>会拦截除了.jsp的信息,所以我们要为静态资源css.js.img等放行

<!-- 通过mvc:resources设置静态资源,这样servlet就会处理这些静态资源,而不通过控制器
         设置不过滤的内容,比如:css,js,img等资源文件
         location指的是本地的真实路径,mapping指的是映射到的虚拟路径
    -->
    <!-- 放行静态资源-->
    <mvc:resources mapping="/img/**" location="/img/"/>
    <mvc:resources mapping="/css/**" location="/css/"/>
    <mvc:resources mapping="/js/**" location="/js/"/>

好了,现在开始进行ajax的请求了
这是我的Controller中的代码,一级目录是/user
在这里插入图片描述
这个是我的ajax的请求:
在这里插入图片描述

上面的两张图片是能够正确访问的呀
下面也是我遇到的一些问题:
问题一:不支持Media类型

HTTP Status 415 – Unsupported Media Type

有 错误提示:SpringMvc的Required String parameter ‘name’ is not present,name是我User中的一个属性,
在这里插入图片描述
我的text
在这里插入图片描述
这怎么会不存在呢,查看发现信息没有封装到User中
百度了,查看被人的博客发现:RequestBody不能映射到对象中
原来要导包啊!!!

<dependency>
      <groupId>repository.com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.33</version>
    </dependency>

在resources下的springmvc.xml中:

 <mvc:annotation-driven >
        <mvc:message-converters register-defaults="true">
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

注意也要查看是不是类型有问题???
我觉得这句话也挺有用的:
**form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。 当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。 当action为post时候,浏览器把form数据封装到http body中,然后发送到server**
大家一定要注意:这几个参数:
在这里插入图片描述
这个参数是告诉服务器,我传过去的是什么类型的
在这里插入图片描述
在这里插入图片描述
这两个是服务器端传过来的是什么类型
问题三:
在这里插入图片描述
20191223231157528.png)
在这里插入图片描述
会发现u不会转化为"name":"name","age":15,"password":"123"这种格式,就会报错,如果有小伙伴知道为什么,告诉我哈!!!
在这里插入图片描述
看到状态码是200,真开心,嘻嘻!!!
下面就是常用到的一些情况

接受参数为Account类型,返回值是String类型
在这里插入图片描述
在这里插入图片描述

 data:'{"user":{"name":"name", "password":"123", "age":13}}',

在这里插入图片描述

接受参数为Account类型,返回值是List集合在这里插入图片描述
前端按照对集合的操作获取即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值