我有一些东西可以通过 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的调用时,它会检查并选择
- 重定向到
/logout.jsp
=> 由spring security处理然后重定向到/postLogout.html
=> 响应JSON - 解决查看
入口
,这是一个jsp,只包含一个json字符串
我想知道我是否可以在 getEntry()
中使用 @ResponseBody
而无需使用 jsp 只编写一个 json 值?
最佳答案
从 Spring 返回 JSON 的最简单方法是 through Jackson .
我会创建一个自定义返回对象:
public class MyReturnObject{
private boolean success;
private boolean session;
private boolean logout;
// + getters and setters
// + 3-arg constructor
}
然后像这样编写 Controller 方法:
@RequestMapping(value="/postLogout.html", method=RequestMethod.GET)
@ResponseBody
public MyreturnObject getPostLogout(){
return new ReturnObject(true,true,false);
}
Spring+Jackson 将负责将对象序列化为 JSON 并设置正确的 mime 类型。参见 this previous answer of mine一个完整的工作版本。
关于java - 重定向到@ResponseBody?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6029253/