问题:在部分要使用交互性较好的网站开发中,前台使用Jquery、Ext等框架的情况下,数据的异步传输使用的是Json比较适合异步式网络交付的一种数据格式:
注:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
1、客服端提交访问请求
在Ext中,我们使用Ext提供的特殊的Ajax来讲客服端数据(主要是表单数据)传入后台服务端的Controller,简单一个删除按钮操作的Ext框架写法如下: Ext.Ajax.request({ url : './DelServlet', //参数传入 params : {roomids:ids}, waitTitle : '请稍候', waitMsg : '系统正在提交该任务,请稍候...', success : function(response) { //返回的Json数据对象 var msg = Ext.decode(response.responseText); Ext.MessageBox.alert("提示",msg.msg); ds.reload({params : {start : 0,limit : page}}); }, failure : function() { Ext.MessageBox.alert("提示","您出错啦,请慢慢检查..."); } });
以上ajax处理块放在一个panel中的tbar中。
2、控制层接受请求并处理
上面的请求到达DelServlet所指示的控制层后,在Servlet中使用Request接受传入的参数和数据,传入的参数可能是一个数组类型对象,再使用对应的服务层组件和Dao层结合处理业务逻辑,比如删除,删除成功后我们再通知客服端将会将Json对象的数据发送,
ResponseUtils.renderJson(rp, "{\"success\":true,msg:\""+"删除成功!"+"\"}");上面的renderJson()方法将封装好一遍达到扩展性如下:
public static void render(HttpServletResponse response,String text) { response.setContentType("application/json;charset=UTF-8"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); try { if(StringUtils.isBlank(text)){ text=""; } response.getWriter().write(text); response.getWriter().flush(); response.getWriter().close(); } catch (IOException e) { log.error(e.getMessage()); if(!"class org.apache.catalina.connector.ClientAbortException".equals(e.getClass().toString())) e.printStackTrace(); } }
这样,成功删除的结果是返回msg=删除成功,和success=true
关于采用Ext执行较为复杂的查询数据库并且将数据列表显示出来,下一节详细记录之。
版权声明:本文为博主原创文章,未经博主允许不得转载。