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,实现前后端数值的传递了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM