DWR整合struts1

其实网上已经有很多例子了!我也是从网上看一个例子然后写了写!然后加了点我自己的想法和要注意的地方!
就我个人而言,这个整合的意义好像不是很大,他们完全可以各做各的事情,毫不干涉!
下面看看代码,代码后面就是要注意的地方,大家注意看:
1、首先是web.xml的配置文件了,就是将两个servlet配置在里面节约空间DTD就不写了

<!-- struts1-servlet -->
<servlet>
    <servlet-name>struts1</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
        <param-name>debug</param-name>
        <param-value>3</param-value>
    </init-param>
    <init-param>
        <param-name>detail</param-name>
        <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
</servlet>

<!-- dwr2-servlet -->
<servlet>
    <servlet-name>dwr2</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>struts1</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>dwr2</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>


注意:struts的servlet一定要在dwr的servlet先启动,也就是说struts的servlet的数值要比dwr的小,当然你也可以不配置dwr的servlet的自动启动,那么访问的时候就会影响效率了!


2、下面看看struts-config.xml,一点都不变,老样子!

<struts-config>
    <form-beans>
        <form-bean name="testBean" type="org.bling.struts.bean.TestFormBean"></form-bean>
    </form-beans>   
    <action-mappings>
        <action path="/testAction" name="testBean" scope="session" type="org.bling.struts.action.TestAction">
            <forward name="display" path="/display.jsp"></forward>
        </action>
    </action-mappings>
</struts-config>


注意:这个地方唯一要注意的是你的Action的scope属性一定是Session,要不就会抛出来一个异常,异常是:
Illegal Access to default constructor,这个地方建议大家试试

3、看看我们的formbean这个类怎么写的:

package org.bling.struts.bean;

import java.util.Date;

import org.apache.struts.action.ActionForm;

public class TestFormBean extends ActionForm {

    private static final long serialVersionUID = -4410532669662332102L;
   
    private String strDate;

    public String getStrDate() {
        return strDate;
    }

    public void setStrDate(String strDate) {
        this.strDate = strDate;
    }
   
    /*
    * 这个方法是提供给dwr调用的!
    */
    public String getDate(){
        Date date = new Date();
        return date.toGMTString();       
    }
}


注意:这里我写了一个方法是给dwr框架调用的,方法的签名dwr框架很熟悉了吧!

4、下面看看我们的Action类

package org.bling.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.bling.struts.bean.TestFormBean;

public class TestAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        TestFormBean testFormBean = (TestFormBean)form;
        return mapping.findForward("display");
    }
   
}   

就是这简单,没有改变!

5、下面看看dwr.xml文件,这个地方是重点
<dwr>
    <allow>
        <create javascript="TestBean" creator="struts">
            <param name="formBean" value="testBean" />
        </create>
    </allow>
</dwr>


注意:这里的主要是
creator="struts"和name="formBean"是定值了! value="testBean"是对应我们struts-config.xml里面的formbean的名称了 !

6、下面就是两个页面:
index.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>struts + dwr Test</title>
    <script type="text/javascript" src="/dwr_struts1/dwr/engine.js"></script>
    <script type="text/javascript" src="/dwr_struts1/dwr/util.js"></script>
    <script type="text/javascript" src="/dwr_struts1/dwr/interface/TestBean.js"></script>
    <script type="text/javascript">
        function updateDate(){
            TestBean.getDate(function(data){
                                    dwr.util.setValue("strDate",data);
                                });
        }
    </script>
</head>
<body>
    <html:form action="/testAction.do" method="post">
        Date:<html:text property="strDate" size="30" />
        <input type="button" οnclick="updateDate()" value="更新日期"/>
        <html:submit value="send" />
    </html:form>
</body>
</html>


注意:这个地方就是
<html:text property="strDate" size="30" />不一定要用struts的标签!用Date:<input name="strDate" type="text" size="30"/>一样可以!因为dwr的方法和struts没有任何关系!当然表单也可以不用struts的东西,我这只是为了说明一下!

display.jsp

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>struts + dwr Test</title>
</head>
<body>
    Data is :<bean:write name="testBean" property="strDate"/>
</body>
</html>


好了,这样的一个简单的整合就好了!
注意每个代码后面的注意就行了!肯定没有问题!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值