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