我使用HTML + JQuery作为UI,Spring-Roo生成包含Json对象字符串转换的服务层。它对我们很有用,如下面的示例代码:
@RequestMapping(headers = "Accept=application/json")
@ResponseBody
public ResponseEntity<String> ArticleController.listJson() {
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json; charset=utf-8");
List<Article> result = Article.findAllArticles();
return new ResponseEntity<String>(Article.toJsonArray(result), headers, HttpStatus.OK);
}
但在开发了几个示例页面之后,我有一些问题:
1)我们想使用Spring-Security作为访问控制模块,这个框架可以吗?服务器如何知道它是来自浏览器的相同会话请求?
2)纯HTML + JQuery真的没问题,而不是jsp服务器技术?因为我看到许多Ajax代码注入了html,其中很多都无法重用。我们知道服务器技术具有可以最大化代码重用的模板。我担心开发难度和维护工作。
PS: Why we decided using HTML+JQuery+Json is because we directly get HTML+CSS from Art designer,
and we have plan to support different client besides browser, so Json might be a good choice.
感谢。
答案 0 :(得分:2)
1)我们希望使用Spring-Security作为访问控制模块,[...]服务器如何知道它是来自浏览器的相同会话请求?
首先,必须以某种方式在服务器端建立会话。使用标准的Spring Security登录屏幕或使用ajax致电spring_security_login
。作为回报,服务器将发送带有JSESSIONID的cookie。此cookie随每个后续请求(包括AJAX请求)一起发送,因此服务器知道哪个用户调用REST方法。这是完全透明的。
当你退出时(通过调用j_spring_security_logout
)会话以及cookie被销毁。
我们正在成功使用这种方法(更多的是,由于历史原因,我们从JavaScript调用了soap服务!)并且它的效果非常好。
2)[...]纯HTML + JQuery真的好吗?因为我看到许多Ajax代码注入了html,其中很多都无法重用。 [...]
关注的真正分离是国王。将JavaScript保存在一个位置(.js
)文件中,将HTML保存在其他位置(.html
)。他们永远不应该混在一起。同时保持JavaScript代码的分层,尽可能远离DOM操作(例如,使用客户端模板引擎)。
此外,没有什么能阻止您在构建期间生成HTML,因此每个页面都包含常见的HTML代码段(如页眉和页脚)。