- 浏览: 28660 次
- 性别:
- 来自: 上海
最新评论
-
weizuying:
非常非常感谢给我发一份
ebridge@qq.com
struts2+hibernate+spring+DWRUtilAction+dwr分页+Google自动补全 -
huzixu:
您好我很想要一份,正在做非常类似的项目.zixuhu@qq.c ...
struts2+hibernate+spring+DWRUtilAction+dwr分页+Google自动补全 -
simon_1:
你这是Eclipse,不是myeclipse。
MyEclipse配置SVN -
ceoajun:
楼组给我发一份, ceoajun@sina.cn,谢谢...! ...
struts2+hibernate+spring+DWRUtilAction+dwr分页+Google自动补全 -
wy8232255:
hashsound@126.com非常感谢
struts2+hibernate+spring+DWRUtilAction+dwr分页+Google自动补全
项目处于招标期间,所以比较清闲,于是乎有了对自己知识总结的想法,又于是乎经历了.......
下载把重要代码贴出来给需要的同仁们参考参考(只供菜鸟参考,因为我也很菜)
首先是web.xml配置文件
<!--注释的为oscache缓存-->
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 配置Spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> WEB-INF/classes/com/jack/user/config/dao.xml WEB-INF/classes/com/jack/user/config/servicesContext.xml </param-value> </context-param> <!-- 配置Struts2 --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置DWR --> <!-- dwr的servlet配置 add by jie.su--> <servlet> <servlet-name>dwr</servlet-name> <!-- org.directwebremoting.spring.DwrSpringServlet --> <servlet-class> org.directwebremoting.servlet.DwrServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> <!--开发时设为true,生产时设为false--> </init-param> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>exposeInternals</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>Validate</servlet-name> <servlet-class>com.jack.user.common.Validate</servlet-class> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Validate</servlet-name> <url-pattern>/servlet/Validate</url-pattern> </servlet-mapping> <!-- dwr的servlet配置 --> <!-- 配置Spring的监听 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!--osehcache缓存首页配置 begin --> <!--<filter> <filter-name>CacheFilter</filter-name> <filter-class> com.opensymphony.oscache.web.filter.CacheFilter </filter-class> <init-param> <param-name>time</param-name> <param-value>600</param-value> </init-param> <init-param> <param-name>scope</param-name> <param-value>session</param-value> </init-param> </filter> <filter-mapping> <filter-name>CacheFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> --><!-- osehcache缓存首页配置 end --> </web-app>
dwr配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"> <dwr> <allow> <convert match="java.lang.StackTraceElement" converter="bean" /> <convert match="java.lang.Exception" converter="exception"></convert> <create creator="none" javascript="DWRAction"> <param name="class" value="org.directwebremoting.struts2.DWRAction" /> <include method="execute" /> </create> <convert converter="bean" match="com.opensymphony.xwork2.ValidationAwareSupport" /> <convert converter="bean" match="org.directwebremoting.struts2.ActionDefinition"> <param name="include" value="namespace,action,method,executeResult" /> </convert> <convert converter="bean" match="org.directwebremoting.struts2.AjaxResult" /> <!-- 相应的Struts2的Action --> <convert match="com.jack.user.action.DWRDemoAction" converter="bean" /> <convert match="com.jack.user.pojo.*" converter="bean"/> <convert match="com.jack.user.action.*" converter="bean"/> <!-- 用户名验证 --> <create javascript="validator" creator="new"> <param name="class" value="com.jack.user.model.impl.ValidatorUser"> </param> </create> <create javascript="testDwr" creator="new"> <param name="class" value="com.jack.user.model.impl.TestDwr"> </param> </create> <!-- 商品拼音取码 --> </allow> </dwr>
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.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <package name="user" extends="struts-default" namespace="/user"> <interceptors> <interceptor name="doInterceptor" class="doInterceptor"></interceptor> </interceptors> <!-- 用户登录 --> <action name="userLogin" class="loginAction" method="userLogin"> <interceptor-ref name="doInterceptor"></interceptor-ref> <interceptor-ref name ="params" /> <interceptor-ref name ="static-params" /> <result name="success" type="redirect">/Merchandise.jsp</result> <result name="noUser">/login.jsp</result> <result name="login">/login.jsp</result> </action> <!-- 普通用户注册用户名和密码,不做具体操作,只是把用户名和密码放在会话中 --> <action name="saveAccount" class="loginAction" method="saveAccount"> <result name="success">/userInfor.jsp</result> <result name="error">/register.jsp</result> </action> <!-- 普通用户注册完成 --> <action name="register" class="loginAction" method="userRegister"> <result name="success">/welcome.jsp</result> <result name="error">/register.jsp</result> </action> <!-- 企业用户注册用户名和密码,不做具体操作,只是把用户名和密码放在会话中 --> <action name="saveEnAccount" class="loginAction" method="saveEnAccount"> <result name="success">/enInfor.jsp</result> <result name="error">/enRegister.jsp</result> </action> <!-- 企业用户完成注册 --> <action name="enRegister" class="loginAction" method="enRegister"> <result name="success">/welcome.jsp</result> <result name="error">/enRegister.jsp</result> </action> <action name="fileUpload" class="fileUpload"> <interceptor-ref name="fileUpload"> <param name="allowedTypes"> image/bmp,image/png,image/gif,image/jpeg,image/jpg </param> </interceptor-ref> <interceptor-ref name="defaultStack"/> <result name="input">/fileupload.jsp</result> <result name="success">/showUpload.jsp</result> </action> <action name="dwrDemoAction" class="dwrDemoAction"> </action> <action name="merchandiseAction" class="merchandiseAction" method="saveMer"> <result name="success">/Merchandise.jsp</result> <result name="error">/error.jsp</result> </action> <action name="merchandiseSearchAction" class="merchandiseSearchAction"> <result name="success">/dt.jsp</result> <result name="error">/error.jsp</result> </action> <action name="merchandiseDeleteAction" class="merchandiseDeleteAction"> <result name="success">/Merchandise.jsp</result> <result name="error">/error.jsp</result> </action> <action name="merchandiseFindByIdAction" class="merchandiseFindByIdAction"> <result name="success">/Merchandise.jsp</result> <result name="error">/error.jsp</result> </action> <action name="merchandiseUpdateAction" class="merchandiseUpdateAction"> <result name="success">/Merchandise.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts>
分页标签
package com.jack.user.common;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class PagTag extends BodyTagSupport {
private String uri;
public String getUri() {
return uri;
}
public void setUri(String uri) {
this.uri = uri;
}
@Override
public int doAfterBody() throws JspException {
// TODO Auto-generated method stub
return super.doAfterBody();
}
@Override
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
return super.doEndTag();
}
@Override
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();
int pageNow = 1;
int pageCount = 1;
int count = 1;
String temp = (String) request.getAttribute("pageNow");
if (temp != null)
pageNow = Integer.parseInt(temp);
temp=(String)request.getAttribute("pageCount");
if (temp != null)
pageCount=Integer.parseInt(temp);
temp=(String)request.getAttribute("count");
if (temp != null)
count=Integer.parseInt(temp);
temp=this.buildPage(uri, pageNow, pageCount, count);
try {
this.pageContext.getOut().println(temp);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return this.SKIP_BODY;
}
public String buildPage(String uri,int pageNow,int pageCount,int count)
{
StringBuffer sb = new StringBuffer();
sb.append("<TABLE border=\"0\" width=\"100%\">");
sb.append("<TR>");
sb.append("<TD align=\"right\" colspan=\"5\"><a href=\"#\" onclick=\"first();\">首页</a>|");
if(pageNow<pageCount)
sb.append("<a href=\"#\" onclick=\"next("+(pageNow+1)+");\">下一页</a>|");
else
sb.append("<font size=\"2\">下一页 </font>|");
if(pageNow>1)
sb.append("<a href=\"#\" onclick=\"next("+(pageNow-1)+");\">上一页</a>|");
else
sb.append("<font size=\"2\">上一页</font>|");
sb.append("<a href=\"#\" onclick=\"end("+pageCount+");\">尾页</a>|");
sb.append("<font size=\"2\">"+pageNow+"/"+pageCount+" 共:"+count+"条</font></TD>");
sb.append("</TR>");
sb.append("</TABLE>");
return sb.toString();
}
查询Action
package com.jack.user.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.jack.user.model.IMerchandiseServices;
import com.opensymphony.xwork2.ActionSupport;
public class MerchandiseSearchAction extends ActionSupport implements
ServletRequestAware {
private static final long serialVersionUID = 1351082640259559948L;
private List list;
private int pageNow;
private javax.servlet.http.HttpServletRequest request;
@SuppressWarnings("unused")
private IMerchandiseServices merchandiseServices;
public void setMerchandiseServices(IMerchandiseServices merchandiseServices) {
this.merchandiseServices = merchandiseServices;
}
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public String execute() {
String result = "";
try {
int pageSize=5;
int pageNow=1;
int pageNowStr=this.getPageNow();
if(pageNowStr!=1&&pageNowStr!=0)
{
pageNow=pageNowStr;
}
list = merchandiseServices.searchAllMerchandise(pageSize,pageNow);
int pageCount=merchandiseServices.getPageCount(pageSize);
int count=merchandiseServices.getCount();
request.setAttribute("list",list);
request.setAttribute("pageNow",pageNow+"");
request.setAttribute("pageCount",pageCount+"");
request.setAttribute("count",count+"");
result = "success";
} catch (Exception e) {
// TODO: handle exception
result = "error";
}
return result;
}
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request = request;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
}
}
页面提交由form表单提交和DWRUtilAction两种提交方式,现在看到的完全由DWRUtilAction方式提交
function saveMerchandise() { if(checkNonEmpty(document.getElementById('name'),'名称')) { if(checkNonEmpty(document.getElementById('manufacturer'),'厂商')) { DWRActionUtil.execute({namespace:'/user',action:'merchandiseAction',executeResult:'false'},document.mer,searchMerAll); } } } function searchMerAll() { DWRActionUtil.execute({namespace:'/user',action:'merchandiseSearchAction',executeResult:'true'},{},cal); } function cal(data) { document.getElementById('name').value=''; document.getElementById('manufacturer').value=''; document.getElementById('li').innerHTML=data; } function dele(id) { DWRActionUtil.execute({namespace:'/user',action:'merchandiseDeleteAction',executeResult:'false'},{id:id},searchMerAll); } function searchById(id) { DWRActionUtil.execute({namespace:'/user',action:'merchandiseFindByIdAction',executeResult:'false'},{id:id},fd); } function fd(data) { document.getElementById('id').value=data.merchandise.id document.getElementById('name').value=data.merchandise.name document.getElementById('manufacturer').value=data.merchandise.manufacturer } function cl() { document.getElementById('id').value=""; document.getElementById('name').value=""; document.getElementById('manufacturer').value=""; } function updateMerchandise() { if(document.getElementById('id').value==''||document.getElementById('id').value=='undefined'){ alert('请选择要修改的信息'); return; }else { if(checkNonEmpty(document.getElementById('name'),'名称')) { if(checkNonEmpty(document.getElementById('manufacturer'),'厂商')) { var id=document.getElementById('id').value; var name=document.getElementById('name').value; var manufacturer= document.getElementById('manufacturer').value; DWRActionUtil.execute({namespace:'/user',action:'merchandiseUpdateAction',executeResult:'false'},{id:id,name:name,manufacturer:manufacturer},searchMerAll); } } } } function searchReAll() { var allInput = document.getElementsByName("mid"); var loopTime = allInput.length; for(i = 0;i < loopTime;i++) { if(allInput[i].type == "checkbox") { if(allInput[i].checked==true) { allInput[i].checked=false; }else { allInput[i].checked=true; } } } } function batchDel() { var allInput = document.getElementsByName("mid"); var loopTime = allInput.length; var valuetext=""; for(i=0,num=0;i<loopTime;i++) { if(allInput[i].checked) { valuetext+=(valuetext=="")?allInput[i].value:","+allInput[i].value; num++; } } if(num>0) { alert(valuetext); } else { alert('请选择所要删除商品!'); } }
由于代码比较多这里就不一一贴出来,如果哪位朋友需要可留Email
评论
14 楼
weizuying
2012-02-03
非常非常感谢给我发一份
ebridge@qq.com
ebridge@qq.com
13 楼
huzixu
2012-02-02
您好我很想要一份,正在做非常类似的项目.zixuhu@qq.com
不胜感激!
不胜感激!
12 楼
ceoajun
2011-09-08
楼组给我发一份, ceoajun@sina.cn,谢谢...!
11 楼
wy8232255
2011-07-23
hashsound@126.com
非常感谢
非常感谢
10 楼
weizuying
2010-09-22
你好能不能发一份给我啊?谢谢,我想要什么项目的话我也可以发一份给你
EBridge@QQ.COM
EBridge@QQ.COM
9 楼
stuhack0303
2010-05-31
2212642@qq.com
8 楼
nibuguan
2010-04-13
给我一份 好吗
lessliu@qq.com
lessliu@qq.com
7 楼
liyan7758521
2010-03-16
你好,我想学习下自动补全,麻烦发一份给我,不胜感激。。 谢谢分享!!!
liyan_0000@yahoo.com.cn
liyan_0000@yahoo.com.cn
6 楼
tanlu125
2010-03-03
你好,我想学习下自动补全,麻烦发一份给我,不胜感激。。
email:tanlu@qq.com
email:tanlu@qq.com
5 楼
轩风之逸
2009-10-16
412599526@qq.com,谢谢,希望你能给我一份。学习学习
4 楼
lokion
2009-10-15
我想要一份源代码来学习学习,我的邮箱是zitemp8 at gmail dot com。非常谢谢
3 楼
hua758209
2009-10-11
你好,我想要一份源代码来学习学习,我的邮箱是zhengliangjun135@163.com。非常谢谢
2 楼
czjie
2009-10-11
你好~我也想要一份代碼.
email:115807847@qq.com
絕對感謝~
email:115807847@qq.com
絕對感謝~
1 楼
xiechunmei13
2009-09-27
hi:
您好!我想看下你dwr操作action的部分。方便的话传份给我好吗?
谢谢。
xiechunmei13@163.com
非常感谢。
您好!我想看下你dwr操作action的部分。方便的话传份给我好吗?
谢谢。
xiechunmei13@163.com
非常感谢。
相关推荐
jar包:项目中除了使用了struts2,hibernate3.0和spring1.8以外(用spring2.0的包也可以.不能低于1.8的包.)还是用了junit,ajax,第三方的table组件.等等.所以需要下载相对应的包. 为了上传jar.我专门申请了一个网盘.所有...
在这个“struts+spring+hibernate+dwr+分页例子”中,我们将深入探讨这四个框架的集成以及分页功能的实现。 1. **Struts**: Struts 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它主要负责处理...
2 利用struts2 的LoginAction-validation.xml 3 在bean里把service包;暴露DWR,写了一个验证用户名的流程 4 采用jpa作为POJO,还是减少配置 5 加入display的分页,并且是物理分页 打开后自已建表sql.txt jdbc....
1. **SSH+jQuery+DWR+EasyUI 实战**:本文档通过一系列的实战案例展示了如何将 Struts2、Spring3、Hibernate4 与 DWR、jquery2.x 和 easyUI1.3.x 结合起来开发实际的应用。 2. **实战案例详解**: - SSH 架构集成...
struts2+spring2.5+hibernate3.2+dwr+MySQL驱动包 把上述包导了就没错了。 打包有个user.txt为数据库导出的,你导入mysql就行,里面的图片路径你没有,所以不会有图片,不用理会。test文件夹则是项目。 代码全,...
在"ssh(struts,hibenate,spring)++dwr分页"的场景中,开发者可能是在构建一个Web应用程序,其中涉及到大量的数据展示,比如一个数据列表。为了提高用户体验,他们采用了分页技术,这样用户可以逐步加载和查看数据,...
struts2+spring2.5+hibernate3.2整合所需的所有jar包,并额外包含了dwr.jar、分页组件pager-taglib、绘图组件jfreechart.jar、Excel解析工具包jxl.jar、数据库连接池工具包proxool.jar
SSH(Struts2 + Spring + Hibernate)是一种经典的Java Web开发框架组合,用于构建高效、可扩展的Web应用程序。DWR(Direct Web Remoting)则是一个JavaScript库,它允许在浏览器和服务器之间进行实时的双向通信,...
SSH(Struts2 + Spring + Hibernate)是一种经典的Java Web开发框架,用于构建高效、可维护性的Web应用程序。DWR(Direct Web Remoting)则是一种JavaScript库,它允许在客户端JavaScript和服务器端Java之间进行实时...
Struts2 Spring3.0 Hibernate3.3 全注解配置,避免了大量业务类在Spring文件的配置,整合了DWR3.0,displayTag 物理分页技术的实现。树形菜单。 另外数据库,在下一个资源;由于20MB的限制。 有问题的话留言。
SSH(Struts、Hibernate、Spring)是一个经典的Java Web开发框架组合,用于构建高效、可维护的企业级应用程序。在这个实验管理系统中,这三个组件协同工作,提供模型-视图-控制器(MVC)架构、数据持久化以及全面的...
SSH(Struts2 + Spring + Hibernate)是一种经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。Struts2提供了MVC(Model-View-Controller)架构,Spring提供了依赖注入和事务管理,Hibernate则...
在IT行业中,s2sh(Struts2+Spring+Hibernate)是一个常见的企业级Web应用开发框架,它结合了Struts2的MVC模式、Spring的依赖注入和事务管理以及Hibernate的对象关系映射功能,提供了强大的后端支持。而DWR(Direct ...
struts2 + spring + hibernate + dwr 实现功能: 查询出所有数据,并分页 此项目已完成! s2sh 1、案例一、完成查询表中所有的数据 2、案例二、完成分页查询表中的数据 3、案例三、dwr每隔三秒钟自动加载数据库...
2. S2SH:S2SH 是Struts2、Spring 和Hibernate的缩写,是一种流行的企业级Java Web开发框架。Struts2作为MVC框架负责处理请求和视图的呈现,Spring提供依赖注入和事务管理,而Hibernate则是一个对象关系映射(ORM)...
- Web OA系统:使用Struts+Hibernate+Spring的三层架构,实现企业办公自动化,涉及权限管理、公文流转等多个模块,运用ThreadLocal、JSTL和DWR等技术,展示了对企业级应用的理解和实践经验。 - CRM系统:基于营销...
项目采用了MyEclipse作为开发工具,Oracle作为数据库,Tomcat作为应用服务器,技术栈基于Struts+Hibernate+Spring的多层架构。他还利用ThreadLocal实现页面分页,JSTL和自定义函数处理JSP页面,DWR处理授权,JBPM...
本文介绍open-JWeb(RAD)开发平台,此平台基于Spring+hibernate+struts+webwork+acegi+dwr技术,内容包括动态生成增删改查功能(含分页,查询,编辑等),无需编程即可实现.另外集成了强大的acegi框架,及基于FCKEDIT的信息...