站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Netbeans 专题使用 NetBeans IDE 5.0 开发 Struts Web 框架的快速入门指南

使用 NetBeans IDE 5.0 开发 Struts Web 框架的快速入门指南

摘要: 使用 NetBeans IDE 5.0 开发 Struts Web 框架的快速入门指南 反馈 本文档介绍使用 NetBeans IDE 5.0 开发 Struts Web 框架应用程序的基本知识。利用...
使用 NetBeans IDE 5.0 开发 Struts Web 框架的快速入门指南

本文档介绍使用 NetBeans IDE 5.0 开发 Struts Web 框架应用程序的基本知识。利用 Struts 框架,您可以基于标准技术(如 JSP 页面、资源包以及 XML)创建可维护、可扩展和灵活的 Web 应用程序。

Struts 使用 Model, View, Controller (MVC) 框架,但只提供 Struts 库中包含的控制器 servlet,在指示要使用 Struts 时,该 Struts 库由 IDE 提供并在 web.xml 部署描述符中自动注册。Struts servlet 使用 struts-config.xml 文件来映射对 Struts "action" 类发出的请求。action 类接收 Struts "actionform bean" 类作为输入内容,该类在 action 类和视图(通常是 JavaServer Pages (JSP) 页面)之间起传输对象的作用。由于许多 Web 应用程序使用 JSP 页面进行查看,因此 Struts 提供自定义标记库来简化与 HTML 窗体的交互。

本文档旨在让您快速入门。本教程包含以下主题:

本教程结束时,您将获得一个非常简单的半自动登录页面。您将会了解 Struts 提供的几个基本功能,还将学会如何通过 IDE 实现这些功能。特别是,您将在 JSP 页面中使用 Struts 标记,使用Struts actionform bean 类验证字段,并且使用 Struts action 类在页面间导航。还可以看到如何添加各种辅助的 Struts 功能,如 "Cancel" 和 "Logout"。

有关 Struts 工作原理的详细信息,请参见 Struts 网站上的 How does it work?。有关使用 IDE 的一般信息,请参见 NetBeans 网站上的支持和文档页面


设置 Struts 应用程序项

开始编写代码之前,必须确保您具备所有必要的软件,并且保证正确设置项目。

安装软件

