DWR与Struts整合

1.下載DWR Version 2
https://dwr.dev.java.net/files/documents/2427/47504/dwr.jar

2.安裝DWR,把dwr.jar放到WEB-INF/lib下

web.xml中加入DWRServlet & ActionServlet
其中<load-on-startup>的部分要特別注意,ActionServlet要先初始化,所以數字要比較小.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30


   <servlet>    
<servlet-name>action</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>2</param-value>    
</init-param>    
<load-on-startup>2</load-on-startup>  
</servlet>  
<servlet-mapping>    
<servlet-name>action</servlet-name>    
<url-pattern>*.do</url-pattern>  
</servlet-mapping>  
<servlet>    
<servlet-name>dwr-invoker</servlet-name>    
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>    
<init-param>      
<param-name>debug</param-name>      
<param-value>true</param-value>    
</init-param>    
<load-on-startup>10</load-on-startup>  
</servlet>  
<servlet-mapping>   
 <servlet-name>dwr-invoker</servlet-name>    
<url-pattern>/dwr/*</url-pattern>  

</servlet-mapping>

dwr.xml中加入struts的設定,其中formBean的參數的value值,會對應到struts-config.xml中<form-beans>的設定

1
2
3
4
5
6
7
8


   <dwr>  
<allow>    
<create creator="struts"

 javascript="testFrm"

>      
<param name="formBean"

 value="testActionForm"

/>    
</create>  
</allow>  
</dwr>  



struts-config.xml

1
2
3
4
5
6
7
8
9
10
11


   <struts-config>  
<form-beans>    
<form-bean name="testActionForm"

 type="test.struts.testActionForm"

 />  
</form-beans>  
<action-mappings>    
<action name="testActionForm"

 path="/testAction"

 scope="session"

 type="test.struts.testAction"

 validate="false"

>      
<forward name="display"

 path="/display.jsp"

 />    
</action>  
</action-mappings>  
<message-resources parameter="ApplicationResources"

 />
</struts-config>



testActionForm.java,getDate()會透過dwr,取得現在最新的日期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24


package



 test.struts; 
import



 org.apache.struts.action.*;
import



 java.util.*; 
public



 class



 testActionForm extends



 ActionForm {

     
private



 String strDate;     
public



 void



 setStrDate(String strDate) {

        
this.strDate = strDate;    
}

     
public



 String getStrDate() {

        
return



 strDate;    
}

    
 //dwr

    public



 String getDate() {

        
Date date = new



 Date();        
return



 date.toString();   
 }

 
}

testAction.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20


package



 test.struts; 
import



 org.apache.struts.action.ActionMapping;
import



 org.apache.struts.action.ActionForm;
import



 javax.servlet.http.HttpServletRequest;
import



 javax.servlet.http.HttpServletResponse;
import



 org.apache.struts.action.ActionForward;
import



 org.apache.struts.action.Action;
import



 org.apache.struts.action.*; 
public



 class



 testAction extends



 Action {

    
 public



 ActionForward execute(ActionMapping mapping, ActionForm form,                                 
HttpServletRequest request,                                 
HttpServletResponse response) {

         
testActionForm actionForm = (testActionForm) form;       
 System.out.println(actionForm.getStrDate());        
return



 mapping.findForward("display"

);    
}

}

date.jsp,在form的部分,請用struts 的 tag library,我把<html:text property="strDate" size="30" >改成<input type="text" name="strDate">後,無法正常的接受到值.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38


<%@ page contentType="text/html; charset=Big5"

 %>
<%@ taglib uri="/WEB-INF/struts-bean.tld"

 prefix="bean"

 %>
<%@ taglib uri="/WEB-INF/struts-html.tld"

 prefix="html"

 %>
<%@ taglib uri="/WEB-INF/struts-logic.tld"

 prefix="logic"

 %>
<html><head>
<title>title</title>  
<script type='text/javascript'

 src='dwr/interface/testFrm.js'

></script>  
<script type='text/javascript'

 src='dwr/engine.js'

></script>  
<script type='text/javascript'

 src='dwr/util.js'

></script>
</head>
<SCRIPT LANGUAGE="JavaScript"

 type=""

> 
function refreshDate() {

   
 testFrm.getDate(populateDate)
;}

 
function populateDate(data){

   
DWRUtil.setValue('strDate'

, data);
}

 
</script> 
<body> 
<html:form action="testAction.do"

>
date:<html:text property="strDate"

 size="30"

 ></html:text> 
<input type="button"

 onclick="refreshDate();"

 value="更新日期"

/><br/>   
<html:submit>送出   </html:submit>
</html:form></body></html>

display.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15


<%@ page contentType="text/html; charset=Big5"

 %>
<%@ taglib uri="/WEB-INF/struts-bean.tld"

 prefix="bean"

 %>
%@page import="test.struts.*"

%

<html>
<head>
<title>test</title>
</head><body bgcolor="#ffffff"

><h1>您送出的日期:<br>
<bean:write name="testActionForm"

 property="strDate"

/></h1>
</body>
</html>

你可能感兴趣的:(struts)