Struts Hello World Example
In this tutorial we show you how to develop a hello world web application using classic Struts 1.3 framework.
Tools and technologies used :
- Struts 1.3.10
- Maven 2.x
- Eclipse 3.6
Final project structure
Let’s see the final folder structure first.

1. Maven Template
Generate a quick start Java project structure with Maven command “mvn archetype:generate“, select template 18 for a simple Java web project template.
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 file configuration
Add the Struts dependencies in pom.xml. In Struts 1.x, you need the struts-core.jar for core module and struts-taglib.jar for tag library.
<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
Convert this project to Eclipse web project with Maven command “mvn eclipse:eclipse -Dwtpversion=1.5“. All the Struts dependent libraries will automatically download into your Maven local repository, link it in your project classpath, and convert it to Eclipse’s web project style.
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
Just import it into Eclipse IDE.
4. Action Form
Create a Struts Action Form to hold the “hello world” data later.
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. Action (Controller)
Create a Struts Action (Action Controller) file to control how Struts will forward the request, just override the execute() method with your own logic here.
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 view page
Create a JSP page and access the Action Form object via Struts tag library and print it’s message property.
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
7. struts-config.xml
Create a struts-config.xml file for the Struts configuration details, and put it into the WEB-INF folder.
<?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>
Define a form bean named “helloWorldForm” and action controller mapping “HelloWorldAction“, match the /helloWorld web path to HelloWorldAction. It’s means all the request from /helloWorldweb path will redirect toHelloWorldAction. The “name” attribute is use to define which action form will pass to this HelloWorldAction`.
8. The Web Application Deployment Descriptor
In web.xml file, configure the Struts ActionServlet instance and map it with url-pattern “*.do”, so that the container is aware of all the “*.do” pattern will redirect to 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 Module dependency (Optional)
If you want to do the debugging work in Eclipse IDE, you have to make sure the Java EE module dependencies is checked so that the Eclipse will deploy all the dependencies into correct folder. See details here.
10. Run it
In Eclipse IDE, create a new server plugin and start it. You can access this example in the following URL.
    http://localhost:8080/StrutsExample/helloWorld.do

HttpServletRequest class not found?
If you hit above error, make sure you include the javaee.jar (exists in your JDK/lib folder). Due to license issue, this javaee.jar is not able to use Maven to download it, you have to include it manually.
Struts Hello World Example的更多相关文章
- 菜鸟学Struts2——Struts工作原理
		在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ... 
- Struts的拦截器
		Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ... 
- Struts框架的核心业务
		Struts的核心业务 Struts核心业务有很多,这里主要介绍了比较简单一些的: 请求数据的处理,和数据自动封装,类型自动转换 1.Struts中数据处理 1.1.方式1:直接过去servletap ... 
- Struts的文件上传下载
		Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ... 
- 配置hibernate,Struts。文件
		hibernate文件配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernat ... 
- hibernate与Struts框架结合编写简单针对修改练习
		失败页面fail.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ... 
- 3. 解析 struts.xml 文件
		1. struts.xml 文件基本配置: 主要放在资源路径下,配置 sturts2相关的 Action , 拦截器等配置 <struts> <!-- 设置常量 --> < ... 
- Struts+Spring+Hibernate项目的启动线程
		在Java Web项目中,经常要在项目开始运行时启动一个线程,每隔一定的时间就运行一定的代码,比如扫描数据库的变化等等.要实现这个功能,可以现在web.xml文件中定义一个Listener,然后在这个 ... 
- Struts 原理
		今天开始接触公司的框架,叫YNA,三个字母应该是雅马哈的缩写,这个框架听公司前辈说功能很强大,但实际上我看不懂.哈哈...... 其中整合了SSH框架,接下来我说下Struts的一些原理 其实这张图就 ... 
- axis2+struts拦截地址冲突问题
		axis2和struts在整合过程中,struts会把axis的地址也拦截了,默认当成一个action处理, 会因为找不到action而报错: <!-- struts配置 --> < ... 
随机推荐
- BZOJ 3083 - 遥远的国度
			原题地址:http://www.lydsy.com/JudgeOnline/problem.php?id=3083 说话间又一个多月过去了..该来除除草了,每天都是训练.没效率,训练.没效率..省选考 ... 
- Python GUI库
			PyQT不错的,只是要小心,这个东西是GPL的,如果你要写商业程序需要购买商业版授权.另外PyGTK.wxPython都是不错的GUI库.Python自带了一个基于TkInter的GUI库,如果你不想 ... 
- MVC+Ef项目(2) 如何更改项目的生成顺序;数据库访问层Repository仓储层的实现
			我们现在先来看看数据库的生成顺序 居然是 Idal层排在第一,而 web层在第二,model层反而在第三 了 我们需要把 coomon 公用层放在第一,Model层放在第二,接下来是 Idal ... 
- PHP学习笔记01——基础语法
			<!DOCTYPE html> <html> <?php // 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建 $a ... 
- 四:分布式事务一致性协议paxos通俗理解
			转载地址:http://www.lxway.com/4618606.htm 维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La" ... 
- 深入理解JavaScript闭包(closure)
			最近在网上查阅了不少javascript闭包(closure)相关的资料,写的大多是非常的学术和专业.对于初学者来说别说理解闭包了,就连文字叙述都很难看懂.撰写此文的目的就是用最通俗的文字揭开Java ... 
- smtp邮件营销吧
			SPF 设置说明: 首先你必须有自己的域名.没有的话是不可能设置 SPF 的. SPF 是域名的一条 TXT 记录. 如果你的邮箱服务器是企业邮箱服务商的,可以在自己的 SPF 中直接包含服务商 SP ... 
- SORT UNIQUE|AGGREGATE|GROUP BY|ORDER BY|JOIN
			相信做oracle开发和管理的朋友对sort肯定不会陌生,大家通常都遇到这样那样的排序性能问题,所以我写这一系列关于sort的文章告诉大家在oracle里面sort是怎么一回事以及如果调整sort获得 ... 
- java读取目录下所有csv文件数据,存入三维数组并返回
			package dwzx.com.get; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; ... 
- static_cast .xml
			pre{ line-height:1; color:#1e1e1e; background-color:#d2d2d2; font-size:16px;}.sysFunc{color:#627cf6; ... 
