在本教程中,我们向您展示如何使用经典的Struts 1.3框架开发Hello World Web应用程序。
使用的工具和技术:
- Struts1.3.10
- Maven的2.x
- Eclipse 3.6
最终项目结构
首先让我们看看最终的文件夹结构。
1. Maven模板
使用Maven命令“ mvn archetype:generate ”生成快速启动的Java项目结构,为简单的Java Web项目模板选择模板18。
Define value for groupId: : com.mkyong.common
Define value for artifactId: : StrutsExample
Define value for version: 1.0-SNAPSHOT: :
Define value for package: com.mkyong.common: : com.mkyong.common
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 5 seconds
[INFO] Finished at: Thu Apr 08 11:29:30 SGT 2010
[INFO] Final Memory: 8M/14M
[INFO] ------------------------------------------------------------------------
2. pom.xml文件配置
在pom.xml中添加Struts依赖项。 在Struts 1.x中,您需要将struts-core.jar用于核心模块,将struts-taglib.jar用于标记库。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkyong.common</groupId>
<artifactId>StrutsExample</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>StrutsExample Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts-core</artifactId>
<version>1.3.10</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts-taglib</artifactId>
<version>1.3.10</version>
</dependency>
</dependencies>
<build>
<finalName>StrutsExample</finalName>
</build>
</project>
3. Eclipse IDE
使用Maven命令“ mvn eclipse:eclipse -Dwtpversion = 1.5 ”将该项目转换为Eclipse Web项目。 所有依赖Struts的库都将自动下载到您的Maven本地存储库中,将其链接到您的项目类路径中,并将其转换为Eclipse的Web项目样式。
E:\workspace\struts\StrutsExample>mvn eclipse:eclipse -Dwtpversion=1.5
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'eclipse'.
[INFO] ------------------------------------------------------------------------
[INFO] Building StrutsExample Maven Webapp
只需将其导入Eclipse IDE。
4.行动表格
创建一个Struts Action Form来保存“ hello world”数据。
package com.mkyong.common.form;
import org.apache.struts.action.ActionForm;
public class HelloWorldForm extends ActionForm{
String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
5.动作(控制器)
创建一个Struts Action(动作控制器)文件来控制Struts如何转发请求,只需在此处使用您自己的逻辑覆盖execute()方法即可。
package com.mkyong.common.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.mkyong.common.form.HelloWorldForm;
public class HelloWorldAction extends Action{
public ActionForward execute(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response)
throws Exception {
HelloWorldForm helloWorldForm = (HelloWorldForm) form;
helloWorldForm.setMessage("Hello World! Struts");
return mapping.findForward("success");
}
}
6. JSP视图页面
创建一个JSP页面,并通过Struts标记库访问Action Form对象,并打印它的message属性。
7. struts-config.xml
为Struts配置详细信息创建一个struts-config.xml文件,并将其放入WEB-INF文件夹。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
<struts-config>
<form-beans>
<form-bean name="helloWorldForm"
type="com.mkyong.common.form.HelloWorldForm"/>
</form-beans>
<action-mappings>
<action path="/helloWorld"
type="com.mkyong.common.action.HelloWorldAction"
name="helloWorldForm">
<forward name="success" path="/HelloWorld.jsp"/>
</action>
</action-mappings>
</struts-config>
定义一个名为“ helloWorldForm ”的表单Bean和动作控制器映射“ HelloWorldAction ”,将/ helloWorld Web路径与HelloWorldAction匹配。 这意味着/ helloWorld网络路径中的所有请求都将重定向到HelloWorldAction 。 “名称”属性用于定义将哪种操作形式传递给此HelloWorldAction 。
8. Web应用程序部署描述符
在web.xml文件中,配置Struts ActionServlet实例并使用url-pattern“ * .do”对其进行映射,以便容器知道所有“ * .do ”模式都将重定向到Struts ActionServlet 。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Maven Struts Examples</display-name>
<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>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
9. Java EE模块依赖性(可选)
如果要在Eclipse IDE中进行调试工作,则必须确保已选中Java EE模块依赖项 ,以便Eclipse将所有依赖项部署到正确的文件夹中。 在这里查看详细信息 。
10.运行
在Eclipse IDE中,创建一个新的服务器插件并启动它。 您可以通过以下URL访问此示例。
http:// localhost:8080 / StrutsExample / helloWorld.do
找不到HttpServletRequest类?
如果遇到上述错误,请确保包含javaee.jar
(存在于JDK / lib文件夹中)。 由于许可证问题,此javaee.jar
无法使用Maven下载,您必须手动将其包括在内。
下载
参考
- http://repo1.maven.org/maven2/org/apache/struts/
- http://struts.apache.org/1.3.10/userGuide/configuration.html