zoukankan      html  css  js  c++  java
  • SSM框架中,controller的action返回参数给vue.js

    在SSM框架中,controller的action中,返回的是视图,即jsp页面或是ModelAndView,若是通过axios给vue传值的话,需要转换为字符串或是user实体类对象。

    使用@ResponseBody进行返回值转换。

    @RequestMapping("/login")
      @ResponseBody
      public String login(
              )throws Exception
      {
          
         String username ="csq";
         String password ="123"; 
        user r = this.userservice.findLoginUser(username, password);   
        if (r.getIdent() == 0) {
            return "index";
        }
        else{
            return "login";
        }
      }

    若是不加@ResponseBody,

    此时将报404,找不到对应的jsp页面,因为返回的是视图view。

    添加之后,

    返回“index”字符串。

    2.JSON对象(user实体类,list列表)

    @RequestMapping("/login")
      @ResponseBody
      public user login(
              )throws Exception
      {
         String username ="csq";
         String password ="123"; 
        user r = this.userservice.findLoginUser(username, password);
        if (r.getIdent() == 0) {
            return r;
        }
        else{
            return r;
        }
      }

    若是不加@ResponseBody,

    此时报404,返回的是视图view。

    添加之后,

    返回json对象,里面是查询到的一条数据。

    结论:

    若是通过jsp页面与后台数据交换的话,就不需要添加@RequestBody,直接返回视图就可以了,因为Spring mvc中默认返回的是视图;若是需要传参数给vue,则需要添加@RequestBody进行返回值的转换。

    注意:

    当controller中返回值为json对象时,需要进行一些配置:

    1.springmvc.xml文件中添加:

    <!-- 配置json转换器 -->
        <bean id="jsonMessageConverters" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>application/json;charset=UTF-8</value>
                </list>
            </property>
        </bean>
        
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
            <property name="messageConverters">
                <list>
                    <!-- JSON视图拦截器,碰到ResponseBody会触发 -->
                    <ref bean="jsonMessageConverters"/>
                </list>
            </property>
        </bean>

    此时运行会报500,ClassNOtFoundException,提示缺少相应的包,

    2.将jackson对应的三个jar包导入到项目中,

    此时才可以正确返回json对象,将不再报500.

    需要放到WEB-INF下的lib下,引入外部目录的jar,工程编译可以通过,部署的时候不会拷贝到工程里面去,还是找不到(重点)

    现在就可以传参数给vue,实现前后端数值的传递了。

  • 相关阅读:
    完全卸载Android Studio(卸载得干干净净)
    每日生活总结1
    求解协方差矩阵
    每天一个linux命令:ifconfig命令 临时修改重启后恢复原样
    每天一个linux命令(58):telnet命令
    每天一个linux命令:pwd命令
    每天一个linux命令(38):cal 命令
    每天一个linux命令:scp命令
    login shell与non-login shell的区别
    linux下重要的网络配置文件
  • 原文地址:https://www.cnblogs.com/5201314m/p/10648493.html
Copyright © 2011-2022 走看看