struts中動態表單(DynaActionForm)的使用(超簡單例子)
主要功能是在頁面上輸入username和password提交,然后在另一個頁面顯示。
1.所需要的包就是struts的lib包;
2.所涉及道德文件有:web.xml;struts_config.xml;兩個頁面(index.jsp、dyna_actionform.jsp);一個action(DynaAction.java);
3.這種動態的DynaActionForm是將Form繼續傳遞。違背了分層的規則(少用);
web.xml 這個文件沒什么的別的。
1
<?xml version="1.0" encoding="UTF-8"?>
2
<web-app version="2.5"
3
xmlns="http://java.sun.com/xml/ns/javaee"
4
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
6
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
7
<welcome-file-list>
8
<welcome-file>index.jsp</welcome-file>
9
</welcome-file-list>
10
11
<servlet>
12
<servlet-name>action</servlet-name>
13
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
14
<!-- Default -->
15
<init-param>
16
<param-name>config</param-name>
17
<param-value>/WEB-INF/struts-config.xml</param-value>
18
</init-param>
19
<init-param>
20
<param-name>debug</param-name>
21
<param-value>2</param-value>
22
</init-param>
23
<init-param>
24
<param-name>detail</param-name>
25
<param-value>2</param-value>
26
</init-param>
27
<load-on-startup>2</load-on-startup>
28
</servlet>
29
30
<servlet-mapping>
31
<servlet-name>action</servlet-name>
32
<url-pattern>*.do</url-pattern>
33
</servlet-mapping>
34
</web-app>
35

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

struts_config.xml 動態的Form就是在這里配置的
1
<?xml version="1.0" encoding="gb2312"?>
2
<!DOCTYPE struts-config PUBLIC
3
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
4
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
5
6
<struts-config>
7
<form-beans>
8
<form-bean name="dynaFrom" type="org.apache.struts.action.DynaActionForm">
9
<form-property name="username" type="java.lang.String"/>
10
<form-property name="age" type="java.lang.Integer"/>
11
</form-bean>
12
</form-beans>
13
14
<action-mappings>
15
<action path="/danaform"
16
type="com.eplugger.struts.action.DynaAction"
17
name="dynaFrom"
18
scope="request"
19
>
20
<forward name="success" path="/dyna_actionform.jsp"/>
21
</action>
22
</action-mappings>
23
</struts-config>
24

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

DynaAction.java注意這個文件
1 package com.eplugger.struts.action;
2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5
6 import org.apache.struts.action.Action;
7 import org.apache.struts.action.ActionForm;
8 import org.apache.struts.action.ActionForward;
9 import org.apache.struts.action.ActionMapping;
10 import org.apache.struts.action.DynaActionForm;
11
12 public class DynaAction extends Action {
13
14 @Override
15 public ActionForward execute(ActionMapping mapping, ActionForm form,
16 HttpServletRequest request, HttpServletResponse response)
17 throws Exception {
18 //獲取動態的ActionForm
19 DynaActionForm daf = (DynaActionForm) form;
20 //DynaActionForm中提供了get()方法,所以我們可以直接獲得頁面傳來的值。但是他把值放到了Map中,所以我們要強制類型轉換
21 String username = (String)daf.get("username");
22 Integer age = (Integer)daf.get("age");
23 //成功轉到成功頁面
24 return mapping.findForward("success");
25 }
26
27 }
28
index.jsp2
3 import javax.servlet.http.HttpServletRequest;
4 import javax.servlet.http.HttpServletResponse;
5
6 import org.apache.struts.action.Action;
7 import org.apache.struts.action.ActionForm;
8 import org.apache.struts.action.ActionForward;
9 import org.apache.struts.action.ActionMapping;
10 import org.apache.struts.action.DynaActionForm;
11
12 public class DynaAction extends Action {
13
14 @Override
15 public ActionForward execute(ActionMapping mapping, ActionForm form,
16 HttpServletRequest request, HttpServletResponse response)
17 throws Exception {
18 //獲取動態的ActionForm
19 DynaActionForm daf = (DynaActionForm) form;
20 //DynaActionForm中提供了get()方法,所以我們可以直接獲得頁面傳來的值。但是他把值放到了Map中,所以我們要強制類型轉換
21 String username = (String)daf.get("username");
22 Integer age = (Integer)daf.get("age");
23 //成功轉到成功頁面
24 return mapping.findForward("success");
25 }
26
27 }
28
1 <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3 <html>
4 <head>
5 </head>
6 <body>
7 <form action="danaform.do" method="post">
8 username:<input type="text" name="username"><br>
9 age:<input type="text" name="age"><br>
10 <input type="submit" value="submit">
11 </form>
12 </body>
13 </html>
14
2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3 <html>
4 <head>
5 </head>
6 <body>
7 <form action="danaform.do" method="post">
8 username:<input type="text" name="username"><br>
9 age:<input type="text" name="age"><br>
10 <input type="submit" value="submit">
11 </form>
12 </body>
13 </html>
14
dyna_actionform.jsp
1
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
2
pageEncoding="ISO-8859-1"%>
3
<%@ page isELIgnored="false" %>
4
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5
<html>
6
<head>
7
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
8
<title>Insert title here</title>
9
</head>
10
<body>
11
username:${dynaFrom.map.username }<br>
12
age:${dynaFrom.map.age }
13
</body>
14
</html>

2

3

4

5

6

7

8

9

10

11

12

13

14

最后說一點動態的ActionForm的驗證,通常使用動態驗證框架validator。否則將失去動態ActionForm的意義。
posted on 2009-06-07 17:16 生命的綻放 閱讀(2254) 評論(1) 編輯 收藏 所屬分類: Struts1.x