1.web.xml中添加如下代码:
<!-- 配置DWR前端控制器 --> <servlet> <servlet-name>dwrServlet</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <!-- 指定配置文件 --> <init-param> <param-name>config</param-name> <!-- 如果有多个用","分开 --> <param-value>WEB-INF/classes/dwr.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value> </init-param> <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>500</param-value> </init-param> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwrServlet</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
2.新建dwr.xml:
<?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配置 --> <dwr> <allow> <!-- 从Spring中获取Java对象 --> <create javascript="talk" creator="spring"> <param name="beanName" value="talkService"></param> </create> <!-- <create javascript="talk" creator="new"> <param name="beanName" value="com.dailywork.service.impl.TalkServiceImpl"></param> </create> --> <!-- 指定针对于特定对象的转换器 --> <convert match="entity.*" converter="bean"></convert> <convert match="java.lang.Throwable" converter="bean"> <param name="include" value="message"></param> </convert> </allow> </dwr>
3.applicationContext.xml中配置bean
<bean id="talkAction" class="com.dailywork.action.TalkAction"></bean>
4.需要推送数据的java中
//java推送到jsp public void talk(){ HttpSession session = WebContextFactory.get().getSession(); WebContext contex = WebContextFactory.get(); Collection<ScriptSession> scriptSessions = contex.getScriptSessionsByPage(contex.getCurrentPage()); ScriptSession scriptSession = WebContextFactory.get().getScriptSession(); //像当前session推送 Util util = new Util(scriptSession); ScriptBuffer sb = new ScriptBuffer(); sb.appendScript("show("); sb.appendData("欢迎" + session.getAttribute("username") + "进入对话"); sb.appendScript(")"); util.addScript(sb); //像所有session推送 Util utilAll = new Util(scriptSessions); ScriptBuffer sbAll = new ScriptBuffer(); sbAll.appendScript("show("); sbAll.appendData(session.getAttribute("username") + "进入了对话"); sbAll.appendScript(")"); utilAll.addScript(sbAll); } //jsp请求java public String 方法名(参数){ return 返回值 }
5.被推送的jsp中:
<script type="text/javascript" src="dwr/engine.js"></script> <script type="text/javascript" src="dwr/util.js"></script> <script type="text/javascript" src="dwr/interface/talk.js"></script> <script> dwr.engine._execute("dwr", ‘talk‘, ‘这里填java中的方法‘, ‘参数‘, {callback:function(data){data}}); function show(data){ console.log(data); } </script>
时间: 2024-11-09 01:50:43