【问题标题】:Single page application with Spring MVC使用 Spring MVC 的单页应用程序
【发布时间】:2018-02-20 12:53:36
【问题描述】:

我正在尝试使用 Spring MVC 构建一个单页 Web 应用程序,依赖于本机 Spring MVC 控制器(带有模型和视图)和返回 JSON 信息的通用休息控制器。

我想用一个简单的例子简单地解释一下我在做什么:

  1. 如果用户点击菜单内的主页按钮,Ajax 方法被调用,它向我的服务器发送一个 GET HTTP 请求 使用 Spring MVC 控制器处理请求,返回 呈现主页的 html 文件,来自 JSP 文件 包含 JSTL 和 Spring 标签。
  2. 一旦 Ajax 方法接收到主页的内容,它就会改变 我的 html 正文中的主 div 的内容与这个新的。 最终用户拥有的是没有刷新的首页 页面(对不起,文字游戏)。

唯一的问题是,如果用户在浏览器中写入 Ajax 方法用于获取主页内容的 GET HTTP 请求的 url,现在发生的情况是他将在浏览器中加载主页内容(并且当然我不希望他能够手动发送这个 get http 请求)。

我真的希望用这个例子来解释自己,我想问你是否有任何建议可以在这个方向给我以解决这个问题!我知道使用诸如 React 或 Angular 之类的框架,事情会容易得多,但我仍然必须学习一个!这将是我将来对这个 web 应用程序进行的第一次升级。

非常感谢您的帮助!

【问题讨论】:

  • 尝试验证从 JavaScript 到 API 的所有 HTTP 调用(例如使用 JSON Web 令牌之类的令牌)。如果令牌不存在或不正确,则返回 401 HTTP 状态(未授权)。
  • 好的,非常感谢,这听起来真的可以帮助我!你有推荐的指南吗?
  • 我在下面回答。您必须自己搜索才能这样做,但我添加了一个很好的链接;-)

标签: java spring web-applications


【解决方案1】:

你必须使用@RestController 而不是@Controller(或者你可以为类使用@Controller,为单一方法使用@ResponseBody)。因此你的返回方法应该是一个ResponseEntity。根据您的代码流程,您可以设置 HttpStatus.OK 或 HttpStatus.INTERNAL_SERVER_ERROR。

【讨论】:

  • 非常感谢您的评论!是的,实际上我正在按照你说的做!可能我没有解释清楚,问题是如果用户在浏览器中输入url然后回车,他会在屏幕上得到相同的内容,这是我不想要的!
【解决方案2】:

尝试验证从 JavaScript 到 API 的所有 HTTP 调用(例如使用 JSON Web 令牌之类的令牌)。如果令牌不存在或不正确,则返回 401 HTTP 状态(未授权)。

有很多像这样的好教程:http://www.baeldung.com/spring-security-oauth-jwt

您只需使用身份验证返回的令牌将 Http Header 添加到您的 ajax 调用中。

【讨论】:

  • 非常感谢!我会尽快尝试这个解决方案!
猜你喜欢
  • 1970-01-01
  • 2013-10-10
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-06-19
相关资源
最近更新 更多