Struts程序各文件之间的关系(2)

类别:VC语言 点击:0 评论:0 推荐:

Struts程序各文件之间的关系

 

 

下面介绍《如何实现最简单的Struts程序》例子中各文件之间的关系及源代码分析。

 

[相关链接]

JavaWebStudio系列开发工具Visaul Struts版本简介》http://dev.csdn.net/develop/article/28/28871.shtm

如何实现最简单的Struts程序》http://dev.csdn.net/develop/article/28/28946.shtm

Struts下拉框的实现》http://dev.csdn.net/develop/article/28/28956.shtm

《Sruts单选框的实现》http://dev.csdn.net/develop/article/29/29042.shtm

《Struts复选框的实现》http://dev.csdn.net/develop/article/29/29043.shtm

开发环境:Java Web Studio系列开发环境visual strutst版本。

最新JavaWebStudio下载地址:ftp://210.36.64.79/kui

 

 

(上接Struts程序各文件之间的关系(1))

4  Action文件

Hello程序的Action文件实现对输入文件提交的表单的处理,文件名是helloAction.java,文件代码如下:

(省略) 

public final class HelloWordAction extends Action

{

    // 变量定义:

    private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");

    //函数定义:

    public ActionForward execute(ActionMapping mapping,

             ActionForm form,

             HttpServletRequest request,

             HttpServletResponse response)

throws Exception

    {

// Extract attributes and parameters we will need

Locale locale = getLocale(request);

MessageResources messages = getResources(request);

HttpSession session = request.getSession();

HelloWordForm myform = (HelloWordForm) form;

String variable1= myform.getMybeanvariable1();

        try

        {

              if(variable1.trim().equals(""))

              {

                   return new ActionForward(mapping.getInput());

              }

             //其它代码

             return (mapping.findForward("success"));

        }

        catch (Exception e)

        {

            //log.error("出错", e);

            //log.trace("出错");

            throw new RuntimeException(e.getMessage());

        }

    }

}

首先定义处理函数execute(),可以理解为当Hello输入文件表单提交到服务器的ActionServlet,由ActionServlet调用Action的execute()函数实现商业逻辑处理,处理完成后把结果转发到输出文件中。execute()函数定义一个helloForm实例“myform”,并从提交的输入ActionForm对象实例form中读取数据,把mybeanvariable1变量的值赋给新的字符串变量variable1:

helloForm myform = (helloForm) form;

        String variable1= myform.getMybeanvariable1();

接下来是出错处理,try语句用于组合一个引起异常的代码块,它使我们告诉Java要注意有可能出现异常的代码段;catch:一旦掷出一个异常,需要捕获住这个异常,catch语句使程序员定义一个捕获;finally:在try/catch块结尾,程序可能需要确保一个代码块不管是否掷出了异常,总是被执行,例如不管发生什么,我们可能都需要确保关闭特定的文件; Exceptlon:一种用于存放在代码中发现的关于一个"exception"或"error"的信息的类;throws:当某些事需要关注时,我们"掷出"一个异常。这个异常被我们创建的一段处理异常的特殊代码"抓住"。涣句话说,通过掷出一个异常,我们告诉代码:出错啦,需要调用一些特殊的逻辑去处理问题。下面完它的完整结束:

try

        {

             //正常代码

         }

        catch (Exception e)

        {

            //出错处理代码

            throw new RuntimeException(e.getMessage());

        }

        finally

{

//最后都必需进行的处理代码

}

 

在try块中我们进行的变量variable1是否为空的判断,如果为空就转发到输入页,否则转发到定义为success的输出页:

if(variable1.trim().equals(""))

              {

                   return new ActionForward(mapping.getInput());

              }

             //其它代码

             return (mapping.findForward("success"));

mapping.getInput()函数用于获取输入页的URL值,这个值与配置文件struts-config.xml中<action>项的input属性值相对应。

 

5         Struts程序应用配置文件struts-config.xml文件:

  为了便于说明,在这里我们把web.xml文件称为应用程序的“项目配置文件”,把struts-config.xml、struts-config-registration.xml等其它配置文件称为应用程序的“Struts程序应用配置文件”。

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC

          "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"

          "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">

<struts-config>

  <form-beans>

   <form-bean  name="HelloWordForm"  

type="emptyprj.HelloWordForm"   />

上面定义了一个Bean,名为"HelloWordForm",对应的类是HelloWordForm。它除了用于保存数据之外,还用于在服务器ActionServlet调用HelloWordAction前先实现bean数据的验证。

</form-beans>

  <action-mappings>

  <action  path="/HelloWordAction"  

type="emptyprj.HelloWordAction"
           name="HelloWordForm"                 

           scope="session"

           input="/HelloWord.jsp">

       <forward name="success"   path="/HelloWordOut.jsp"   />

</action>

上面定义了一个action 配置,其中path等于是转发的路径名,用于JSP文件中的表单中的Action属性值;type等于表单处理的类,意思是用户提交表单时,服务器ActionServlet调用HelloWordAction实现表单的处理;name等于Bean名,与JSP文件中的表单中的name属性值对应;session等于提交数据存储范围;input输入页;<forward>定义转发页。

</action-mappings>

</struts-config>

 

本文地址:http://com.8s8s.com/it/it829.htm