1、DWR简介
DWR(direct web remoting):是一种改善JAVA与WEB页面之间交互的AJAX开源框架,帮助JAVA程序更好的与页面进行交互。
2、DWR推送方式
(1) 被动推送
浏览器向服务器发送请求,服务器再根据请求将相应的数据返回给浏览器。
(2)主动推送
浏览器与服务器建立连接后,服务器保存这次连接,如果服务器有新的内容需要传到浏览器,则通过这个连接返回。
3、DWR配置过程
3.1导入JAR包
dwr.jar,如果用到spring,还需要导入spring的jar包
3.2配置web.xml
<servlet> <servlet-name>dwr</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>disconnectedTime</param-name> <param-value>100</param-value> </init-param> <init-param> <param-name>maxWaitAfterWrite</param-name> <param-value>500</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
3.3配置dwr.xml
<dwr> <allow> <convert converter="bean" match="com.dwr.UserBean"/> <create creator="new" javascript="userAdapter"> <param name="class" value="com.dwr.UserAdapter"/> </create> <create creator="spring" javascript="userAdapter2"> <param name="beanName" value="userAdapter2"></param> </create> </allow> </dwr>
业务类在DWR的配置方式有两种:
一种是直接创建业务类,creator的值是new;另一种是使用spring的bean,creator的值是spring
如果要使用到用户自定义的BEAN,只需要在dwr.xml加上
<convert converter="bean" match="com.dwr.UserBean"/>
则可。
3.4主体类
public class UserBean implements Serializable { private static final long serialVersionUID = 1L; private String username; private String password; public String getUsername() { returnusername; } public void setUsername(String username) { this.username = username; } public String getpassword() { returnpassword; } public void setPassword(String password) { this.password = password; } }
public class UserAdapter { public UserBean getUser(String username){ UserBean userBean = new UserBean(); userBean.setUsername("li"); userBean.setPassword("111"); return userBean; } /** * 向页面/Sample/dwr_test.jsp中的方法pushBySession推送数据。 */ public void testPush(){ ScriptBuffer scriptBuffer =new ScriptBuffer(); scriptBuffer.appendScript("try{"); scriptBuffer.appendScript("if(pushBySession){"); scriptBuffer.appendScript("pushBySession"); scriptBuffer.appendScript("("); scriptBuffer.appendData("result"); scriptBuffer.appendScript(")}"); scriptBuffer.appendScript("} catch(e){}"); Collection<ScriptSession> sessions =WebContextFactory.get().getScriptSessionsByPage("/Sample/dwr_test.jsp"); if (sessions ==null) { return; } for (ScriptSession scriptSession : sessions) { if (scriptSession !=null) { scriptSession.addScript(scriptBuffer); } } } public static void main(String[] args){ new UserAdapter().testPush(); }
3.5页面配置
dwr_test.jsp
<!-- DWR --> <script type="text/javascript" src="${pageContext.request.contextpath}/dwr/interface/userAdapter.js"></script> <script type="text/javascript" src="${pageContext.request.contextpath}/dwr/engine.js"></script> <script type="text/javascript" src="${pageContext.request.contextpath}/dwr/util.js"></script> <script> function getUser(){ userAdapter.getUser('me',function(userBean){ alert("username="+userBean.username+",password="+userBean.password); }); } function pushBySession(value){ alert("pushBySession value:"+value); } </script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。