GVKun编程网logo

DWR与SSH 配置(dw src)

11

对于想了解DWR与SSH配置的读者,本文将是一篇不可错过的文章,我们将详细介绍dwsrc,并且为您提供关于DWR+ssh2项目实例、Dwrpush技术与SpringMVC的整合、dwr与SSH2结合后

对于想了解DWR与SSH 配置的读者,本文将是一篇不可错过的文章,我们将详细介绍dw src,并且为您提供关于DWR + ssh2 项目实例、Dwr push技术与Spring MVC的整合、dwr 与 SSH2结合后,dwr部分的权限控制怎么弄?、dwr 与spring 完美整合的有价值信息。

本文目录一览:

DWR与SSH 配置(dw src)

DWR与SSH 配置(dw src)

项目需要用到Ajax,最开始本想用Jquery,最后权衡下选择了DWR。

这里说的是DWR整合SSH,其实DWR完全没有必要和Struts2结合,毕竟DWR需要返回的是Object,而Struts2直接转向了页面。非要强制将二者整合,只能做一个伪Action,这个伪Action返回的还是Object。当然DWR和Spring、Hibernate结合就非常好,可以将Struts2戏称为小三了 O(∩_∩)O ~

扯得有点远了,步入正题。

需求描述:

根据新闻标题(title)利用Ajax模糊查询新闻集合(这里将这些新闻集合称之为相关新闻),并将得到的相关新闻在页面以列表的形式展示出来,且需要实现分页。

框架搭建(这里只讲与DWR有关的配置,DWR--Version: 2.0.1)à

web.xml:

