ExtJS的JSP后端

时间:2012-01-13 21:24:25

标签: java jsp architecture extjs extjs4

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

我对服务器端开发相当陌生,但我对ExtJS 4非常熟悉,并且每天都在使用Java和SQL。

我正在尝试创建一个JSP控制器,以便从ExtJS中的商店中写入数据。我在服务器上运行MSSQL数据库和Tomcat。

我成功创建了一个JSP(sqlData.jsp),它从数据库中读取并返回JSON数据。我将查询名称传递给此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并将其写入数据库。

当然,我必须更改我的“查询”表,使另一列更新/插入语句链接到同一个queryName(即:[query_id],[query_name],[select_query],[update_query])。

这个后端实现是否有意义?

其他人使用JSP和ExtJS来实现这个更顺畅的目标吗?

我注意到我可以在我的代理中设置api配置选项,为不同的操作指定不同的URL(READ,WRITE,DELETE等)。我应该创建一个单独的JSP并使用此配置指示所有写入请求吗?

在代理上添加writer: 'json'配置以便在 POSTING之前解析会更明智吗?我想我必须在JSP中解析它,所以我认为不应该这样做。

任何指针都会非常感激。

3 个答案:

答案 0 :(得分:8)

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

对于你正在做的事情,JSP不是一个好的选择,因为:

  1. 你在那里写的功能不是单元可测试的。
  2. 你在那里写的功能不可重复使用。
  3. 您在JSP中编写的代码本质上是功能性的,而不是面向对象的,您无法将所需的服务注入到JSP中。
  4. Spring 3.0 MVC与ExtJS 4有很好的协同作用,即RESTful URL和内容协商。

    此示例显示如何将两者组合在一起。 http://java.dzone.com/articles/extjs-4-file-upload-spring-mvc

答案 1 :(得分:2)

我会跳过jsp并直接转到servlet。即在servlet中实现逻辑,以便返回json,并处理POST,PUT等等......

jsps意味着是观点。但在您的情况下,您的视图层是在客户端中运行的自己的应用程序。您只需要数据。

Servlet API puts允许您处理请求,获取http方法以及将数据流式传输到响应。

答案 2 :(得分:1)

我的建议是使用MVC服务器端框架。我最喜欢的是Grails,它允许您直接使用JSON对象进行输入和输出。使用grails来读取和写入数据库也非常简单。