Struts快速开发
一、软件清单
以下是一个使用此向导的软件清单
• JDK 1.4+ (Sun or IBM)
http://java.sun.com/j2se/downloads/index.html
• Eclipse 3.1 SDK
http://www.eclipse.org/downloads/index.php
• MyEclipse 4.0
http://www.myeclipseide.com/ContentExpress-display-ceid-10.html
• Tomcat 5.0.x (5.0.28 Preferred, or other compliant Servlet/EJB container)
http://www.axint.net/apache/jakarta/tomcat-5/v5.0.28/bin/jakarta-tomcat-5.0.28.exe
二. 新工程安装与配置
首先我们将需要在MyEclipse里建立一个新的web module project,并将Struts容器添加到里面。建立WEB Project可以使用以下向导:File > New > Other > Project > J2EE > Web Project,如下图一所示:

图1 – Web工程向导对话框
现在输入新工程的所有信息,如下图二所示:

图2 – Web工程设置
这个WEB 工程就建立了,我们需要往里面添加Struts容器。在左边包资源管理视图中,点击我们工程的根目录,并选择MyEclipse >Add Struts Capabilities,将如下图三所示:

图3 –添加Struts容器到Web工程
Struts对话框的默认值能满足本指南的意图,不管怎么样,在下图4中,为了新类的映射基本包而改变Base package的值。,我们这儿采用默认值。

图4 - Struts Capabilities设置
向导完成后,工程的结构将如下图5所示

图5 –设置后的工程布局
现在我们需要建立我们的工程,在以下的部分我们如插图一样建立我们的WEB内容。
三、开始一个Struts工程
在这部分,我们将模仿一个简单的网站登录建立一个Struts应用程序示例,最后我们只有两个JSP页面。我们将分别的调用loginUser.jsp和loginUserSuccess.jsp页面。在尝试登录过程中,如果登录失败我们将回调loginUser.jsp并显示错误信息。这个login应用程序的流程如下图6所示
注意:这个应用程序的屏幕截图是使用Struts Designer。我们将在下一节讲述怎么使用它的细节。

图 6 – 应用程序流程示例
在这个流程图中,我们看到应用程序从userLogin.jsp页面开始。这个登录页面将调用userLogin action执行登录操作。如果有问题或验证错误,userLogin action将调回到userLogin.jsp。无论如何,如果登录成功,应用程序将调用userLoginSuccess.jsp页面。
3.1Struts工程的组成
一个典型的Struts工程将由以下开发的种类组成:
• JSPs
• Actions
• ActionForwards*
• ActionForms**
• Struts部署描述: struts-config.xml
在MyEclipse里建立任何一个组件(除了struts-config.xml文件)可以使用三种不同的方法。
方法一:使用File > New > Other... > J2EE > Struts 1.1 (or 1.0)选择一个Struts向导,如下图7所示:

图7 – 所有可用Struts向导
这个向导可以直接设置所支持的Struts组件的值。这个向导还有更复杂和其它的一些设置。例如在Struts Action向导如下图8所示,你能看到一个Struts Action全面的细节。

图 8 – 新建Struts Action向导
方法二:使用自定义大纲视图,如图9所示:

Figure 9 – 从Outline View建立Struts向导
方法三:使用Struts编辑设计页,如图10所示,这也是一个建立Strust非常方便的方法。这个编辑器是通过打开struts-config.xml文件,单击Design标签调出来的。

图 10 – 使用Struts设计器
切换到设计器后你将看到如图11所示:

图11 – Struts设计器总览
现在我们知道了怎样建立不同的Struts组件了,下一部分我们建立一个login应用程序示例。
3.2 建立应用程序
我们将在示例程序的结构中建立JSP页面,我们模仿一个网站的登录界面,我们将需要两个JSP页面:loginUser.jsp和loginUserSuccess.jsp。如果登录确认失败或发生错误将调回到loginUser.jsp并显示错误。我们首先开始建立loginUserSuccess.jsp页,我们首先建立最后一个页面,因为我们能够使用“New Form,Action And Jsp”向导建立第一个JSP页面,并关联Action和ActionForm。
建立loginUserSuccess.jsp页面如图12所示:

