- 浏览: 85681 次
- 性别:
- 来自: 大连
最新评论
-
fxiaozj:
不知道能不能把JSON写一个通用的,要不然每个entity都得 ...
dhtmlxgrid 2.0 标准版 dwr实现增、删、改、查 -
mfkwfc:
为什么没看到json数据的格式呢?
dhtmlxgrid 2.0 标准版 dwr实现增、删、改、查 -
exindedan:
非常不错的教程,写得也很详细!希望能附上源代码!赞一个!
dhtmlxgrid 2.0 标准版 dwr实现增、删、改、查 -
yueyueaihuihui:
好文章!谢谢!
response.setContentType 对应的文件类型
dhtmlxgrid 2.0支持四种类型的数据:
- xml;- csv;- json;- javascript array.
下面只介绍xml,json类型的数据。
一、xml类型
dhtmlxgrid要求的xml格式如下:
<rows>
<head>
<beforeInit>
<call command="methodName"><param>string value</param></call>
</beforeInit>
<afterInit>
<call command="methodName"><param>string value</param></call>
</afterInit>
<column width="50" type="ed" align="right" color="white" sort="str">Sales</column>
<column width="80" type="co" align="left" sort="str">Shipping
<option value="1">1 Day</option>
<option value="7">1 Week</option>
...
</column>
...
<settings>
<colwidth>%</colwidth>
</settings>
</head>
<row id="1">
<cell>text</cell>
...
</row>
...
</rows>
<column>标签之间的文字是就是列标题
column 可用的属性有:
width - 宽,单位是像素
type - 列的类型
align - 单元格文本对齐方式
color - 列背景颜色
sort - 排序类型
id - 列id,可选
hidden -这个是专业版的属性,标准版不能使用。
设置列宽的单位是%,不设置默认是像素px。
<row>表格中的每一行,要有唯一的id值属性。
<cell>一行中的一个单元格。
xml中常用的字符串常量
下面这个类构造列,单元格,设置皮肤
下面这个类包含查询,删除,保存方法。里面有返回json数据的方法
Dhtmlxgrid是hibernate的数据库映射文件,再次为了方便直接在Service层使用,在实际项目中不推进这样做。Dhtmlxgrid代码如下
GridData、Rows都是构造json字符串用到的。这里返回字符串到前台,但是不能直接使用,还要转成json对象。我没想到更好的办法做这件事情
GridData代码:
Rows代码:
服务层接口代码IDhtmlxGridManager:
HandleException代码:
dao层接口代码:
dao接口实现类:
dao异常类:
到此后台代码都已经完成了。前台使用dwr远程调用这些方法。spring就不写出来。dwr.xml如下:
jsp代码也不列出来了,增加操作对应的js方法为add(),删除操作对应js方法del(),保存save();jsp页面中body中加入onload="initGrid('<%=contextPath %>');"
String contextPath = request.getContextPath();
js代码如下:
- xml;- csv;- json;- javascript array.
下面只介绍xml,json类型的数据。
一、xml类型
dhtmlxgrid要求的xml格式如下:
<rows>
<head>
<beforeInit>
<call command="methodName"><param>string value</param></call>
</beforeInit>
<afterInit>
<call command="methodName"><param>string value</param></call>
</afterInit>
<column width="50" type="ed" align="right" color="white" sort="str">Sales</column>
<column width="80" type="co" align="left" sort="str">Shipping
<option value="1">1 Day</option>
<option value="7">1 Week</option>
...
</column>
...
<settings>
<colwidth>%</colwidth>
</settings>
</head>
<row id="1">
<cell>text</cell>
...
</row>
...
</rows>
<column>标签之间的文字是就是列标题
column 可用的属性有:
<row>表格中的每一行,要有唯一的id值属性。
<cell>一行中的一个单元格。
xml中常用的字符串常量
package com.javaeye.gzwfdy.util; public class Constants { public static final String XML_VERSION = "<?xml version=\"1.0\" encoding=\"GBK\"?>"; public static final String XML_ROWS_BEGIN = "<rows>"; public static final String XML_ROWS_END = "</rows>"; public static final String XML_HEAD_BEGIN = "<head>"; public static final String XML_HEAD_END = "</head>"; public static final String XML_AFTERINIT_BEGIN = "<afterInit>"; public static final String XML_AFTERINIT_END = "</afterInit>"; public static final String XML_BEFOREINIT_BEGIN = "<beforeInit>"; public static final String XML_BEFOREINIT_END = "</beforeInit>"; public static final String XML_CELL_BEGIN = "<cell>"; public static final String XML_CELL_END = "</cell>"; }
下面这个类构造列,单元格,设置皮肤
package com.javaeye.gzwfdy.util; public class GridXmlBuilder { public static StringBuffer createColumnXML(String width, String type, String align, String sort, String text){ StringBuffer xml = new StringBuffer(); if(width == null) width = "0"; if(text == null) text = ""; xml.append("<column "); xml.append("width=\"").append(width).append("\" "); xml.append("type=\"").append(type).append("\" "); xml.append("align=\"").append(align).append("\" "); xml.append("sort=\"").append(sort).append("\""); xml.append(">"); xml.append(text); xml.append("</column>"); return xml; } public static StringBuffer setGridSkin(String skin){ StringBuffer xml = new StringBuffer(); xml.append(Constants.XML_BEFOREINIT_BEGIN); xml.append("<call command=\"setSkin\">").append("<param>").append(skin).append("</param></call>"); xml.append(Constants.XML_BEFOREINIT_END); return xml; } public static StringBuffer createGridCellXml(Object value) { if (value == null) value = ""; StringBuffer xml = new StringBuffer(); xml.append(Constants.XML_CELL_BEGIN); xml.append(value); xml.append(Constants.XML_CELL_END); return xml; } }
下面这个类包含查询,删除,保存方法。里面有返回json数据的方法
package com.javaeye.gzwfdy.service.manager; import java.util.ArrayList; import java.util.List; import net.sf.json.JSONObject; import org.apache.log4j.Logger; import com.javaeye.gzwfdy.dao.hibernate.IDhtmlxGridDAO; import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid; import com.javaeye.gzwfdy.exception.DAOException; import com.javaeye.gzwfdy.exception.HandleException; import com.javaeye.gzwfdy.service.interfaceManager.IDhtmlxGridManager; import com.javaeye.gzwfdy.util.Constants; import com.javaeye.gzwfdy.util.GridXmlBuilder; import com.javaeye.gzwfdy.vo.GridData; import com.javaeye.gzwfdy.vo.Rows; public class DhtmlxGridManagerImpl implements IDhtmlxGridManager { /** * Logger for this class */ private static final Logger logger = Logger .getLogger(DhtmlxGridManagerImpl.class); private IDhtmlxGridDAO dhtmlxGridDAO; /** * @param dhtmlxGridDAO the dhtmlxGridDAO to set */ public void setDhtmlxGridDAO(IDhtmlxGridDAO dhtmlxGridDAO) { this.dhtmlxGridDAO = dhtmlxGridDAO; } public String getInitGridXML() throws HandleException { return this.BuildGridXML(); } private String BuildGridXML() { StringBuffer xml = new StringBuffer(); xml.append(Constants.XML_VERSION); xml.append(Constants.XML_ROWS_BEGIN); xml.append(createHeadXML()); xml.append(Constants.XML_ROWS_END); logger.info("构造表格XML为:" + xml); return xml.toString(); } private StringBuffer createHeadXML(){ StringBuffer xml = new StringBuffer(); xml.append(Constants.XML_HEAD_BEGIN); //xml.append(GridXmlBuilder.setGridSkin("modern")); //xml.append(GridXmlBuilder.setGridSkin("gray ")); //xml.append(GridXmlBuilder.setGridSkin("xp")); //xml.append(GridXmlBuilder.setGridSkin("mt")); xml.append(GridXmlBuilder.setGridSkin("light")); //xml.append(GridXmlBuilder.setGridSkin("clear")); xml.append(GridXmlBuilder.createColumnXML("20", "ch", "left", "int", "")); xml.append(GridXmlBuilder.createColumnXML("730", "ed", "left", "str", "消息")); xml.append(GridXmlBuilder.createColumnXML("90", "ed", "left", "str", "来源")); xml.append(GridXmlBuilder.createColumnXML("0", "ro", "left", "str", "")); xml.append(Constants.XML_HEAD_END); return xml; } public String getJsonData() throws HandleException { List<Dhtmlxgrid> list = null; List<GridData> gridDataList = new ArrayList<GridData>(); Rows rows = new Rows(); try { list = this.dhtmlxGridDAO.getData(); } catch (DAOException e) { // TODO: handle exception } for (Dhtmlxgrid dhtmlxgrid : list) { gridDataList.add(this.BuildeJsonData(dhtmlxgrid)); } rows.setRows(gridDataList); /** * 需要json-lib-2.2.2-jdk15.jar、ezmorph-1.0.5.jar */ JSONObject object = JSONObject.fromObject(rows); return object.toString(); } private GridData BuildeJsonData(Dhtmlxgrid dhtmlxgrid){ GridData griddata = new GridData(); String id = dhtmlxgrid.getId().toString(); String[] data = {"0",dhtmlxgrid.getMessage(),dhtmlxgrid.getInfosrc(),dhtmlxgrid.getId().toString()}; griddata.setId(id); griddata.setData(data); return griddata; } public String getXMLData() throws HandleException { StringBuffer xml = new StringBuffer(); xml.append(Constants.XML_VERSION); xml.append(Constants.XML_ROWS_BEGIN); List<Dhtmlxgrid> list = null; try { list = this.dhtmlxGridDAO.getData(); } catch (DAOException e) { e.printStackTrace(); throw new HandleException("getXMLData错误"); } for (Dhtmlxgrid dhtmlxgrid2 : list) { xml.append(this.buildXMLData(dhtmlxgrid2)); } xml.append(Constants.XML_ROWS_END); logger.info("XML为:" + xml); return xml.toString(); } private StringBuffer buildXMLData(Dhtmlxgrid dhtmlxgrid){ StringBuffer xml = new StringBuffer(); xml.append("<row id=\"" + dhtmlxgrid.getId().intValue() + "\">"); xml.append(GridXmlBuilder.createGridCellXml("0")); xml.append(GridXmlBuilder.createGridCellXml(dhtmlxgrid.getMessage())); xml.append(GridXmlBuilder.createGridCellXml(dhtmlxgrid.getInfosrc())); xml.append(GridXmlBuilder.createGridCellXml(dhtmlxgrid.getId())); xml.append("</row>"); return xml; } public boolean saveData(List<Dhtmlxgrid> dhtmlxgrid) throws HandleException { try { for (Dhtmlxgrid dhtmlxgrid2 : dhtmlxgrid) { if (dhtmlxgrid2.getId() == null) { //dhtmlxgrid2.setId(null); this.dhtmlxGridDAO.saveData(dhtmlxgrid2); } else this.dhtmlxGridDAO.updateData(dhtmlxgrid2); } } catch (DAOException e) { e.printStackTrace(); throw new HandleException("保存错误"); } return true; } public boolean deleteData(List<Dhtmlxgrid> dhtmlxgrid) throws HandleException { try { for (Dhtmlxgrid dhtmlxgrid2 : dhtmlxgrid) { this.dhtmlxGridDAO.deleteData(dhtmlxgrid2); } } catch (DAOException e) { e.printStackTrace(); throw new HandleException("删除失败"); } return true; } }
Dhtmlxgrid是hibernate的数据库映射文件,再次为了方便直接在Service层使用,在实际项目中不推进这样做。Dhtmlxgrid代码如下
package com.javaeye.gzwfdy.dao.hibernate.po; /** * Dhtmlxgrid entity. @author MyEclipse Persistence Tools */ public class Dhtmlxgrid implements java.io.Serializable { // Fields private Integer id; private String message; private String infosrc; // Constructors /** default constructor */ public Dhtmlxgrid() { } /** full constructor */ public Dhtmlxgrid(String message, String infosrc) { this.message = message; this.infosrc = infosrc; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public String getInfosrc() { return this.infosrc; } public void setInfosrc(String infosrc) { this.infosrc = infosrc; } }
GridData、Rows都是构造json字符串用到的。这里返回字符串到前台,但是不能直接使用,还要转成json对象。我没想到更好的办法做这件事情
GridData代码:
package com.javaeye.gzwfdy.vo; public class GridData { private String id; private String[] data; /** * @return the id */ public String getId() { return id; } /** * @param id the id to set */ public void setId(String id) { this.id = id; } /** * @return the data */ /** * @return the data */ public String[] getData() { return data; } /** * @param data the data to set */ public void setData(String[] data) { this.data = data; } }
Rows代码:
package com.javaeye.gzwfdy.vo; import java.util.List; public class Rows { private List rows; /** * @return the rows */ public List getRows() { return rows; } /** * @param rows the rows to set */ public void setRows(List rows) { this.rows = rows; } }
服务层接口代码IDhtmlxGridManager:
package com.javaeye.gzwfdy.service.interfaceManager; import java.util.List; import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid; import com.javaeye.gzwfdy.exception.HandleException; public interface IDhtmlxGridManager { /** * 初始化表头 * @return * @throws HandleException */ public String getInitGridXML() throws HandleException; /** * json数据 * @return * @throws HandleException */ public String getJsonData() throws HandleException; /** * XML数据 * @return * @throws HandleException */ public String getXMLData() throws HandleException; /** * * <p> * Discription: * </p> * @author guozhw * @param dhtmlxgrid * @return * @throws HandleException * @since * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ public boolean saveData(List<Dhtmlxgrid> dhtmlxgrid) throws HandleException; /** * * <p> * Discription: * </p> * @author guozhw * @return * @throws HandleException * @since * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ public boolean deleteData(List<Dhtmlxgrid> dhtmlxgrid) throws HandleException; }
HandleException代码:
package com.javaeye.gzwfdy.exception; public class HandleException extends Exception { public HandleException() { super(); } public HandleException(String message) { super(message); } }
dao层接口代码:
package com.javaeye.gzwfdy.dao.hibernate; import java.util.List; import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid; import com.javaeye.gzwfdy.exception.DAOException; public interface IDhtmlxGridDAO { /** * * <p> * Discription: 查询方法 * </p> * @author guozhw * @return * @throws DAOException * @since * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ public List<Dhtmlxgrid> getData() throws DAOException; /** * * <p> * Discription: 保存 * </p> * @author guozhw * @param grid * @throws DAOException * @since * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ public void saveData(Dhtmlxgrid grid) throws DAOException; /** * * <p> * Discription: 更新 * </p> * @author guozhw * @param grid * @throws DAOException * @since * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ public void updateData(Dhtmlxgrid grid) throws DAOException; /** * * <p> * Discription: 删除 * </p> * @author guozhw * @param grid * @throws DAOException * @since * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述] */ public void deleteData(Dhtmlxgrid grid) throws DAOException; }
dao接口实现类:
package com.javaeye.gzwfdy.dao.hibernate; import java.util.List; import org.springframework.dao.DataAccessException; import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid; import com.javaeye.gzwfdy.exception.DAOException; import com.javaeye.gzwfdy.util.AbstractHbmBaseDao; public class DhtmlxGridDAOImpl extends AbstractHbmBaseDao implements IDhtmlxGridDAO { @SuppressWarnings("unchecked") public List<Dhtmlxgrid> getData() throws DAOException { return this.findAll(Dhtmlxgrid.class); } public void saveData(Dhtmlxgrid grid) throws DAOException { try { this.save(grid); } catch (DataAccessException e) { e.printStackTrace(); throw new DAOException(e.getMessage()); } } public void updateData(Dhtmlxgrid grid) throws DAOException { try { this.update(grid); } catch (DataAccessException e) { e.printStackTrace(); throw new DAOException(e.getMessage()); } } public void deleteData(Dhtmlxgrid grid) throws DAOException { try { this.delete(grid); } catch (DataAccessException e) { e.printStackTrace(); throw new DAOException(e.getMessage()); } } }
dao异常类:
package com.javaeye.gzwfdy.exception; public class DAOException extends Exception { public DAOException(String message) { super(message); } public DAOException() { super(); } }
到此后台代码都已经完成了。前台使用dwr远程调用这些方法。spring就不写出来。dwr.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"> <dwr> <allow> <create creator="spring" javascript="dhtmlxGridManager" scope="request"> <param name="beanName" value="dhtmlxGridManager" /> <include method="getXMLData"/> <include method="saveData"/> <include method="getInitGridXML"/> <include method="deleteData"/> </create> <convert converter="bean" match="com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid" > </convert> </allow> <signatures> <![CDATA[ import java.util.List; import java.util.Map; import com.javaeye.gzwfdy.dao.hibernate.po.Dhtmlxgrid; dhtmlxGridManager.saveData(List<Dhtmlxgrid>); dhtmlxGridManager.deleteData(List<Dhtmlxgrid>); ]]> </signatures> </dwr>
jsp代码也不列出来了,增加操作对应的js方法为add(),删除操作对应js方法del(),保存save();jsp页面中body中加入onload="initGrid('<%=contextPath %>');"
String contextPath = request.getContextPath();
js代码如下:
/** * 页面初始化 */ //window.onload = initGrid; var mygrid; var path; // 初始化表格 function initGrid(contextPath) { path = contextPath; dhtmlxGridManager.getInitGridXML(function(xml) { mygrid = new dhtmlXGridObject('gridbox'); mygrid.setImagePath(contextPath + "/dhtmlxSuite/dhtmlxGrid/codebase/imgs/"); mygrid.init(); mygrid.parse(xml, loadData, "xml"); //mygrid.attachHeader("A,B,C",["text-align:right;","text-align:left;","text-align:center"],"ewrtwertrt"); //mygrid.adjustColumnSize(1); //mygrid.enableLightMouseNavigation(true); //mygrid.enableKeyboardSupport(true); //mygrid.lockRow(1, false); }); } function loadData() { dhtmlxGridManager.getXMLData(function(data) { mygrid.clearAll(); mygrid.parse(data); }); /** * dhtmlxGridManager.getJsonData(function(data) { mygrid.parse(eval('(' + data + ')'), "json"); }); */ } /** * 新增按钮处理 */ function add() { mygrid.addRow(mygrid.uid(), getAddRowString(), getRowIndex()); } function getRowIndex() { var selectedId = mygrid.getSelectedId(); var rowIndex; if (selectedId) { rowIndex = mygrid.getRowIndex(selectedId) + 1; } else { rowIndex = mygrid.getRowsNum(); } return rowIndex; } function getAddRowString() { return "0,,"; } /** * 保存按钮处理 */ function save() { var changedRowIds = getChangedRowIds(); if (changedRowIds && changedRowIds.length == 0) return; var dhtmlxgrid = buildObjects(changedRowIds); dhtmlxGridManager.saveData(dhtmlxgrid, function callback(data) { if (data) { alert("保存成功!"); } else { alert("保存失败!"); } loadData(); changedRowIds = new Array(); }); } /** * 获取表格所有改变过的行编号 */ function getChangedRowIds() { var changedRowIds = new Array(); var allRowIds = mygrid.getAllItemIds().split(","); for (var i = 0; i < mygrid.getRowsNum(); i++) { for (var j = 0; j < mygrid.getColumnCount(); j++) { if (mygrid.cells(allRowIds[i], j).wasChanged() && !changedRowIds.IsInclude(allRowIds[i])) { changedRowIds[changedRowIds.length] = allRowIds[i]; break; } } } return changedRowIds; } function buildObjects(changedRowIds) { var dhtmlxgrid = new Array(); for (var i = 0; i < changedRowIds.length; i++) { var rowId = changedRowIds[i]; dhtmlxgrid[dhtmlxgrid.length] = buildObject(rowId); } return dhtmlxgrid; } function buildObject(rowId) { return { id: mygrid.cells(rowId, mygrid.getColumnCount() - 1).getValue(), message: mygrid.cells(rowId, 1).getValue(), infosrc: mygrid.cells(rowId, 2).getValue() }; } //----------------------- function getValue(value) { return value == null || value == 'null' ? "" : value; } Array.prototype.IsInclude = function(value) { for (var i = 0; i < this.length; i++) { var element = this[i]; if (element == value) { return true; } } return false; } //--------------- /** * 删除按钮处理 */ function del() { var checkedRowIds = getCheckedRowIds(); if (checkedRowIds && checkedRowIds.length > 0) { if (confirm("请确认是否删除所选记录?")) { var deletegrid = buildObjects(checkedRowIds); dhtmlxGridManager.deleteData(deletegrid, function callback(data) { if (data) { alert("删除成功!"); } else { alert("删除失败!"); } loadData(); checkedRowIds = new Array(); }); } } else { alert("请选中删除记录!"); } } function getCheckedRowIds() { var checkedRowIds = new Array(); var allRowIds = mygrid.getAllItemIds().split(","); if (allRowIds) { for (var i = 0; i < allRowIds.length; i++) { if (mygrid.cells(allRowIds[i], 0).getValue() == 1) { checkedRowIds[checkedRowIds.length] = allRowIds[i]; } } } return checkedRowIds; }
评论
3 楼
fxiaozj
2012-08-31
不知道能不能把JSON写一个通用的,要不然每个entity都得写一个JSON进行转换。
2 楼
mfkwfc
2012-05-28
为什么没看到json数据的格式呢?
1 楼
exindedan
2011-07-22
非常不错的教程,写得也很详细!
希望能附上源代码!
赞一个!
希望能附上源代码!
赞一个!
相关推荐
AJAX-dwr实现增删改查的示例代码是一个非常实用的学习资源,对于初学者来说,它可以帮助理解DWR的工作原理和配置方式,以及如何在实际项目中利用DWR进行动态数据交互。通过这个例子,开发者可以进一步掌握AJAX技术,...
总的来说,通过封装`Ext.grid.Grid`和DWR,我们可以构建出一个强大的Web应用,提供直观且高效的增删改查功能。这种技术组合在现代企业级Web应用中非常常见,因为它能够有效地处理大量数据,同时保持良好的用户交互性...
通过以上步骤,你可以在Struts框架中利用DWR实现高效的前端与后端交互,完成对数据的增删改查操作。这种方式不仅简化了开发流程,也提高了用户的交互体验。在实际项目中,还需要根据具体需求进行调整和扩展,确保...
总结起来,这个"struts1.2+ibatis+DWR2.0+MySql5.0增删改查的小例子"涵盖了Web开发中的一些核心技术和实践,对于初学者来说,这是一个很好的学习资源,能够帮助他们快速掌握Java Web开发的基础知识,并逐步深入到更...
这个"**dwr增删改查**"的例子,正如标题和描述所提及,是一个非常基础且实用的教程,特别适合初学者了解和掌握DWR的基本用法,包括如何进行数据的添加、删除、修改和查询操作。 DWR的核心功能在于提供了一种方式,...
采用SSH+ajax(DWR)实现增删改查+分页的功能!!含有数据库!可以直接运行!
在本项目中,DWR被用来实现在不刷新整个页面的情况下进行数据的增删改查操作。用户可以通过前端界面发送请求,DWR将这些请求转换为Java方法调用,执行后返回结果,前端再根据结果更新显示,极大地提升了用户体验。 ...
该项目通过一键完成:自动生成指定表的增删改查功能(是用ajax完成的哦) 无刷新的。 使用的是jsp+jquery+struts2+dwr+hibernate+freemarker 下载后导入到myeclipse中部署到tomcat6上即可。 注意先按照方法初始化...
本项目"s2sh与dwr整合实现的增删改查"旨在演示如何将这三个技术有效地融合在一起,以提供一个完整的、用户友好的Web应用。 1. **s2sh框架**:Struts2负责处理HTTP请求并映射到相应的Action,Spring管理Bean并提供...
在SSH框架中,DWR可以用来更新页面内容,实现动态无刷新的增删改查功能。 EXTJS(现在被称为Sencha Ext JS)是一个JavaScript UI库,用于创建富客户端应用程序。 5. **EXTJS**:EXTJS提供了大量的预定义组件,如...
建立Oracle数据库和tomcat等环境,自己修改一下用户名...有多层嵌套,因为是当时练手的,所以很简单的例子(不排除里面有些垃圾代码),对增删改查实现了弹出框(煤炭基建)和可编辑表格(电源基建)也有后台分页功能。
JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源代码 dwr.jar 2.0JavaEE源...
这个是一个ssh+ajax的增删改查实例,很适合刚入门的程序员,在项目中发展肯定要比你整天坐着看书好,希望会对大家有用
Spring+Hibernate+Ext+dwr做的一个简单的grid的增删改查,面板布局, 通过autoload方式载入grid ,以及XML树的建立 ,连接MySql数据库 。JS文件代码在Demo文件夹下,JAVA代码在src下。适合新手
这个主题主要围绕DWR的两个主要版本——DWR 2.0和DWR 3.0,以及它们与jar包的关联。 首先,DWR 2.0是DWR项目的一个早期版本,它引入了核心的远程方法调用(Remote Method Invocation, RMI)功能,使得JavaScript...
#### 一、SSI与Spring、Struts结合实现增删改查 在Java开发领域,尤其是Web应用开发中,SSI(Server Side Include)通常指的是服务器端包含技术,但在本文档的上下文中,SSI可能更多地是指一种整合了Spring、Struts...
DWR2.0可以通过Spring的AOP支持来实现这些功能,提升应用程序的安全性和可维护性。 3. **安全性**:DWR提供了安全机制,如白名单和签名,以防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。整合Spring后,可以通过...
本教程将深入探讨如何利用Ajax实现登录系统的二级联动功能,以及增删改查操作。 首先,我们要理解Ajax的核心概念。Ajax并不是一个单一的技术,而是一组技术的集合,包括JavaScript、XML、HTML、CSS以及DOM等。在...
**DWR 2.0 中文手册** DWR (Direct Web Remoting) 是一个开源的Java库,它允许Web应用程序在客户端JavaScript和服务器端Java代码之间进行实时通信,类似于Ajax技术,但提供了更强大的功能。DWR 2.0版本是在DWR 1.x...
Struts2.0和DWR(Direct Web Remoting)是两个在Web开发中常见的开源框架。Struts2.0作为MVC(Model-View-Controller)框架,主要用于构建企业级的Java Web应用,而DWR则是一种使得JavaScript可以与服务器端Java对象...