在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,實現前后端數值的傳遞了。