开始之前,需要在您的计算机上安装以下软件:

  • NetBeans IDE 5.0(下载)。
  • Java Standard Development Kit (JDK!") version 1.4.2(下载)或 5.0(下载

也可以下载并使用 Sun Java System (SJS) Application Server Platform Edition、Jboss 或 WebLogic。但是,与 IDE 绑定在一起的 Tomcat Web Server 可以提供两层 Web 应用程序(如本快速入门指南中描述的)所需的全部支持。仅当您要开发企业应用程序时才需要应用服务器(如 SJS Application Server、Jboss 或 WebLogic)。

创建新 Struts 应用程序

在 IDE 中,“Struts 应用程序”只不过是 Struts 库和配置文件携带的普通 Web 应用程序。可以在 IDE 中用创建其他 Web 应用程序的方法来创建 Struts 应用程序,只多了在应用程序中包含 Struts 库和配置文件这一指示步骤。

  1. 选择 File > New Project。在 Categories 下选择 Web。在 Projects 下,选择 Web Application 并单击 Next。
  2. 在 Name and Location 面板中,执行以下操作:
    • 在 Project Name 下,输入 LoginPage
    • 将 Project Location 更改为计算机上的任意目录。从现在起,我们将此目录称为 $PROJECTHOME
    • 选择源结构将遵守的标准,这纯粹属于个人偏爱:
    • 选择要将应用程序部署到的服务器。仅列出在 IDE 中注册的服务器。(要注册服务器,请转到 Tools > Server Manager。)
    • 注意,Context Path 是 /LoginPage
  3. 单击 Next。
  4. 在 Frameworks 面板中,选择 Struts 1.2.7:

    请勿更改该面板下面部分中的值。它们用于以下方面:

    • Action Servlet Name。 Struts action servlet 的 servlet 条目名称的硬编码规范。web.xml 开发部署符包含 action servlet 的 servlet 条目,用于指定特定于 Struts 的相应参数,如 servlet 类的名称和 struts-config.xml 配置文件的路径。
    • Action URL Pattern。 允许指定应映射到 Struts action 控制器的适当模式。这将会生成相应 web.xml servlet 映射条目,将指定的 URI 模式映射到 action servlet。默认情况下,只映射 *.do 模式。
    • Application Resource。 允许您指定 struts-config.xml 文件中将用于本地化消息的资源包。默认情况下,该资源包是 com.myapp.struts.ApplicationResource
    • Add Struts TLDs。 允许您生成 Struts 标记库的标记库描述符。标记库描述符是一个 XML 文档,该文档包含了有关整个标记库以及每个个别标记的附加信息。通常没有必要生成标记库描述符,因为您可以参考联机 URI,而不是 本地 TLD 文件。
  5. 单击 Finish。

IDE 将在文件系统中创建 $PROJECTHOME/LoginPage 项目文件夹。与 IDE 中的其他 Web 应用程序一样,项目文件夹包含所有源和 IDE 的项目元数据,如 Ant 构建脚本。但是不同之处是,您的 Web 应用程序将所有的 Struts 库都添加在其类路径上。它们不仅放在应用程序的类路径上,而且在本快速入门指南的后面部分构建项目时,它们还包括在项目中并与之一起打包。

LoginPage 项目在 IDE 中打开。可以在 Projects 窗口中查看其逻辑结构,在 Files 窗口中查看其文件结构。例如,现在 Projects 窗口应该如下所示:

在 Configuration Files 节点中,应用程序包括所有特定于 Struts 的配置文件,其中 struts-config.xml 最为重要。本快速入门指南通篇都将用到该配置文件。同样在 Configuration Files 节点中,要处理 Struts 工作流程,就需要在 web.xml 部署描述符中映射 Struts servlet(即 MVC 范例中的控制器):

<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>
    <init-param>
       <param-name>detail</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>

在以上示例中,Struts servlet(org.apache.struts.action.ActionServlet)被指定为用来控制映射 .do 所有请求的 servlet。此外,web.xml 文件指定由 WEB-INF 文件夹中找到的 struts-config.xml 文件配置 Struts servlet。


开发 Struts 应用程序

在 IDE 中开发 Struts 应用程序类似于开发任何其他类型的 Web 应用程序。可以使用如 JSP 页面、servlet、侦听器和过滤器等组件。但是,通过 IDE 可使用由 Struts 提供的设备来扩充 Web 开发工具包。例如,使用 IDE 中的模板创建 Struts action 类和 Struts actionform bean 类。然后,IDE 自动在 struts-config.xml 文件中注册这些类,并允许您通过 Source Editor 弹出菜单的菜单项方便地扩展该文件。

在 JSP 页面中使用 Struts 自定义标记库

许多 Web 应用程序使用 JavaServer Pages (JSP) 在 MVC 范例中查看,所以 Struts 提供自定义标记库来简化与 HTML 窗体的交互。在 IDE 中,这些都可以在 JSP 页面中方便地无缝设置并使用。

  1. 右键单击 LoginPage 项目节点,选择 New > JSP,然后调用新 JSP 页面 loginForm。单击 Finish。
  2. 在 Source Editor 中,将 <H1> 标记的默认内容更改为 Login Form,并对 <TITLE> 标记的内容也作相同更改。
  3. 将前面这两个 taglib 标记从 welcomeStruts.jsp 文件复制到新 loginForm.jsp 文件的顶部:
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
    
  4. loginForm.jsp 中,在 <H1> 标记下面添加以下内容:
    <html:form action="login">
    
       <html:submit value="Login" />
    
    </html:form>

    注意,当您键入 Struts 标记时,IDE 建议用不同的方法完成代码键入,并提供 Struts Javadoc 近一步帮助您:

    在 Source Editor 中完成键入后,在 Source Editor 中右键单击并选择 Reformat Code 来整理代码:

  5. 在 Source Editor 右边的 Component Palette 的 HTML 部分中,将 Table 项拖到 <html:submit value="Login" /> 行的上方。将弹出 Insert Table 对话框。将“行”和“列”设置为 1,以便创建由单行和单列组成的表。单击 OK。

    loginForm.jsp 现在将如下所示:

    <html:form action="login">
        <table border="1">
            <thead>
                <tr>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td></td>
                </tr>
            </tbody>
        </table>
    
        <html:submit value="Login" />
    
    </html:form>
  6. <TH> 标记之间,键入以下内容:
    <bean:message key="login.name" />

    <TD> 标记之间,键入以下内容:

    <html:text property="name" />

    loginForm.jsp 的主体现在将如下所示:

    login.name=Name

在页面中使用 Struts 验证字段

Struts "actionform bean" 类代表视图(在本例中,是 JSP 页面)和 Struts action 类之间共享的数据。actionform bean 类可用于填充视图并向 action 类提供输入内容。actioform bean 类还有一个validate方法,可允许验证从视图映射的输入内容。

  1. 右键单击 LoginPage 项目节点并选择 New > File/Folder。在 Web 类别中选择 Struts ActionForm Bean 并单击 Next。注意,actionform bean 类将称为“NewStrutsActionForm”。在本教程中,保持默认名称。在真实程序中,将赋予 actionform bean 类一个有意义的新名称。在 Package 下拉式列表中选择 com.myapp.struts,并单击 Finish。

    actionform bean 类将在 Source Editor 中打开。默认情况下,IDE 向它提供调用 nameString 以及调用 numberint。字段也获得为其定义的获取方法和设置方法。

  2. 在 Source Editor 中打开 struts-config.xml 并注意其包含的以下内容:
    <form-beans>
        <form-bean name="NewStrutsActionForm" type="com.myapp.struts.NewStrutsActionForm"/>
    </form-beans>

    按住 Ctrl 键并将鼠标移动到 actionform bean 类的完全合格的类名:

    将出现一个超链接。单击该链接可以导航到 actionform bean 类。

  3. 现在可以在 Source Editor 中浏览 actionform bean 类。查看 IDE 创建的 validate 方法:
       public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
            ActionErrors errors = new ActionErrors();
            if (getName() == null || getName().length() < 1) {
                errors.add("name", new ActionMessage("error.name.required"));
                // TODO: add 'error.name.required' key to your resources
            }
            return errors;
        }

    注意,默认情况下验证调用 name 的字段。如果验证失败(JSP 页面中没有输入名称时会发生这种情况),则返回 error.name.required 识别的消息。

  4. 按照 IDE 放入 validate 方法的 TODO 说明,将 error.name.required 作为键添加到 ApplicationResource.properties 文件并添加一个有意义的消息。例如:
    error.name.required=Enter a name!

    要自定义错误消息的格式,在文件的顶端将前面四个键更改为如下:

    errors.header=
    errors.prefix=<span style="color:red">
    errors.suffix=</span>
    errors.footer=
    
  5. loginForm.jsp 中的以下这行添加到 </html:form> 结束标记的上方,可指定要显示错误消息的位置:
    <html:errors />

