sakrua`s java 世界
struts hibernate spring web2.0 ajax
posts - 0,  comments - 0,  trackbacks - 0

通常我们在Struts中是使用ActionForm来传送jsp页面的form中提交的数据的,在前面的例子中我们也用到了一个

ActionForm它们都是从org.apache.struts.action.ActionForm中继承来的,那么Struts就行帮我们把提交的数

据自动入到这个Form 中,我们在Action中就可以用form.getXXX()和form.setXXX()来处理数据了,好!下面我

们来做一下这个例子

新建一个文件struts-config-formtest.xml ,下面为文件的内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
    <form-beans>
        <form-bean name="testForm" type="org.form.struts.form.NormalForm"  ></form-bean>
        <form-bean name="dynaTestForm" type="org.apache.struts.action.DynaActionForm">
            <form-property name="userName" type="java.lang.String"></form-property>
            <form-property name="passWorld" type="java.lang.String"></form-property>
            <form-property name="sex" type="byte" initial="0"></form-property>
            <form-property name="email" type="java.lang.String"></form-property>
            <form-property name="phoneNum" type="java.lang.String"></form-property>
            <form-property name="age" type="int" initial="12"></form-property>
        </form-bean>
    </form-beans>

    <action-mappings>
        <action path="/formTest"  name="testForm" type="org.form.struts.action.NormalFormAction">
            <forward name="success" path="/normalsuccess.jsp"></forward>
        </action>
        <action path="/dynaformTest"  name ="dynaTestForm" type="org.form.struts.action.dynaFormAction">
            <forward name="success" path="/dynasuccess.jsp"></forward>
        </action>
        <action path="/gotoaction" type="org.form.struts.action.GotoAction">
            <forward name="success" path="/index.jsp"></forward>
        </action>
    </action-mappings>
</struts-config>

现在我们只要看到这一句就足够了,动态Form我们会在下面讲解

      <form-bean name="testForm" type="org.form.struts.form.NormalForm"  ></form-bean>

相信朋友们都清楚这个用来做什么的吧,不知道就看看我先前的文章。

下面为NormalForm.java的内容

package org.form.struts.form;

import org.apache.struts.action.ActionForm;

public class NormalForm extends ActionForm {
    private static final long serialVersionUID = -4017195510815090304L;

    private String userName;
    private String passWorld;
    private byte sex;
    private String email;
    private String phoneNum;
    private int age;
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWorld() {
        return passWorld;
    }
    public void setPassWorld(String passWorld) {
        this.passWorld = passWorld;
    }
    public byte getSex() {
        return sex;
    }
    public void setSex(byte sex) {
        this.sex = sex;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhoneNum() {
        return phoneNum;
    }
    public void setPhoneNum(String phoneNum) {
        this.phoneNum = phoneNum;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

我们可以看到这个只是个从ActionForm派生来的javabean,下面把jsp页面也帖出来

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>请选择你要测试的form</title>
</head>
<body>
    <html:form action="formTest" styleId="testform" >
        userName:<html:text property="userName"></html:text><br />
        passWorld:<html:password property="passWorld"></html:password><br />
        sex<html:radio property="sex" value="0" title="男">男</html:radio>
        <html:radio property="sex" value="1" title="女">女</html:radio><br />
        email<html:text property="email"></html:text><br />
        phoneNum<html:text property="phoneNum"></html:text><br />
        age<html:text property="age"></html:text><br />
        normalForm submit<html:submit onclick="submit(0);return false;"></html:submit><br />
        dynaForm submit<html:submit ></html:submit>
    </html:form>
</body>
</html>

这次不会讲它的目录结构,在最后我会放出下载地址

好,我们拉着反struts动态from也讲完再来看运行效果:

动态Form是什么意思呢,好就是让我们不用写上面的javabean面直接在xml配置文件中配置,下面为代码,其实上面也已经把代码帖出来了,下面我再帖一次,请注意高亮部分

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
    <form-beans>
        <form-bean name="testForm" type="org.form.struts.form.NormalForm"  ></form-bean>
        <form-bean name="dynaTestForm" type="org.apache.struts.action.DynaActionForm">
            <form-property name="userName" type="java.lang.String"></form-property>
            <form-property name="passWorld" type="java.lang.String"></form-property>
            <form-property name="sex" type="byte" initial="0"></form-property>
            <form-property name="email" type="java.lang.String"></form-property>
            <form-property name="phoneNum" type="java.lang.String"></form-property>
            <form-property name="age" type="int" initial="12"></form-property>
        </form-bean>

    </form-beans>

    <action-mappings>
        <action path="/formTest"  name="testForm" type="org.form.struts.action.NormalFormAction">
            <forward name="success" path="/normalsuccess.jsp"></forward>
        </action>
        <action path="/dynaformTest"  name ="dynaTestForm" type="org.form.struts.action.dynaFormAction">
            <forward name="success" path="/dynasuccess.jsp"></forward>
        </action>
        <action path="/gotoaction" type="org.form.struts.action.GotoAction">
            <forward name="success" path="/index.jsp"></forward>
        </action>
    </action-mappings>
</struts-config>

我们可以看到form中的所有的内容都在xml文件中写出来了,

            <form-property name="sex" type="byte" initial="0"></form-property>
            <form-property name="email" type="java.lang.String"></form-property>
看看上面的两行有什么不一样,它们都是用<form-property>来定义的都有name (相当于javabean中的一个property)

type 不用说了吧就是它的类型,不同的是在第一行中多了一个initial="0" 为什么呢,请记住在基本数据成员是要初始化的

就像局部变量一样。

其实这个东东没什么难度吧,下面讲一个我们初学者都出现的问题,

我们可以先找找这个关键字Cannot retrieve mapping for action 了解一下

下面我们进入正题吧:

web.xml的内容

<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.xm</param-value>
    </init-param>
    <init-param>
        <param-name>config/formtest</param-name>
        <param-value>/WEB-INF/struts-config-formtest.xml</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>

我们可以看到这里有两个模块,问题就在这里了,(如果不清楚struts多个配置文件的使用可以看我另一个文章)

在配置文件中你们可以看到我们多了模块,在直接访问jsp文件时,struts只会在默认的模块中找Action所以我们只能

通过一个Action来做连接(好不爽啊)。

下面帖运行效果出来:

image

image

下面这个是找不到Action的效果

image

   <!-- 动态Form用这个 -->

<html:form action="formTest" styleId="testform" >
<!--<html:form action="dynaformTest" styleId="testform" >-->

下载地址

Click to view this file

 

posted on 2007-11-18 12:12 风の使者 阅读(381) 评论(0)  编辑  收藏 所属分类: struts

<2025年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

留言簿

文章分类

文章档案

搜索

  •  

最新评论