Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重定向到@ResponseBody?_Java_Json_Spring_Spring Mvc_Spring Security - Fatal编程技术网

Java 重定向到@ResponseBody?

Java 重定向到@ResponseBody?,java,json,spring,spring-mvc,spring-security,Java,Json,Spring,Spring Mvc,Spring Security,我有一些关于通过spring security进行ajax登录的信息: @RequestMapping(value="/entry.html", method=RequestMethod.GET) public String getEntry(){ return isAuthenticated()? "redirect:/logout.jsp":"entry"; } @RequestMapping(value="/postLogout.html", method=RequestMeth

我有一些关于通过spring security进行ajax登录的信息:

@RequestMapping(value="/entry.html", method=RequestMethod.GET)
public String getEntry(){
    return isAuthenticated()? "redirect:/logout.jsp":"entry";
}

@RequestMapping(value="/postLogout.html", method=RequestMethod.GET)
public @ResponseBody String getPostLogout(){
    return "{success:true, logout:true, session:false}";
}
流程是,当收到对/entry.html的调用时,它将检查并选择

  • 重定向到spring security处理的
    /logout.jsp
    =>,然后重定向到
    /postLogout.html
    =>响应JSON
  • 解析为查看
    条目
    ,这是一个只包含json字符串的jsp

我想知道我是否可以在
getEntry()
中使用
@ResponseBody
,而不用jsp只写json值?

从Spring返回json最简单的方法是

我将创建一个自定义返回对象:

public class MyReturnObject{
private boolean success;
private boolean session;
private boolean logout;
// + getters and setters
// + 3-arg constructor
}
然后像这样编写控制器方法:

@RequestMapping(value="/postLogout.html", method=RequestMethod.GET)
@ResponseBody 
public MyreturnObject getPostLogout(){
    return new ReturnObject(true,true,false);
}
Spring+Jackson将负责将对象序列化为JSON并设置正确的mime类型。有关完整的工作版本,请参阅