图 12 – 使用设计器建立JSP
在画布上点击后我们将出现New JSP Dialog的界面,如图13:
注意:请确认选择了“Standard JSP using Struts 1.1”

Figure 13 – JSP向导设置
单击Finish后出现如图14所示,将显示建立的新的页面。

Figure 14 – Struts设计器显示JSP页面
userLoginSuccess.jsp页面建立成功后,具体代码如下:
<%@ page language= "java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-template" prefix="template" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-nested" prefix="nested" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html locale="true">
<head>
<title>My Struts 'userLoginSuccess.jsp' ending page</title>
</head>
<body>
Hello
<bean:write name="userName" scope="request" />, you successfully logged in!
</body>
</html:html>
现在我们需要建立userLogin.jsp,Actionform和Action。这需要一些工作,但MyEclipse使用New Form and New Form,Action and JSP向导可以一次性的完成这此工作。
当建立userLogin.jsp页面时我们需要构造一些字段。
我们右键单击画布选择“New form,Action And JSP”向导,如图15:

Figure 15 - New Form, Action, JSP向导
在建立的三步中,我们将首先出现New Form向导。输入Use Case,如图16所示:

Figure 16 – 新建Form向导
现在我们需要添加两个表单内容:userName和Password。如图17所示:

Figure 17 – 添加Add 内容到表单
添加完后如图18所示:

Figure 18 – 表单内容
选择Next之前单击JSP标签,告诉向导你用Myeclispe建立JSP页面,如图19:

Figure 19 - Enable JSP Page Generation for Form
最后我们需要单击Methods标签,确定没有选择任何一个方法,如图20所示:

Figure 20 - Disable Method Generation
单击Next后我们将跳到“New Action”向导,如图21所示:

Figure 21 - Struts Action Wizard
单击“Forwards”可以指定ActionForwards,如图22所示:

Figure 22 - Setting up the Action Forwards
为Action添加Forwards操作完成后,单击finish将会把所有的资源及信息更新到struts-config.xml文件中。更新完成后如图23所示:

Figure 23 - Overview of Struts Designer and our Application
现在我们需要添加逻辑到Action,完成示例程序的登录,如图24我们双击它能很快的跳转到从设计器跳转到资源上。

Figure 24 - Double-click on a Designer Resource to Open an Editor
当打开UserLoginAction.java文件后,我们第一时间找到execute方法,如下所示:
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
UserLoginForm userLoginForm = (UserLoginForm) form;
throw new UnsupportedOperationException(
"Generated method 'execute(...)' not implemented.");
}
我们可以删除默认执行,替换为我们的登录逻辑,如下所示:
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
UserLoginForm userLoginForm = (UserLoginForm) form;
if(userLoginForm.getUserName().equals("myeclipse") && userLoginForm.getPassword().equals("myeclipse"))
{
request.setAttribute("userName", userLoginForm.getUserName());
return mapping.findForward("success");
}
return mapping.findForward("failure");
}
四、 运行示例
现在应用程序完成了,我们需要把它发布到Tomcat5上,打开部署管理对话框为这个工程设置一个新的部署。如图25所示。你同样可以单击包资源管理器视图选择MyEclipse > Add and Remove Project Deployments,单击“Deploy J2EE Project to Server”按钮。

Figure 25 - Create a New Deployment
发布完成后确认没有错误是一种好的办法,如图26所示。

Figure 26 - Confirm Deployment Succeeded
最后运行Tomcat如衅27:

Figure 27 - Start Application Server
当服务启动后,将从console View中输出的信息中我们需要检查两件事,如图28:
1) Tomcat正确的布置了我们的WEB应用程序
2) Tomcat正常的启动

Figure 28 - Confirm Application and Server started correctly
Tomcat5运行后,我们能通过BrowserView测试。打开视图对话框通过选择Window > Show View >Other...选择MyEclispe Web Browser View,如图29:

Figure 29 - Opening the Web Browser View
在浏览器地址输入http://localhost:8080/StrutsLoginDemo/userLogin.jsp,使示例程序激活,如图30所示:

Figure 30 - Login to Demo Application
在这儿输入值,如图31所示:

Figure 31 - Note About Validation
单击submit后,如果登录成功将如下图31所示:

Figure 32 - Successful Login