java - 重定向到@ResponseBody?

标签 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=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/

相关文章:

java - 如何在Spring Web Service中实现计划任务?

java - 如何在 Spring Boot 中获取 log4j2.properties 文件以从 pom.xml 读取文件名

java - 使用 Spring 在应用程序启动后执行方法

java - JIRA IssueInputParameters - 指定问题值的构建器

json - Twitter Json 数据未在 Hive 中查询

python - 使用 Python 在 Parquet 中嵌套数据

php - 使用 jQuery/PHP/AJAX/JSON 进行 Lucene/Solr 即时开发

java - EL 与 equalsIgnoreCase 的比较

java - MacOS 上的 mongo-java-driver 问题

java - 依赖注入(inject)和@DependsOn之间的区别