[xhtml] view plain copy
  1. <listener>
  2. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  3. </listener>
  4. <servlet>
  5. <servlet-name>dwr-invoker</servlet-name>
  6. <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
  7. <init-param>
  8. <param-name>debug</param-name>
  9. <param-value>true</param-value>
  10. </init-param>
  11. </servlet>
  12. <servlet-mapping>
  13. <servlet-name>dwr-invoker</servlet-name>
  14. <url-pattern>/dwr/*</url-pattern>
  15. </servlet-mapping>

dwr配置文件:

[xhtml] view plain copy
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEdwrPUBLIC"-//GetAheadLimited//DTDDirectWebRemoting
  3. 2.0//EN""http://www.getahead.ltd.uk/dwr/dwr20.dtd">
  4. <dwr>
  5. <allow>
  6. <createjavascript="showList"creator="spring"
  7. scope="application">
  8. <paramname="beanName"value="dwrquery"/>
  9. </create>
  10. <convertmatch="org.huajun.news.bean.News"converter="bean">
  11. </convert>
  12. <convertconverter="bean"match="java.lang.StackTraceElement"/>
  13. <convertconverter="exception"match="java.lang.Exception"/>
  14. </allow>
  15. </dwr>

dwr的spring配置文件(这里将其单独作为一个配置文件,需将其import到applicationContext.xml内,这里将伪action交于spring代管):

[xhtml] view plain copy
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. default-autowire="byName"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  6. <beanid="dwrquery"scope="prototype">
  7. <propertyname="qes">
  8. <refbean="qes"/>
  9. </property>
  10. </bean>
  11. <beanid="qes"scope="prototype">
  12. <propertyname="qd">
  13. <refbean="qd"/>
  14. </property>
  15. </bean>
  16. <beanid="qd"></bean>
  17. </beans>

新闻Bean(只列举出页面列表迭代用到的字段):

[java] view plain copy
  1. privateStringtitle;//标题
  2. privateStringcreater;//录入人
  3. privateintchecks;//点击数

dwr package:

由于service只是简单的dao的引用,所以这里只列出核心的两个类: DWRQueryDaoImpl 和DWRQuery (DWRQuery--这个伪Action的小三)

DWRQueryDaoImpl:

[java] view plain copy
  1. publicList<News>getNewsListByTitle(Stringtitle,Stringcolid){
  2. try{
  3. Stringhql="fromNewsasowhereo.titlelike'%"+title.trim()+"%'ando.pubstate='已发布'ando.newscolumn.id='"+colid.trim()+"'orderbypubstatedesc";
  4. return(List<News>)super.getHibernateTemplate().find(hql);
  5. }catch(RuntimeExceptionre){
  6. throwre;
  7. }
  8. }
  9. publicList<News>getNewsListByPage(finalStringtitle,finalStringcolid,finalintpageNo,finalintpagesize){
  10. finalMap<String,List<News>>map=newHashMap<String,List<News>>();
  11. try{
  12. super.getHibernateTemplate().execute(newHibernateCallback<List<News>>()
  13. {
  14. publicList<News>doInHibernate(Sessionsession)throwsHibernateException,sqlException
  15. {
  16. Stringhql="fromNewsasowhereo.titlelike'%"+title.trim()+"%'ando.pubstate='已发布'ando.newscolumn.id='"+colid.trim()+"'orderbypubstatedesc";
  17. Queryquery=session.createquery(hql);
  18. intfirstindex=(pageNo-1)*pagesize;
  19. query.setFirstResult(firstindex).setMaxResults(pagesize);
  20. Listlist=query.list();
  21. map.put("map",list);
  22. returnnull;
  23. }
  24. });
  25. ListreturnList=map.get("map");
  26. returnreturnList;
  27. }catch(RuntimeExceptionre){
  28. throwre;
  29. }
  30. }


DWRQuery :

[java] view plain copy
  1. publicMapdwrQuery(Stringtitle,Stringcolid,intpageNo){
  2. List<News>list=newArrayList<News>();
  3. list=qes.getNewsListByTitle(title,colid);
  4. //获得总记录数
  5. IntegerrecordCount=list.size();
  6. //总页数
  7. intpageCount=(int)Math.ceil(recordCount.doubleValue()/this.getPagesize());
  8. list.clear();
  9. list=qes.getNewsListByPage(title,colid,pageNo,this.getPagesize());
  10. Mapmap=newHashMap();
  11. map.put("recordCount",recordCount);//总记录数
  12. map.put("pageSize",this.getPagesize());//每页显示数
  13. map.put("pageCount",pageCount);//总页数
  14. map.put("dataList",list);//新闻集合
  15. returnmap;
  16. }


页面:

[xhtml] view plaincopy
  1. <!--DWRJS-->
  2. <scripttype="text/javascript">
  3. currentPage=1;//当前页码全局变量
  4. functionchangtable(pageNo){
  5. if(pageNo<1){
  6. pageNo=1;//当前页为1
  7. }
  8. currentPage=pageNo;//根据当前页数修改全局变量
  9. varquerytitle=document.getElementById("querytitle");//这里是查询字段
  10. //这里调用DWRQuery的dwrQuery方法
  11. showList.dwrQuery(querytitle.value,callBackMethod);
  12. }
  13. functioncallBackMethod(map){
  14. varshowmsg=document.getElementById("showmsg");
  15. varcolname=document.getElementById("colname").value;
  16. showmsg.innerHTML="";
  17. DWRUtil.removeAllRows("tablebody");
  18. //没有查询到相应记录
  19. if(map['dataList'].length==0){
  20. showmsg.innerHTML="<fontcolor='red'>没有查询到相应记录!</font>";
  21. }else{
  22. //这里调用的DWRUtil.addRows方法可以参考我的上一篇文章
  23. DWRUtil.addRows("tablebody",map['dataList'],
  24. [
  25. function(item){
  26. return"&nbsp;<inputtype='checkBox'name='checkBox'value='"+item.id+"'/>"
  27. },
  28. function(item){
  29. return"&nbsp;&nbsp;<atarget='_blank'href="pubnews!looknew.action?id="+item.id+"'>"+item.title+"</a>"
  30. },
  31. function(item){return"&nbsp;&nbsp;"+item.creater},
  32. function(item){return"&nbsp;&nbsp;"+item.checks}
  33. ],
  34. {escapeHtml:false});
  35. }
  36. showPageBar(map,currentPage);//根据全局当前页数调用显示页面导航的函数
  37. }
  38. //显示页码导航
  39. functionshowPageBar(map,pageNo){
  40. varpageBar=document.getElementById("pageDiv");
  41. varrecordCount=map['recordCount'];//总记录数
  42. varpageSize=map['pageSize'];//每页显示记录数
  43. varpageCount=map['pageCount'];//总页数
  44. varpageStr="当前页:第"+pageNo+"页|";
  45. pageStr+="总记录数:"+recordCount+"条|";
  46. pageStr+="每页显示:"+pageSize+"条|";
  47. pageStr+="总页数:"+pageCount+"页|";
  48. if(pageNo==1){
  49. pageStr+="首页上一页";
  50. }else{
  51. pageStr+="<ahref="javascript:changtable(1)">首页</a>
  52. <ahref="javascript:changtable("+(pageNo-1)+")">上一页</a>";
  53. }
  54. if(pageNo<pageCount){
  55. pageStr+="<ahref="javascript:changtable("+(pageNo+1)+")">
  56. 下一页</a><ahref="javascript:changtable("+pageCount+")">末页</a>";
  57. }else{
  58. pageStr+="下一页末页";
  59. }
  60. pageStr+="&nbsp;";
  61. pageBar.innerHTML=pageStr;
  62. }
  63. //引入dwr的js库文件
  64. <scripttype='text/javascript'src='dwr/interface/showList.js'></script>
  65. <scripttype='text/javascript'src='dwr/engine.js'></script>
  66. <scripttype='text/javascript'src='dwr/util.js'></script>
  67. //展示列表
  68. <tablealign="center">
  69. <tbody>
  70. <tr>
  71. <thwidth="28px">
  72. <inputtype="checkBox"id="allche"value="checkBox"
  73. title="全选/全不选"onclick="allChoose();changeIds();">
  74. </th>
  75. <th>
  76. 标题
  77. </th>
  78. <th>
  79. 录入者
  80. </th>
  81. <th>
  82. 点击数
  83. </th>
  84. </tr>
  85. </tbody>
  86. <tbodyid="tablebody">
  87. </tbody>
  88. </table>
  89. <divid="showmsg"align="center">
  90. </div>
  91. <divid="pageDiv"align="right">
  92. </div>

//最终实现的分页效果

当前页: 1 |总记录数: 21 |每页显示: 10 |总页数: 3 |上一页下一页

DWR整合SSH大致总结到这里,粘了比较多的代码。希望能给有类似需求的朋友们提供一点点帮助。

DWR + ssh2 项目实例

DWR + ssh2 项目实例

总结

以上是小编为你收集整理的DWR + ssh2 项目实例全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Dwr push技术与Spring MVC的整合

Dwr push技术与Spring MVC的整合

之前的web项目已经是基于Spring mvc框架的,现在需要在此基础上做一个动态网页刷新的功能,选用的是dwr的push技术,服务器端更新,立马在web页面上显示。

1.导入dwr.jar包

2.配置web.xml文件,所有的映射都被spring mvc的控制器进行截取,再由controller进行转发。

<servlet> 
		<servlet-name>testdispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.dispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/config.xml</param-value>	
 		</init-param>
		</servlet>

	<servlet-mapping>
		<servlet-name>testdispatcher</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>
	
	<servlet-mapping>
		<servlet-name>testdispatcher</servlet-name>
		<url-pattern>/dwr/*</url-pattern>
	</servlet-mapping>

3.在web层的容器中配置dwr的相关信息。

<!-- 扫描注解的包 -->
<context:component-scan base-package="springmvc"></context:component-scan>
<!-- 视图解析器 -->
	<beanp:prefix="/view/" p:suffix=".jsp" />
<!-- 通过注解,把URL映射到Controller上,该标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->  
	<mvc:annotation-driven />
<!-- 要求DWR将util.js和engine.js映射到dwrController -->  
	<dwr:url-mapping />
<!-- 配置dwr的控制器,如若要使用push,则必须设定activeReverseAjaxEnabled-->  
	<dwr:controller id="dwrController" debug="true">
		<dwr:config-param name="activeReverseAjaxEnabled"
			value="true" />
	</dwr:controller>
<dwr:configuration></dwr:configuration>

4.经过上述配置后,经过spring mvc 的controller所转发的都可以连接到web页面(dwr push),例如
ServerContext serverContext = ServerContextFactory.get();
		Collection<ScriptSession> scriptSessions = serverContext
				.getAllScriptSessions();
		Util util = new Util(scriptSessions);
		ScriptBuffer scriptBuffer = new ScriptBuffer();
		//将object数据传给javascript中的showConvertOneTime()函数
		scriptBuffer.appendScript("showConvertOneTime(").appendData(object)
		.appendScript(");");
		util.addScript(scriptBuffer);

dwr 与 SSH2结合后,dwr部分的权限控制怎么弄?

dwr 与 SSH2结合后,dwr部分的权限控制怎么弄?

dwr 与 SSH2结合后,dwr部分的权限控制怎么弄?

ssh2部分有拦截器可以做到权限控制,可是dwr那些被曝露出来的函数,怎么与SSH2部分的权限控制保持一致?

重新编写权限验证函数?写入到dwr的函数里面(或者AOP加进去)?

dwr 与spring 完美整合

dwr 与spring 完美整合

总结

以上是小编为你收集整理的dwr 与spring 完美整合全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

今天关于DWR与SSH 配置dw src的分享就到这里,希望大家有所收获,若想了解更多关于DWR + ssh2 项目实例、Dwr push技术与Spring MVC的整合、dwr 与 SSH2结合后,dwr部分的权限控制怎么弄?、dwr 与spring 完美整合等相关知识,可以在本站进行查询。

本文标签: