当前页面: 开发资料首页 → 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 框架应用程序的基本知识。利用 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 网站上的支持和文档页面。
开始编写代码之前,必须确保您具备所有必要的软件,并且保证正确设置项目。
开始之前,需要在您的计算机上安装以下软件:
也可以下载并使用 Sun Java System (SJS) Application Server Platform Edition、Jboss 或 WebLogic。但是,与 IDE 绑定在一起的 Tomcat Web Server 可以提供两层 Web 应用程序(如本快速入门指南中描述的)所需的全部支持。仅当您要开发企业应用程序时才需要应用服务器(如 SJS Application Server、Jboss 或 WebLogic)。
在 IDE 中,“Struts 应用程序”只不过是 Struts 库和配置文件携带的普通 Web 应用程序。可以在 IDE 中用创建其他 Web 应用程序的方法来创建 Struts 应用程序,只多了在应用程序中包含 Struts 库和配置文件这一指示步骤。
请勿更改该面板下面部分中的值。它们用于以下方面:
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。
在 IDE 中开发 Struts 应用程序类似于开发任何其他类型的 Web 应用程序。可以使用如 JSP 页面、servlet、侦听器和过滤器等组件。但是,通过 IDE 可使用由 Struts 提供的设备来扩充 Web 开发工具包。例如,使用 IDE 中的模板创建 Struts action 类和 Struts actionform bean 类。然后,IDE 自动在 struts-config.xml 文件中注册这些类,并允许您通过 Source Editor 弹出菜单的菜单项方便地扩展该文件。
许多 Web 应用程序使用 JavaServer Pages (JSP) 在 MVC 范例中查看,所以 Struts 提供自定义标记库来简化与 HTML 窗体的交互。在 IDE 中,这些都可以在 JSP 页面中方便地无缝设置并使用。
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %> <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<html:form action="login"> <html:submit value="Login" /> </html:form>
注意,当您键入 Struts 标记时,IDE 建议用不同的方法完成代码键入,并提供 Struts Javadoc 近一步帮助您:
在 Source Editor 中完成键入后,在 Source Editor 中右键单击并选择 Reformat Code 来整理代码:
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>
<bean:message key="login.name" />
在 <TD> 标记之间,键入以下内容:
<html:text property="name" />
loginForm.jsp 的主体现在将如下所示:
login.name=Name
Struts "actionform bean" 类代表视图(在本例中,是 JSP 页面)和 Struts action 类之间共享的数据。actionform bean 类可用于填充视图并向 action 类提供输入内容。actioform bean 类还有一个validate方法,可允许验证从视图映射的输入内容。
actionform bean 类将在 Source Editor 中打开。默认情况下,IDE 向它提供调用 name 的 String 以及调用 number 的 int。字段也获得为其定义的获取方法和设置方法。
<form-beans> <form-bean name="NewStrutsActionForm" type="com.myapp.struts.NewStrutsActionForm"/> </form-beans>
按住 Ctrl 键并将鼠标移动到 actionform bean 类的完全合格的类名:
将出现一个超链接。单击该链接可以导航到 actionform bean 类。
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 识别的消息。
error.name.required=Enter a name!
要自定义错误消息的格式,在文件的顶端将前面四个键更改为如下:
errors.header= errors.prefix=<span style="color:red"> errors.suffix=</span> errors.footer=
<html:errors />
执行 Struts "action" 类来响应用户请求并通常通过业务委托与模型交互。action 类的职责是向相应的视图提供导航和前进控制。
<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。
将出现一个超链接。单击该链接可以导航到 action 类。
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 的输出视图。
将会打开 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>
IDE 使用 Ant 构建脚本构建和运行 Web 应用程序。在创建应用程序时,IDE 根据在 New Project 向导和项目的 Project Properties 对话框中输入的选项生成构建脚本。
注意: 记住,在本快速入门指南的开始部分,曾将 .do 映射映射到 Struts 控制器 servlet。现在,当您运行应用程序并使用 .do 映射时,Struts 控制器 servlet 知道必须处理该请求。
IDE 构建 Web 应用程序和部署它,使用的都是在创建项目时指定的服务器。
浏览器打开并显示 loginForm.jsp 页面:
只有验证成功,action 类的 execute 方法返回 SUCCESS 输出视图,Struts 才会调用 loginsuccesful.jsp 页面。要通过验证,您需要做的只是将值添加到 loginForm.jsp 页面的 Name 行。然后,将会显示 loginSuccessful.jsp:
当然,本快速入门指南在开始时已指出,这不是一个完整的登录窗体,仅仅是为您显示 Struts 中此类窗体的基本外观。以下部分介绍了如何使用各种标准功能快速而方便地扩展登录窗体。
Struts 简化并组织应用程序的方法在此处没有完全列出。这里有使用 Struts 扩展现有登录页面的几个简单示例。
<html:cancel />
if (isCancelled(request)){ return mapping.findForward(CANCEL); }
在 isCancelled 方法中按住 Ctrl-Space,然后阅读 Javadoc 以理解该方法:
在 NewStrutsAction 类的顶端、SUCCESS 定义的下方声明 CANCEL 的定义:
private final static String CANCEL = "cancel";
在 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>
单击该按钮并注意浏览器中是否打开了新 loginCancel.jsp 页面。
<html:link action="/logout">Logout</html:link>
在 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>
单击该链接并注意浏览器中是否打开了新 loginOut.jsp 页面。
<html:reset />
在 Name 行中键入一些内容,单击 Reset,并注意 Struts 是否清空表格。
使用 Struts 时,并不限制您使用 IDE 提供的功能。通过添加 IDE 不支持的功能,您可以增强 IDE。下面是一些示例:
可以用各种其他方法增强 IDE 对 Struts 的支持。有关详细信息,请参见 NetBeans 模块(插件)及富客户端应用程序开发教程。
有关使用 NetBeans IDE 5.0 的更多信息,请参见以下参考资料:
要发送评论和建议、获得支持和随时获得关于 NetBeans IDE J2EE 开发特性的最新发展情况,请加入 nbj2ee@netbeans.org 邮件列表。有关 NetBeans IDE 中即将到来的 J2EE 开发特性的更多信息,请参见 j2ee.netbeans.org .