Java 如何从控制器发送列表并在jsp中接受json

Java 如何从控制器发送列表并在jsp中接受json,java,ajax,spring,jsp,Java,Ajax,Spring,Jsp,我想以json格式显示该列表。当我运行这段代码时,它不会以json格式显示任何数据,而是以其他格式显示。如何显示该列表 控制器类 @Controller public class RoomController { @RequestMapping(method = RequestMethod.GET) public ModelAndView saveEmployee(){ System.out.println("welcome"); return new ModelAndView(

我想以json格式显示该列表。当我运行这段代码时,它不会以json格式显示任何数据,而是以其他格式显示。如何显示该列表

控制器类

@Controller
public class RoomController {

@RequestMapping(method = RequestMethod.GET)
public ModelAndView saveEmployee(){ 
    System.out.println("welcome");
  return new ModelAndView("NewFile","message","hello");
 }
@RequestMapping(value="ViewMember",method=RequestMethod.GET)
public @ResponseBody List<RoomMembers> getRoomMembers() {
    System.out.println("second test");
    List<RoomMembers> roomMemberList= new ArrayList<RoomMembers>();
    roomMemberList=roomDao.listMember();
    return roomMemberList;
}
@控制器
公共教室管理员{
@RequestMapping(method=RequestMethod.GET)
公共模型和视图saveEmployee(){
System.out.println(“欢迎”);
返回新的ModelAndView(“NewFile”、“message”、“hello”);
}
@RequestMapping(value=“ViewMember”,method=RequestMethod.GET)
public@ResponseBody List getRoomMembers(){
系统输出打印项次(“第二次测试”);
List roomMemberList=新建ArrayList();
roomMemberList=roomDao.listMember();
返回roomMemberList;
}
Jsp文件是

<head>
<title>Spring MVC Ajax Demo</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
function doAjax() {
  $.ajax({
    url: '/RoomController/ViewMember',
    type: 'GET',
    success: function(data) {
    var roommember=JSON.parse(data);;
      $('#time').html(roommember);
    }
  });
 }
</script>
</head>
<body>
<button id="demo" onclick="doAjax()" title="Button">Get the time!</button>
<div id="time">
</div>
</body>

SpringMVCAJAX演示
函数doAjax(){
$.ajax({
url:“/RoomController/ViewMember”,
键入:“GET”,
成功:功能(数据){
var roommember=JSON.parse(数据);;
$('#time').html(roommember);
}
});
}
抓紧时间!

您似乎请求了错误的url。在jsp中的脚本中,传递给do
$.ajax()
的url是url
/RoomController/ViewMember.html
。但在控制器中,您只将ir映射为“ViewMember”

@RequestMapping(value="ViewMember",method=RequestMethod.GET,headers="Accept=application/json")
尝试只请求
/RoomController/ViewMember
,让我们知道它是否有效

编辑

您说.html url被调用,并且您正在使用Spring 4.0.6,并且您得到一个
HTTP406(NOTACCEPTABLE)
响应

首先检查您是否以“application/json”的形式发送Accept标头。但是,在具有Spring 3.2或更高版本的Spring MVC控制器中,您将无法在映射为“
”.html”
/
”.htm“
的控制器中接收带有json响应的HTTP 200。发件人:

从Spring 3.2+开始,内容协商在eval
Accept
header之前有其他事实:

发件人:

在Spring MVC中启用内容协商

Spring支持两种选择格式的约定 必需:URL后缀和/或URL参数。它们与 使用Accept标头。因此,内容类型可以是 以三种方式中的任意一种进行请求。默认情况下,它们在此字段中被选中 订单:

  • 在URL中添加路径扩展名(后缀) 是必需的。对于电子表格,URL应为 .媒体类型的后缀 映射是通过JavaBeans激活自动定义的 框架或JAF(因此activation.jar必须位于类路径上)
  • 类似以下内容的URL参数:。的名称 参数默认为格式,但这可能会更改。使用 默认情况下,参数处于禁用状态,但启用后,将选中该参数 第二

  • 最后检查Accept HTTP header属性。HTTP>实际上是这样定义的,但正如前面提到的,它 可以 使用起来可能有问题

这实际上意味着,如果将
@Controller
方法映射为
.htm(l)
后缀,用于返回
html
,不会返回
json
或任何其他格式,即使您将其他格式发送为
Accept
标题。


因此,将您的映射更改为“.html”/.htm”以外的后缀(或不使用后缀),您将解决错误

ajax中的url错误,您应该编写“ViewMember”。

但是getRoomMembers()方法被执行并在我的控制台中打印第二个测试您使用的是哪种spring版本?3.2或更高版本?请提供ajax调用的Http响应状态以及它作为正文返回的内容,以防它实际返回某些内容406(不可接受)。它将不起作用。这就是我试图解释的。同时提供“.html”和“.htm”与html响应类型相关,因此当请求json、xml或任何其他接受媒体类型时,它们总是返回HTTP 406