推荐 阅读人群:
one: 未接触ajax但想要快速实现 局部刷新 功能的童鞋;
two: 刚接触 ajax,手动写过ajax代码 ,想提高开发效率的童鞋;
3th: 忘记如何部署、想要个思路的 老鸟。
- 产生原因 以及 解决了什么问题?
传统——>Ajax:
1,刷新整个页面——>局部刷新
2,用户体验差——>用户体验非常好
3,数据传输量大,并发低——>数据传输量小,并发高,负载高
DWR( 相对于Ajax ):
1,更稳定,兼容性更好
2,使用更简单
3,多业务处理简单
- 下面是 部署 思路图:
- 部署环境:MyEclipse 9.1 + Tomcat 6.0.18 + JDK 1.6 (+MySQL 5.5)
- 下面是工程结构和源码:
1、工程结构看上图的 右下角 那个框框 即可【包括所需要的包】;
2、工程源码【2个demo,不适用于实际应用】:http://115.com/file/an3zdwhc
- 关键源码:
(1)web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<display-name></display-name>
<!-- 配置DWR的核心Servlet -->
<listener>
<listener-class>
org.directwebremoting.servlet.DwrListener
</listener-class>
</listener>
<servlet>
<!-- 指定DWR核心Servlet的名字 -->
<servlet-name>dwr</servlet-name>
<servlet-class>
<!-- 指定DWR核心Servlet的实现类 -->
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<!-- 指定DWR核心Servlet处于调试状态 -->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<!-- 设置使用反向Ajax技术 -->
<init-param>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<!--长连接只保持时间 -->
<param-name>maxWaitAfterWrite</param-name>
<param-value>60</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 指定核心Servlet的URL映射 -->
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
(2)dwr.xml [ 仅供示例,对照着修改为你自己的 servlet 即可 ]
<?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>
<filter class="org.directwebremoting.filter.AuditLogAjaxFilter" />
<create creator="new" javascript="News_info_Service">
<param name="class" value="com.dwr_news.model.service.News_info_Service" />
</create>
</allow>
</dwr>