这个问题是关于使用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中解析它,所以我认为不应该这样做。
任何指针都会非常感激。
答案 0 :(得分:8)
由于你的后端是Java,我真的建议使用Spring 3.0 MVC来编写后端代码。
对于你正在做的事情,JSP不是一个好的选择,因为:
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来读取和写入数据库也非常简单。