1

I'm using HTML+JQuery as UI, Spring-Roo to generate service layer which contains Json object string conversion. It works well for us like the following sample code:

@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);
}

but after several sample pages developed, I have some questions:

1) We want to use Spring-Security as Access Control module, is that OK for this framework? How can server knows it is the same session request from the browser?

2) Instead of jsp server technology, pure HTML + JQuery is really OK? Because I see many Ajax code injected in the html, and many of them cannot be reused. As we know server technologies have the template that can maximizing the reusage of code. I'm worrying about the develop difficulty and maintenance efforts.

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.

Thanks.

4

1 回答 1

2

1)我们想使用 Spring-Security 作为访问控制模块,[...] 服务器如何知道它是来自浏览器的同一个会话请求?

首先,会话必须以某种方式在服务器端建立。使用标准 Spring Security 登录屏幕或spring_security_login使用调用。作为回报,服务器将发送一个带有 JSESSIONID 的 cookie。这个 cookie 与每个后续请求(包括 AJAX 请求)一起发送,因此服务器知道哪个用户调用了 REST 方法。这是完全透明的。

此外,当您注销(通过调用j_spring_security_logout)时,会话和 cookie 都会被销毁。

我们成功地使用了这种方法(此外,由于历史原因,我们从 JavaScript 调用服务!)并且效果非常好。

2) [...]纯 HTML + JQuery 真的可以吗?因为我在html中看到很多Ajax代码注入,而且很多不能复用。[...]

真正的关注点分离才是王道。将 JavaScript 保存在一个位置 ( .js) 文件,将 HTML 保存在另一个位置 ( .html)。它们不应该混合在一起。还要让您的 JavaScript 代码分层并尽可能远离 DOM 操作(例如使用客户端模板引擎)。

此外,没有什么可以阻止您在构建过程中生成 HTML,因此每个页面中都包含常见的 HTML 片段,例如页眉和页脚。

于 2012-07-09T16:20:56.300 回答