使用 Struts 在 JSP 页面间导航

执行 Struts "action" 类来响应用户请求并通常通过业务委托与模型交互。action 类的职责是向相应的视图提供导航和前进控制。

  1. 右键单击 LoginPage 项目节点并选择 New > File/Folder。在 Web 类别中选择 Struts Action 并单击 Next。
  2. 在 Name and Location 面板中,注意 action 类将被称为“NewStrutsAction”。在本教程中,保持默认名称。在真实程序中,将赋予 action 类一个有意义的新名称。
  3. 在 Package 下拉式列表中选择 com.myapp.struts
  4. 在 Action Path 中键入 login(因此,Action Path 的内容现在为 /login)。单击 Next。
  5. 在 ActionForm Bean、Parameter 中,注意 IDE 建议您将 action 类与上一步中创建的 actionform bean 类相关联。在 Input Resource 中,浏览到 loginForm.jsp 页面。单击 Finish。
  6. 在 Source Editor 中打开 struts-config.xml 并注意其包含的以下内容:
    <action-mappings>
       <action input="/loginForm.jsp"
                name="NewStrutsActionForm"
                path="/login"
               scope="session"
                type="com.myapp.struts.NewStrutsAction"/>
       <action path="/Welcome"
            forward="/welcomeStruts.jsp"/>
    </action-mappings>

    如果要 action 类对每个请求而不是每个会话作出响应,那么将鼠标放在 scope 属性上并按 Ctrl-Space:

    选择 Request

  7. 按住 Ctrl 键并将鼠标移动到 action 类的完全合格的类名:

    将出现一个超链接。单击该链接可以导航到 action 类。

  8. 浏览 action 类并查看 execute 方法:
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
                HttpServletRequest request, HttpServletResponse response)
                throws Exception {
    
            return mapping.findForward(SUCCESS);
    
    }

    NewStrutsAction 的顶部,注意 SUCCESS 的定义:

    private final static String SUCCESS = "success";

    SUCCESS String 声明指定该 action 类映射到调用 success 的输出视图。

  9. 您需要定义调用以上输出视图时将会显示的页面。所以,在与 loginForm.jsp 相同的位置创建另一 JSP,并称它为 loginSuccessful。在 Source Editor 中,将新 JSP 文件中 <H1> 标记的默认内容更改为 Login Successful!,并对 <TITLE> 标记的内容也作相同更改。
  10. 在 Source Editor 中打开 struts-config.xml,右键单击 /login action 映射的任何区域,然后选择 Struts > Add Forward:

    将会打开 Add Forward 对话框。

    在 Forward Name 中键入 success。在 Resource File 中,浏览到 loginSuccessful.jsp。对话框现在将如下所示:

    单击 Add。

    注意,struts-config.xml 现在将如下所示(新代码为黑体):

    <action-mappings>
    
      <action input="/loginForm.jsp"
               name="NewStrutsActionForm"
               path="/login"
              scope="session"
               type="com.myapp.struts.NewStrutsAction">
           <forward name="success"
                    path="/loginSuccessful.jsp"/>
      </action>
    
      <action path="/Welcome"
           forward="/welcomeStruts.jsp"/>
    
    </action-mappings>

