- 浏览: 128535 次
- 性别:
- 来自: 佛山
文章分类
最新评论
-
jackyrong:
hi,你好,能否发一份代码到我邮箱?谢谢了,jackyrong ...
基于struts2+spring+hibernate+jquery的jmesa分页实现样例 -
qdongl:
不错,继续学习
Java 通用数据库连接类[支持存储过程 参数自动识别] -
ww_o_ww:
学习了··哈哈·· ··
JAVA EXCEL API 使用 -
Angel_Night:
@TestExecutionListeners( { Tran ...
使用 Spring 2.5 TestContext 测试框架 -
ray111:
缺少DBConnectionManager类?
Java 通用数据库连接类[支持存储过程 参数自动识别]
基于Jmesa,从数据库表Person中查询出记录,能够实现分页、排序、导出功能。同时结合Jquery,利用ajax实现对数据的删除操作。
数据库、页面、JVM编码统一为GBK
数据库表结构:
页面list.jsp:
Action代码:
Model代码:
Struts.xml:
引用
Jmesa: 2.3
Struts2 :2.0.11
Spring:2.5
Hibernate:3.2.5
Jquery:jquery 1.2.1.pack,jquery.bgiframe.pack
Tomcat:5.5
Mysql :5.0
Struts2 :2.0.11
Spring:2.5
Hibernate:3.2.5
Jquery:jquery 1.2.1.pack,jquery.bgiframe.pack
Tomcat:5.5
Mysql :5.0
数据库、页面、JVM编码统一为GBK
数据库表结构:
CREATE TABLE `person` ( `id` int(10) unsigned NOT NULL auto_increment, `firstName` varchar(45) NOT NULL, `lastName` varchar(45) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=76 DEFAULT CHARSET=latin1; CREATE TABLE `person` ( `id` int(10) unsigned NOT NULL auto_increment, `firstName` varchar(45) NOT NULL, `lastName` varchar(45) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=76 DEFAULT CHARSET=latin1;
页面list.jsp:
<%@ taglib prefix=“s” uri=“/struts-tags”%> <%@ page language=“java” errorPage=“/error.jsp” pageEncoding=“GBK” contentType=“text/html;charset=GBK” %> <html> <head> <link rel=“stylesheet” type=“text/css” href=“<%= request.getContextPath() %>/css/web.css”></link> <link rel=“stylesheet” type=“text/css” href=“<%= request.getContextPath() %>/css/jmesa.css”></link> <!– 对jmesa.js脚本的应用必须放到头部,而不能放到尾部 –> <script type=“text/javascript” src=“<%= request.getContextPath() %>/js/jmesa.js”></script> </head> <body> <p>Jmesa表单组件使用演示样例</p> <form name=“personForm” action=“<%= request.getContextPath() %>/list.action” method=“post”> <div id=“persons”> <% out.println(request.getAttribute(“myhtml”)); %> </div> </form> <script type=“text/javascript”> function onInvokeAction(id) { setExportToLimit(id, ”); createHiddenInputFieldsForLimitAndSubmit(id); } function onInvokeExportAction(id) { var parameterString = createParameterStringForLimit(id); location.href = ‘<%= request.getContextPath() %>/list.action?’ + parameterString; } function delUser(tableId,rowId) { var parameterString = createParameterStringForLimit(tableId); $.get(“<%= request.getContextPath() %>/ajax.action?id=”+rowId+“&”+parameterString, function(data) { $(“#persons”).html(data) }); } </script> <script type=“text/javascript” src=“<%= request.getContextPath() %>/js/<SPAN class=hilite2>jquery</SPAN>-1.2.1.pack.js”></script> <script type=“text/javascript” src=“<%= request.getContextPath() %>/js/<SPAN class=hilite2>jquery</SPAN>.bgiframe.pack.js”></script> </body> </html> <%@ taglib prefix=“s” uri=“/struts-tags”%> <%@ page language=“java” errorPage=“/error.jsp” pageEncoding=“GBK” contentType=“text/html;charset=GBK” %> <html> <head> <link rel=“stylesheet” type=“text/css” href=“<%= request.getContextPath() %>/css/web.css”></link> <link rel=“stylesheet” type=“text/css” href=“<%= request.getContextPath() %>/css/jmesa.css”></link> <!– 对jmesa.js脚本的应用必须放到头部,而不能放到尾部 –> <script type=“text/javascript” src=“<%= request.getContextPath() %>/js/jmesa.js”></script> </head> <body> <p>Jmesa表单组件使用演示样例</p> <form name=“personForm” action=“<%= request.getContextPath() %>/list.action” method=“post”> <div id=“persons”> <% out.println(request.getAttribute(“myhtml”)); %> </div> </form> <script type=“text/javascript”> function onInvokeAction(id) { setExportToLimit(id, ”); createHiddenInputFieldsForLimitAndSubmit(id); } function onInvokeExportAction(id) { var parameterString = createParameterStringForLimit(id); location.href = ‘<%= request.getContextPath() %>/list.action?’ + parameterString; } function delUser(tableId,rowId) { var parameterString = createParameterStringForLimit(tableId); $.get(“<%= request.getContextPath() %>/ajax.action?id=”+rowId+“&”+parameterString, function(data) { $(“#persons”).html(data) }); } </script> <script type=“text/javascript” src=“<%= request.getContextPath() %>/js/jquery-1.2.1.pack.js”></script> <script type=“text/javascript” src=“<%= request.getContextPath() %>/js/jquery.bgiframe.pack.js”></script> </body> </html>
Action代码:
package com.mobilesoft.esales.webapp.action; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import jxl.demo.CSV; import org.apache.commons.beanutils.BeanUtils; import org.jmesa.facade.TableFacade; import org.jmesa.facade.TableFacadeImpl; import org.jmesa.limit.Limit; import com.mobilesoft.esales.dao.hibernate.Person; import com.mobilesoft.esales.service.PersonService; import com.octo.captcha.service.CaptchaServiceException; import com.opensymphony.xwork2.Action; import static org.jmesa.limit.ExportType.CSV; import static org.jmesa.limit.ExportType.JEXCEL; import static org.jmesa.limit.ExportType.PDF; import org.jmesa.core.filter.DateFilterMatcher; import org.jmesa.core.filter.MatcherKey; import org.jmesa.facade.TableFacade; import org.jmesa.facade.TableFacadeImpl; import org.jmesa.limit.Limit; import org.jmesa.util.ItemUtils; import org.jmesa.view.component.Column; import org.jmesa.view.component.Row; import org.jmesa.view.component.Table; import org.jmesa.view.editor.BasicCellEditor; import org.jmesa.view.editor.CellEditor; import org.jmesa.view.editor.DateCellEditor; import org.jmesa.view.html.HtmlBuilder; import org.jmesa.view.html.component.HtmlColumn; import org.jmesa.view.html.component.HtmlRow; import org.jmesa.view.html.component.HtmlTable; import org.jmesa.view.html.editor.DroplistFilterEditor; import sun.text.CompactShortArray.Iterator; /** * 用于演示基于jmesa(http://code.google.com/p/jmesa/)的分页、排序组件的使用方法, * 在src/java/com/mobilesoft/esales/dao/hibernate/person.sql有Person表的测试数据 * @author <a href=”mailto:liangchuan@mobile-soft.cn”>liangchuan</a> * @since 2008-03 */ public class PersonAction extends BaseAction { private PersonService personService; private List<Person> persons; private Person person; private Integer id; private String tableId; public String execute() { this.persons = personService.findAll(); //创建id为tableId为表单 //<table id=”tableId” border=”0″ cellpadding=”0″ cellspacing=”0″ class=”table” width=”600px” > TableFacade tableFacade = new TableFacadeImpl(“tableId”, getRequest()); //设定页面分页数据 tableFacade.setItems(persons); //设定支持的查询结果导出格式为csv,excel,pdf格式 tableFacade.setExportTypes(getResponse(), CSV, JEXCEL, PDF); tableFacade.setStateAttr(“restore”); Limit limit = tableFacade.getLimit(); if (limit.isExported()) { export(tableFacade); return null; } else { String html = html(tableFacade); getRequest().setAttribute(“myhtml”, html); } return Action.SUCCESS; } private String html(TableFacade tableFacade) { // 设定表格属性,注意此处的url用于诸如增加、删除、修改、查询操作,并不是实际的数据库表属性, //但表单需要有对应的po对新,因此需要在Person中增加此属性 tableFacade.setColumnProperties(“id”, “firstName”, “lastName”, “url”); HtmlTable table = (HtmlTable) tableFacade.getTable(); table.setCaption(“测试用户信息列表”); table.getTableRenderer().setWidth(“600px”); HtmlRow row = table.getRow(); HtmlColumn id = row.getColumn(“id”); id.setTitle(“id”); HtmlColumn firstName = row.getColumn(“firstName”); firstName.setTitle(“属性1″); HtmlColumn lastName = row.getColumn(“lastName”); lastName.setTitle(“属性2″); HtmlColumn deleteAction = row.getColumn(“url”); deleteAction.setTitle(“操作”); // Using an anonymous class to implement a custom editor. // 用于演示在表格中增加超链接 firstName.getCellRenderer().setCellEditor(new CellEditor() { public Object getValue(Object item, String property, int rowcount) { Object value = new BasicCellEditor().getValue(item, property, rowcount); HtmlBuilder html = new HtmlBuilder(); html.a().href().quote().append(“http://www.mobile-soft.cn”) .quote().close(); html.append(value); html.aEnd(); return html.toString(); } }); // Using an anonymous class to implement a custom editor. //用于演示在表格中增加javascript操作,通过<SPAN class=hilite2>jquery</SPAN>来实现ajax式的删除操作 deleteAction.getCellRenderer().setCellEditor(new CellEditor() { public Object getValue(Object item, String property, int rowcount) { Object value = new BasicCellEditor().getValue(item, property, rowcount); HtmlBuilder html = new HtmlBuilder(); //取得每一行的id号 Object id = ItemUtils.getItemValue(item, “id”); String js=” onclick=’javascript:del(\”tableId\”,”+id+“) ‘”; html.a().append(js).href().quote().append(getRequest().getContextPath()+“/remove.action?id=”+id).quote().close(); html.append(“删除”); html.aEnd(); return html.toString(); } }); return tableFacade.render(); // Return the Html. } private void export(TableFacade tableFacade) { tableFacade.setColumnProperties(“id”, “firstName”, “lastName”); Table table = tableFacade.getTable(); table.setCaption(“Persons Test”); Row row = table.getRow(); Column id = row.getColumn(“id”); id.setTitle(“id”); Column firstName = row.getColumn(“firstName”); firstName.setTitle(“First Name”); Column lastName = row.getColumn(“lastName”); lastName.setTitle(“Last Name”); tableFacade.render(); } public String login() { Boolean isResponseCorrect = Boolean.FALSE; // remenber that we need an id to validate! String captchaId = getSession().getId(); // retrieve the response String response = getRequest().getParameter(“j_captcha_response”); // Call the Service method try { isResponseCorrect = CaptchaServiceSingleton.getInstance() .validateResponseForID(captchaId, response); } catch (CaptchaServiceException e) { // should not happen, may be thrown if the id is not valid } if (!isResponseCorrect) { return Action.LOGIN; } return execute(); } public String save() { this.personService.save(person); this.person = new Person(); return execute(); } /** * 用于演示ajax方式删除操作,参看pages/list.jsp * @return */ public String remove() { String deleteId = getRequest().getParameter(“id”); if (deleteId != null) { personService.remove(Integer.parseInt(deleteId)); } this.persons = personService.findAll(); TableFacade tableFacade = new TableFacadeImpl(“tableId”, getRequest()); tableFacade.setItems(persons); // set the items tableFacade.setExportTypes(getResponse(), CSV, JEXCEL, PDF); tableFacade.setStateAttr(“restore”); Limit limit = tableFacade.getLimit(); if (limit.isExported()) { export(tableFacade); return null; } else { String html = html(tableFacade); getRequest().setAttribute(“myhtml”, html); } return Action.SUCCESS; } public List<Person> getPersons() { return persons; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public void prepare() throws Exception { if (id != null) person = personService.find(id); } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } /** * @return the personService */ public PersonService getPersonService() { return personService; } /** * @param personService * the personService to set */ public void setPersonService(PersonService personService) { this.personService = personService; } /** * @return the tableId */ public String getTableId() { return tableId; } /** * @param tableId * the tableId to set */ public void setTableId(String tableId) { this.tableId = tableId; } }
package com.mobilesoft.esales.webapp.action; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import jxl.demo.CSV; import org.apache.commons.beanutils.BeanUtils; import org.jmesa.facade.TableFacade; import org.jmesa.facade.TableFacadeImpl; import org.jmesa.limit.Limit; import com.mobilesoft.esales.dao.hibernate.Person; import com.mobilesoft.esales.service.PersonService; import com.octo.captcha.service.CaptchaServiceException; import com.opensymphony.xwork2.Action; import static org.jmesa.limit.ExportType.CSV; import static org.jmesa.limit.ExportType.JEXCEL; import static org.jmesa.limit.ExportType.PDF; import org.jmesa.core.filter.DateFilterMatcher; import org.jmesa.core.filter.MatcherKey; import org.jmesa.facade.TableFacade; import org.jmesa.facade.TableFacadeImpl; import org.jmesa.limit.Limit; import org.jmesa.util.ItemUtils; import org.jmesa.view.component.Column; import org.jmesa.view.component.Row; import org.jmesa.view.component.Table; import org.jmesa.view.editor.BasicCellEditor; import org.jmesa.view.editor.CellEditor; import org.jmesa.view.editor.DateCellEditor; import org.jmesa.view.html.HtmlBuilder; import org.jmesa.view.html.component.HtmlColumn; import org.jmesa.view.html.component.HtmlRow; import org.jmesa.view.html.component.HtmlTable; import org.jmesa.view.html.editor.DroplistFilterEditor; import sun.text.CompactShortArray.Iterator; /** * 用于演示基于jmesa(http://code.google.com/p/jmesa/)的分页、排序组件的使用方法, * 在src/java/com/mobilesoft/esales/dao/hibernate/person.sql有Person表的测试数据 * @author <a href=”mailto:liangchuan@mobile-soft.cn”>liangchuan</a> * @since 2008-03 */ public class PersonAction extends BaseAction { private PersonService personService; private List<Person> persons; private Person person; private Integer id; private String tableId; public String execute() { this.persons = personService.findAll(); //创建id为tableId为表单 //<table id=”tableId” border=”0″ cellpadding=”0″ cellspacing=”0″ class=”table” width=”600px” > TableFacade tableFacade = new TableFacadeImpl(“tableId”, getRequest()); //设定页面分页数据 tableFacade.setItems(persons); //设定支持的查询结果导出格式为csv,excel,pdf格式 tableFacade.setExportTypes(getResponse(), CSV, JEXCEL, PDF); tableFacade.setStateAttr(“restore”); Limit limit = tableFacade.getLimit(); if (limit.isExported()) { export(tableFacade); return null; } else { String html = html(tableFacade); getRequest().setAttribute(“myhtml”, html); } return Action.SUCCESS; } private String html(TableFacade tableFacade) { // 设定表格属性,注意此处的url用于诸如增加、删除、修改、查询操作,并不是实际的数据库表属性, //但表单需要有对应的po对新,因此需要在Person中增加此属性 tableFacade.setColumnProperties(“id”, “firstName”, “lastName”, “url”); HtmlTable table = (HtmlTable) tableFacade.getTable(); table.setCaption(“测试用户信息列表”); table.getTableRenderer().setWidth(“600px”); HtmlRow row = table.getRow(); HtmlColumn id = row.getColumn(“id”); id.setTitle(“id”); HtmlColumn firstName = row.getColumn(“firstName”); firstName.setTitle(“属性1″); HtmlColumn lastName = row.getColumn(“lastName”); lastName.setTitle(“属性2″); HtmlColumn deleteAction = row.getColumn(“url”); deleteAction.setTitle(“操作”); // Using an anonymous class to implement a custom editor. // 用于演示在表格中增加超链接 firstName.getCellRenderer().setCellEditor(new CellEditor() { public Object getValue(Object item, String property, int rowcount) { Object value = new BasicCellEditor().getValue(item, property, rowcount); HtmlBuilder html = new HtmlBuilder(); html.a().href().quote().append(“http://www.mobile-soft.cn”) .quote().close(); html.append(value); html.aEnd(); return html.toString(); } }); // Using an anonymous class to implement a custom editor. //用于演示在表格中增加javascript操作,通过jquery来实现ajax式的删除操作 deleteAction.getCellRenderer().setCellEditor(new CellEditor() { public Object getValue(Object item, String property, int rowcount) { Object value = new BasicCellEditor().getValue(item, property, rowcount); HtmlBuilder html = new HtmlBuilder(); //取得每一行的id号 Object id = ItemUtils.getItemValue(item, “id”); String js=” onclick=’javascript:del(\”tableId\”,”+id+“) ‘”; html.a().append(js).href().quote().append(getRequest().getContextPath()+“/remove.action?id=”+id).quote().close(); html.append(“删除”); html.aEnd(); return html.toString(); } }); return tableFacade.render(); // Return the Html. } private void export(TableFacade tableFacade) { tableFacade.setColumnProperties(“id”, “firstName”, “lastName”); Table table = tableFacade.getTable(); table.setCaption(“Persons Test”); Row row = table.getRow(); Column id = row.getColumn(“id”); id.setTitle(“id”); Column firstName = row.getColumn(“firstName”); firstName.setTitle(“First Name”); Column lastName = row.getColumn(“lastName”); lastName.setTitle(“Last Name”); tableFacade.render(); } public String login() { Boolean isResponseCorrect = Boolean.FALSE; // remenber that we need an id to validate! String captchaId = getSession().getId(); // retrieve the response String response = getRequest().getParameter(“j_captcha_response”); // Call the Service method try { isResponseCorrect = CaptchaServiceSingleton.getInstance() .validateResponseForID(captchaId, response); } catch (CaptchaServiceException e) { // should not happen, may be thrown if the id is not valid } if (!isResponseCorrect) { return Action.LOGIN; } return execute(); } public String save() { this.personService.save(person); this.person = new Person(); return execute(); } /** * 用于演示ajax方式删除操作,参看pages/list.jsp * @return */ public String remove() { String deleteId = getRequest().getParameter(“id”); if (deleteId != null) { personService.remove(Integer.parseInt(deleteId)); } this.persons = personService.findAll(); TableFacade tableFacade = new TableFacadeImpl(“tableId”, getRequest()); tableFacade.setItems(persons); // set the items tableFacade.setExportTypes(getResponse(), CSV, JEXCEL, PDF); tableFacade.setStateAttr(“restore”); Limit limit = tableFacade.getLimit(); if (limit.isExported()) { export(tableFacade); return null; } else { String html = html(tableFacade); getRequest().setAttribute(“myhtml”, html); } return Action.SUCCESS; } public List<Person> getPersons() { return persons; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public void prepare() throws Exception { if (id != null) person = personService.find(id); } public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } /** * @return the personService */ public PersonService getPersonService() { return personService; } /** * @param personService * the personService to set */ public void setPersonService(PersonService personService) { this.personService = personService; } /** * @return the tableId */ public String getTableId() { return tableId; } /** * @param tableId * the tableId to set */ public void setTableId(String tableId) { this.tableId = tableId; } }
Model代码:
package com.mobilesoft.esales.dao.hibernate; /** * Person entity. * * @author <a href=”mailto:liangchuan@mobile-soft.cn”>liangchuan</a> */ public class Person implements java.io.Serializable { // Fields private Integer id; private String firstName; private String lastName; private String url=“”; // Constructors /** default constructor */ public Person() { } /** full constructor */ public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getFirstName() { return this.firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return this.lastName; } public void setLastName(String lastName) { this.lastName = lastName; } /** * @return the url */ public String getUrl() { return url; } /** * @param url the url to set */ public void setUrl(String url) { this.url = url; } }
package com.mobilesoft.esales.dao.hibernate; /** * Person entity. * * @author <a href=”mailto:liangchuan@mobile-soft.cn”>liangchuan</a> */ public class Person implements java.io.Serializable { // Fields private Integer id; private String firstName; private String lastName; private String url=“”; // Constructors /** default constructor */ public Person() { } /** full constructor */ public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getFirstName() { return this.firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return this.lastName; } public void setLastName(String lastName) { this.lastName = lastName; } /** * @return the url */ public String getUrl() { return url; } /** * @param url the url to set */ public void setUrl(String url) { this.url = url; } }
Struts.xml:
<?xml version=”1.0″ encoding=”UTF-8″?> <!DOCTYPE struts PUBLIC “-//Apache Software Foundation//DTD Struts Configuration 2.0//EN” “http://struts.apache.org/dtds/struts-2.0.dtd”> <struts> <constant name=”struts.objectFactory” value=”<SPAN class=hilite1>spring</SPAN>”/> <constant name=”struts.devMode” value=”true”/> <constant name=”struts.i18n.encoding” value=”GBK”/> <constant name=”struts.action.extension” value=”action”/> <constant name=”struts.custom.i18n.resources” value=”ApplicationResources,errors”/> <constant name=”struts.multipart.maxSize” value=”2097152″/> <constant name=”struts.multipart.saveDir” value=”/resources”/> <constant name=”struts.ui.theme” value=”css_xhtml”/> <constant name=”struts.enable.SlashesInActionNames” value=”true”/> <package name=”person” extends=”struts-default”> <interceptors> <!– Copied from struts-default.xml and changed validation exclude methods –> <interceptor-stack name=”defaultStack”> <interceptor-ref name=”exception”/> <interceptor-ref name=”alias”/> <interceptor-ref name=”servlet-config”/> <interceptor-ref name=”prepare”/> <interceptor-ref name=”i18n”/> <interceptor-ref name=”chain”/> <interceptor-ref name=”debugging”/> <interceptor-ref name=”profiling”/> <interceptor-ref name=”scoped-model-driven”/> <interceptor-ref name=”model-driven”/> <interceptor-ref name=”fileUpload”/> <interceptor-ref name=”checkbox”/> <interceptor-ref name=”static-params”/> <interceptor-ref name=”params”> <param name=”excludeParams”>dojo\..*</param> </interceptor-ref> <interceptor-ref name=”conversionError”/> <interceptor-ref name=”validation”> <param name=”excludeMethods”>cancel,execute,delete,edit,list</param> </interceptor-ref> <interceptor-ref name=”workflow”> <param name=”excludeMethods”>input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack> <interceptor-stack name=”fileUploadStack”> <interceptor-ref name=”fileUpload”/> <interceptor-ref name=”defaultStack”/> </interceptor-stack> </interceptors> <global-results> <result name=”mainMenu” type=”redirect”>mainMenu.html</result> <result name=”dataAccessFailure”>pages/dataAccessFailure.jsp</result> </global-results> <global-exception-mappings> <exception-mapping exception=”org.<SPAN class=hilite1>spring</SPAN>framework.dao.DataAccessException” result=”dataAccessFailure”/> </global-exception-mappings> <action name=”list” method=”execute” class=”personAction”> <result name=”success”>pages/list.jsp</result> <result name=”input”>pages/list.jsp</result> </action> <action name=”remove” class=”personAction” method=”remove”> <result name=”success”>pages/list.jsp</result> <result name=”input”>pages/list.jsp</result> </action> <action name=”save” class=”personAction” method=”save”> <result name=”success”>pages/list.jsp</result> <result name=”input”>pages/list.jsp</result> </action> <action name=”login” class=”personAction” method=”execute”> <result name=”success”>pages/list.jsp</result> <result name=”login”>/index.jsp</result> </action> <action name=”uploadFile” class=”com.mobilesoft.esales.webapp.action.FileUploadAction”> <interceptor-ref name=”fileUploadStack”/> <result name=”input”>pages/uploadForm.jsp</result> <result name=”success”>pages/uploadDisplay.jsp</result> <result name=”cancel” type=”redirect”>/index.jsp</result> </action> </package> </struts>
评论
3 楼
jackyrong
2012-03-08
hi,你好,能否发一份代码到我邮箱?谢谢了,jackyrong@tom.com
2 楼
belly
2008-12-15
这个分页核心的使用方法是从官方教程抄的.
直接看官方教程就行了.
直接看官方教程就行了.
1 楼
java_eye_2008
2008-08-11
刚接触Jmesa,楼主可否将上面的完整工程发给我一份,以效学习?
我的邮箱:2002_a_feng@163.com 多谢了~~
我的邮箱:2002_a_feng@163.com 多谢了~~
相关推荐
2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...
Struts2、Spring3、Hibernate3、jQuery、Flexigrid 和 MySQL 是一组常见的技术栈,用于构建企业级的Java Web应用程序。以下是对这些技术及其在实际应用中的详细说明: 1. **Struts2**:Struts2 是一个基于 MVC...
包含有完整的jar包和源代码,这是专门为我们实验室定制开发的,包含了架构基于s2sh技术网站的参考实现(包括了全部基础部分:如分页,缓存,文件上传,连接池等等)希望对初学JavaEE WEB开的人有所帮助。...
在IT行业中,jQuery Grid(通常简称为jGrid)是一个强大的JavaScript数据网格插件,它能够与后端的数据存储系统如Spring、Struts和Hibernate等Java框架无缝集成,以实现高效的数据展示和管理。这个名为"jquerygrid+...
在本章中,我们将深入探讨如何开发一个基于Struts、Spring、Hibernate和Ajax的网上信息发布平台。这四个技术是Java Web开发中的核心组件,它们各自承担着不同的职责,共同构建了一个强大而灵活的后端架构。 **...
在这个“Struts2+Hibernate+Spring后台表格分页”项目中,我们将深入探讨如何整合这三个框架实现数据的动态展示和分页。 1. **Struts2框架**:Struts2作为MVC(模型-视图-控制器)架构的实现,主要负责处理用户的...
Struts2、Spring、Hibernate和EasyUI是Java Web开发中常用的四大框架,它们结合使用可以构建高效、可维护的企业级应用程序。在这个项目中,开发者利用这些技术实现了基础的数据操作,如增删查改,以及用户登录、注册...
本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...
本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...
本例程,主要是,用jqgrid 实现grid及subgrid数据列表的分页,增,删,改,查,定制显示列的功能 用jqueryUI 实现 上下左的布局 数据库及源码都在上传的RAR包中 由于上传空间的问题,JAR包不做上传,大家可以自己...
电影后台管理系统是一个典型的Web应用程序,它使用了Spring、Struts2和Hibernate这三大框架,以及前端的EasyUI组件库来实现高效、稳定的管理功能。这个系统没有采用Maven作为项目构建工具,而是采取了传统的手动依赖...
本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...
本版本全面更新了jar包,全部使用了当前最新版本的jar包,struct2.1.8 spring3 hibernate3.5,全面使用注解取代xm的l配置。 另外增加了一个ant构建脚本,支持使用hudson完成每日构建,持续集成,自动测试,代码规范...
综合来看,这个压缩包包含了一系列关于使用JQuery实现Ajax分页和查询,以及Hibernate和Spring整合进行分页查询的教程和实例代码。对于学习和理解这些技术在实际项目中的应用,这些资源是非常宝贵的。开发者可以通过...
1. **SSH+jQuery+DWR+EasyUI 实战**:本文档通过一系列的实战案例展示了如何将 Struts2、Spring3、Hibernate4 与 DWR、jquery2.x 和 easyUI1.3.x 结合起来开发实际的应用。 2. **实战案例详解**: - SSH 架构集成...
2 利用struts2 的LoginAction-validation.xml 3 在bean里把service包;暴露DWR,写了一个验证用户名的流程 4 采用jpa作为POJO,还是减少配置 5 加入display的分页,并且是物理分页 打开后自已建表sql.txt jdbc....
用SSH做的简易论坛系统,功能算丰富,CRUD,分页,表关联,完全可以做毕业设计,导入即可运行,数据库用的是oracle,前台使用了jquery,登录,注册都是弹出层。开始先要对板块插入数据,表可以用hibernate的自动创建...
本教程将详细讲解如何利用jQuery、Java和Struts2框架来实现一个美观且可自定义样式的分页功能。 首先,jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画以及Ajax交互等任务。在分页场景...
后台采用技术: struts 2 + Spring + Hibernate (SSH2) 前台技术: jquery + easyui框架 所有的数据提交和查询都是通过ajax方式异步传输! 图书数据的添加和查询都是在这个js文件中实现 实现语言是javascript ...
SSH(Spring+Struts+Hibernate)轻量级购物软件Shopping演示系统(Java Web Edition)技术要点:Spring+Struts+Hibernate三大框架整合,Jquery-treeview、DIV+CSS3、HTML5、JavaScript、分页组件pagination、MySQL。