java - ExtJS 的 JSP 后端

标签 java jsp architecture extjs extjs4

这个问题是关于使用 JSP 作为 ExtJS Controller 的正确架构。

我是服务器端开发的新手,但我对 ExtJS 4 非常熟悉,并且每天都在改进 Java 和 SQL。

我正在尝试创建一个 JSP Controller 来写入来自 ExtJS 中存储的数据。我在服务器上运行 MSSQL 数据库和 Tomcat。

我成功地创建了一个从数据库读取并返回 JSON 数据的 JSP (sqlData.jsp)。我将查询名称传递给此 JSP,然后它从“查询”表(列:[query_id]、[query_name]、[query])中查找查询内容。然后它运行查询并以 JSON 格式返回数据——这可以很好地将数据从数据库中获取到 ExtJS 中。

要使用此后端设置,我通常会这样配置商店:

var store = Ext.create('Ext.data.Store', {
    model: 'aModel',
    proxy: {
        type: 'ajax',
        url: 'sqlData.jsp?queryName=aQueryName',
        reader: 'json'
    },
    autoLoad: true
});

不知何故,我需要这个 sqlData.jsp 来处理来自 ExtJS 框架的 store.save() 调用。这意味着 JSP 需要接收一个 POST 请求,然后根据一堆 JSON 数据进行更新(ExtJS 将读取请求作为 GET 发送,写入方法如 store.save() 是 POST)。

我的计划是在 Java 中添加一些东西来识别它是 POST 还是 GET 请求。然后,如果是 POST 请求,我会将其发送到 JSP 中的不同 Java 方法来解析 JSON 并将其写入数据库。

当然,我必须更改我的“查询”表,让另一列用于更新/插入语句链接到相同的查询名称(即:[query_id]、[query_name]、[select_query]、[update_query] )。

这个后端实现有意义吗?

还有其他人使用 JSP 和 ExtJS 来实现这一点吗?

我注意到我可以在我的代理中设置一个 api 配置选项来为不同的操作(读取、写入、删除等)指定不同的 URL。我是否应该创建一个单独的 JSP 并使用此配置来引导所有写入请求?

在代理上添加 writer: 'json' 配置以便它在 POST 之前解析是否更明智?我想我必须以任何一种方式在 JSP 中解析它,所以我认为我不应该这样做。

任何指点将不胜感激。

最佳答案

由于您的后端是 Java,我真的建议您使用 Spring 3.0 MVC 来编写您的后端代码。

JSP 不是您正在做的事情的好选择,因为:

  1. 您在其中编写的函数不可进行单元测试。
  2. 您在其中编写的函数不可重用。
  3. 您在 JSP 中编写的代码本质上是功能性的,而不是面向对象的,您无法将所需的服务注入(inject)到 JSP 中。

Spring 3.0 MVC 与 ExtJS 4 具有很好的协同作用,即 RESTful URL 和内容协商。

这个例子展示了如何将这两个东西整合在一起。 http://java.dzone.com/articles/extjs-4-file-upload-spring-mvc

关于java - ExtJS 的 JSP 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8857443/

相关文章:

java - 为什么必须在 if 语句中定义扫描仪?

java - 在调用父类(super class)型构造函数之前无法引用 this

java - 如何将 JSP 中的错误请求设为 "throw"

java - Eclipse 在哪里存储为 Tomcat 生成的 servlet 文件?

java - Play Framework 不是热重载

java - 无限循环,因为迭代器不动

java - 网络应用通讯

c++ - 静态库、动态库、DLL、入口点、头文件……如何活着摆脱这个?

architecture - 您如何看待“"Don' t catch意外异常”最佳实践?

java - 接口(interface)是否会因为减少 Java 编译器或 Eclipse 中的依赖关系而影响性能?