构建并运行 Struts 应用程序

IDE 使用 Ant 构建脚本构建和运行 Web 应用程序。在创建应用程序时,IDE 根据在 New Project 向导和项目的 Project Properties 对话框中输入的选项生成构建脚本。

  1. 右键单击 LoginPage 节点,然后选择 Properties。在 Project Properties 对话框中,单击 Run 节点。在 Relative URL 中,键入 login.do。单击 OK。

    注意: 记住,在本快速入门指南的开始部分,曾将 .do 映射映射到 Struts 控制器 servlet。现在,当您运行应用程序并使用 .do 映射时,Struts 控制器 servlet 知道必须处理该请求。

  2. 从 Run 菜单选择 Run > Run Main Project (F6)。

    IDE 构建 Web 应用程序和部署它,使用的都是在创建项目时指定的服务器。

    浏览器打开并显示 loginForm.jsp 页面:

    只有验证成功,action 类的 execute 方法返回 SUCCESS 输出视图,Struts 才会调用 loginsuccesful.jsp 页面。要通过验证,您需要做的只是将值添加到 loginForm.jsp 页面的 Name 行。然后,将会显示 loginSuccessful.jsp

    当然,本快速入门指南在开始时已指出,这不是一个完整的登录窗体,仅仅是为您显示 Struts 中此类窗体的基本外观。以下部分介绍了如何使用各种标准功能快速而方便地扩展登录窗体。

向 Struts 应用程序添加更多功能

Struts 简化并组织应用程序的方法在此处没有完全列出。这里有使用 Struts 扩展现有登录页面的几个简单示例。

使用 Struts 添加 "Cancel" 功能

  1. loginForm.jsp中,在 <html:submit> 行下面添加以下内容创建 Cancel 按钮:
    <html:cancel />
  2. 将这些行添加到 org.myapp.struts.NewStrutsActionexecute 方法:
    if (isCancelled(request)){
      return mapping.findForward(CANCEL);
    }

    isCancelled 方法中按住 Ctrl-Space,然后阅读 Javadoc 以理解该方法:

    NewStrutsAction 类的顶端、SUCCESS 定义的下方声明 CANCEL 的定义:

    private final static String CANCEL = "cancel";
  3. 您需要定义调用 CANCEL 时将会显示的页面。所以,在与 loginForm.jsp 相同的位置创建另一 JSP,并称它为 loginCancel。在 Source Editor 中,将新 JSP 文件中 <H1> 标记的默认内容更改为 Login Cancelled!,并对 <TITLE> 标记的内容也作相同更改。
  4. 在 Source Editor 中打开 struts-config.xml,右键单击 /login action 映射的任何区域,然后选择 Struts > Add Forward。将会打开 Add Forward 对话框。

    在 Forward Name 中键入 cancel。在 Resource File 中,浏览到 loginCancel.jsp。对话框现在将如下所示:

    单击 Add。

    注意,struts-config.xml 现在将如下所示(新代码为黑体):

    <action-mappings>
    
      <action input="/loginForm.jsp"
               name="NewStrutsActionForm"
               path="/login"
              scope="session"
               type="com.myapp.struts.NewStrutsAction">
           <forward name="success"
    path="/loginSuccessful.jsp"/>
           <forward name="cancel"
                    path="/loginCancel.jsp"/>
      </action>
    
      <action path="/Welcome"
           forward="/welcomeStruts.jsp"/>
    
    </action-mappings>
  5. 再次运行应用程序并注意新 Cancel 按钮:

    单击该按钮并注意浏览器中是否打开了新 loginCancel.jsp 页面。

使用 Struts 添加 "Logout" 功能

  1. loginForm.jsp中,在 <H1> 标记下面添加以下内容创建 Logout 链接:
    <html:link action="/logout">Logout</html:link>
  2. 您需要定义单击 Logout 链接时将会显示的页面。所以,在与 loginForm.jsp 相同的位置创建另一 JSP,并称它为 loginOut。在 Source Editor 中,将新 JSP 文件中 <H1> 标记的默认内容更改为 Have a Nice Day!,并对 <TITLE> 标记的内容也作相同更改。
  3. 在 Source Editor 中打开 struts-config.xml,右键单击任意位置并选择 Struts > Add Forward/Include Action。将会打开 Add Forward/Include Action 对话框。

    在 Action Path 中键入 logout。在 Resource File 中,浏览到 loginOut.jsp。对话框现在将如下所示:

    单击 Add。

    注意,struts-config.xml 现在将如下所示(新代码为黑体):

    <action-mappings>
    
      <action input="/loginForm.jsp"
               name="NewStrutsActionForm"
               path="/login"
              scope="session"
               type="com.myapp.struts.NewStrutsAction">
           <forward name="success"
    path="/loginSuccessful.jsp"/>
           <forward name="cancel"
                    path="/loginCancel.jsp"/>
      </action>
    
      <action forward="/loginOut.jsp"
           path="/logout"/>
    
      <action path="/Welcome"
           forward="/welcomeStruts.jsp"/>
    
    </action-mappings>
  4. 再次运行应用程序并注意新 Logout 链接:

    单击该链接并注意浏览器中是否打开了新 loginOut.jsp 页面。

使用 Struts 添加 "Reset" 功能

  1. loginForm.jsp 中,在 Submit 和 Cancel 按钮之间添加以下内容创建 Reset 按钮:
    <html:reset />
  2. 再次运行应用程序并注意新 Reset 按钮:

    在 Name 行中键入一些内容,单击 Reset,并注意 Struts 是否清空表格。

向 IDE 添加喜好的 Struts 功能

使用 Struts 时,并不限制您使用 IDE 提供的功能。通过添加 IDE 不支持的功能,您可以增强 IDE。下面是一些示例:

可以用各种其他方法增强 IDE 对 Struts 的支持。有关详细信息,请参见 NetBeans 模块(插件)及富客户端应用程序开发教程

下一步

有关使用 NetBeans IDE 5.0 的更多信息,请参见以下参考资料:

要发送评论和建议、获得支持和随时获得关于 NetBeans IDE J2EE 开发特性的最新发展情况,请加入 nbj2ee@netbeans.org 邮件列表。有关 NetBeans IDE 中即将到来的 J2EE 开发特性的更多信息,请参见 j2ee.netbeans.org .




↑返回目录
前一篇: NetBeans IDE 4.1/5.0 Profiler 教程
后一篇: 如何进行切换