【试了无数遍,看了无数个帖子,总算找到了一个能运行的】

source: http://blog.csdn.net/wwwgeyang777/article/details/19078545/

回顾Struts2的使用过程,网上搜的教程多多少少都会有点问题,重新记录下创建过程,方便查阅。

1、下载Struts2的jar包

下载地址:http://archive.apache.org/dist/struts/binaries/

我用的是struts-2.3.14-all.zip这个版本

2、创建一个web project项目

下面给出所有文件均创建完成后的工程师图。

3、导入Struts2所需jar包

因为只是示例程序,只需要导入Struts 2支持最小的包就可以了,网上很多教程中添加的最小包都有出入,教大家一个保险的方法。

解压刚才下载的压缩包struts-2.3.14-all.zip,在apps文件夹下有个struts2-blank.war包,打开它,到WEB-INF/lib目录下,如下图所示,即为所需的最小包。包含的包应该和具体的Struts版本有关。

4、配置web.xml

下面进入到具体的配置编码阶段。

打开web.xml,修改配置参数,修改后的具体配置如下。

[html] view plaincopy print?
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5"
  3. xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  6. http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  7. <display-name></display-name>
  8. <!-- Struts2配置 -->
  9. <filter>
  10. <filter-name>struts2</filter-name>
  11. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>struts2</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>
  17. </web-app>

这里需要注意的是

这里面填入的类,

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter instead or StrutsPrepareFilterand StrutsExecuteFilter if needing using the ActionContextCleanUp filter in addition to this one..即,从Struts 2.1.3起已被标注为过时的,改用StrutsPrepareAndExecuteFilter。
我刚用这个版本的时候还是填的org.apache.struts2.dispatcher.FilterDispatcher
结果报错

[plain] view plaincopy print?
  1. ***********************************************************************
  2. *                               WARNING!!!                            *
  3. *                                                                     *
  4. * >>> FilterDispatcher <<< is deprecated! Please use the new filters! *
  5. *                                                                     *
  6. *           This can be a source of unpredictable problems!           *
  7. *                                                                     *
  8. *              Please refer to the docs for more details!             *
  9. *            http://struts.apache.org/2.x/docs/webxml.html            *
  10. *                                                                     *
  11. ***********************************************************************

如果你也遇到如上的错误,要仔细再检查下了。

5、配置struts.xml

下面需要创建struts.xml文件,配置strust2要调用的action。直接新建在src目录下,那样部署的时候会自动发布到WEB-INF/classes目录下,或者直接创建在WEB-INF/classes目录下面。

[html] view plaincopy print?
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <struts>
  6. <package name="struts2" extends="struts-default">
  7. <action name="HelloWorld" class="tutorial.HelloWorld">
  8. <result>/HelloWorld.jsp</result>
  9. </action>
  10. </package>
  11. </struts>

其中,package元素,作用类似于Java包的机制,他是用于分门别类的一个工具,extends属性如他的名字一样,它继承了struts-default这个包的所有信息,一般我们自己创建一个包最好都继承它,因为他为我们提供了绝大部分的功能,你可以在struts2-core的jar包中的struts-default.xml文件中找到这个包。action元素对应与你的表单,例如你的表单的action="welcome",那么该表单提交后就会将参数交予action的name="welcome"的实现类处理。result元素为action的结果,它由动作类返回的控制字段选择。

6、写action类(HelloWorld.java)

这个类主要用于struts2跳转到这个action后。默认执行execute()方法。并根据结果返回字符,然后struts.xml根据返回的字符跳到相应的页面

[java] view plaincopy print?
  1. package tutorial;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. public class HelloWorld extends ActionSupport
  4. {
  5. public final static String MESSAGE = "Struts2 is up and running ...";
  6. private String message;
  7. /**
  8. * @return the message
  9. */
  10. public String getMessage()
  11. {
  12. return message;
  13. }
  14. /**
  15. * @param message the message to set
  16. */
  17. public void setMessage(String message)
  18. {
  19. this.message = message;
  20. }
  21. public String execute() throws Exception
  22. {
  23. setMessage(MESSAGE);
  24. return SUCCESS;
  25. }
  26. }

7、写jsp页面

新建一个jsp页面来呈现信息。

[plain] view plaincopy print?
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <%@ taglib prefix="s" uri="/struts-tags" %>
  4. <html>
  5. <head>
  6. <title>Hello World!</title>
  7. </head>
  8. <body>
  9. <h2><s:property value="message" /></h2>
  10. </body>
  11. </html>

8、部署运行

在Tomcat中运行该项目,然后打开浏览器,在地址栏中输入:http://localhost:8080/Struts2Demo/HelloWorld
IE效果如下。

至此,最简单的Struts2的使用方法介绍完毕。

Struts2入门示例教程相关推荐

  1. Spring MVC入门示例教程--静态页面跳转

    以下示例显示如何使用Spring MVC Framework编写一个简单的基于Web的应用程序,它可以使用<mvc:resources>标记访问静态页面和动态页面.首先使用Eclipse ...

  2. Spring MVC入门示例教程--表单处理

    以下示例演示如何编写一个简单的基于Web的应用程序,它使用Spring Web MVC框架使用HTML表单. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework ...

  3. linux命令实例教程,Linux xxd命令入门示例教程

    你是否需要使用二进制或十六进制格式显示文件内容? 寻找可以执行此操作的命令行实用程序? 那,你很幸运,因为存在一个名为xxd的命令可以为你做到这一点. 在本教程中,我们将使用一些易于理解的示例来讨论x ...

  4. java dwr写法_DWR 3.0 入门示例教程

    DWR(Direct Web Remoting) DWR is a Java library that enables Java on the server and JavaScript in a b ...

  5. Struts2 Hibernate集成示例教程

    Struts2 Hibernate集成示例教程 Struts2和Hibernate都是各自领域中广泛使用的框架.今天我们将学习如何将Struts2 Web应用程序框架与Hibernate ORM框架集 ...

  6. struts2登录注册示例_Struts 2控制标签示例教程

    struts2登录注册示例 We learned about Struts 2 Data tags in the last post, today we will look into the cont ...

  7. kettle 笛卡尔_Kettle-Spoon入门示例

    Spoon 是Kettle的设计调试工具 1.           微软ETL与Java 开源Kettle做下对比 微软Integration Services 项目 测试(仅2008版做比较,更高版 ...

  8. Provisioning Services 7.8 入门系列教程之十四 UEFI支持和BOOTPTAB 编辑器

     续Provisioning Services 7.8 入门系列教程之十三 使用 Boot Device Management(BDM) UEFI,全称Unified Extensible Firmw ...

  9. MVC5+EF6 入门完整教程七

    原文:MVC5+EF6 入门完整教程七 本篇我们针对表格显示添加一些新功能. 前面我们已经讲解过表格显示数据了,现在我们添加三个常用功能: 对显示结果进行排序.过滤.分页. 文章提纲 理论基础/前置准 ...

最新文章

  1. C#编码标准--命名约定和风格
  2. 目标检测 - Tensorflow Object Detection API
  3. [译]Chipmunk 教程2 - 基本概念
  4. 华为云FusionInsight+永洪BI共建政企用数之道,普惠千行百业
  5. Intel Realsense 如何获取输入图像的分辨率参数?傻办法 asanyarray() shape() get_data()
  6. python列表元素替换的数据结构_Python基础学习数据结构(第2讲:列表;第2讲:列表创建、添加元素、插入元素、替换元素、删除元素、其他常用方法和列表派生),第二,主讲,追加,推导,式...
  7. JavaScript-内存空间
  8. socketmq 设置队列大小_LeetCode 622:设计循环队列 Design Circular Queue
  9. yolov3前向传播(二)-- yolov3相关模块的解析与实现(二)
  10. 实用工具篇--华为eNSP下载及安装
  11. 关于王小云破解MD5
  12. 关于海外置业,我泼点冷水
  13. 用c语言编写匀速直线运动,匀速直线运动知识点总结
  14. dnf剑魂buff等级上限_DNF95全新版本,剑魂之玩法攻略
  15. 单模、多模有什么区别
  16. 路由器网口1一直闪烁正常吗_网口1一直闪烁上不了网
  17. 你知道有哪些类型的接口吗?
  18. jQuery+html5音乐网站mp3播放器代码
  19. Linux:丢包检查工具,dropwatch
  20. 从二本到ICLR杰出论文奖,我用了20年

热门文章

  1. 加域时提示找不到网络路径
  2. 【Google Colab】使用手册、教程;使用 Google Colab 免费使用 python 服务器
  3. 银行 IT运维故障管理 可视化案例
  4. DB-Engines 9月数据库排名:ClickHouse一路猛冲,Redis坐稳第七
  5. php程序员一句话介绍自己,php程序员面试自我介绍怎么说
  6. 中国拥有全球最快超级计算机 速度超美国1倍
  7. 保护企业文档更安全的几个方法...
  8. 《学姐教我写代码(二)》一行代码一个算法(上)
  9. 2D随机地图算法整理
  10. 通过 COM 读取 Office PPT 文件提示 COMException 错误码 0x80004005 可能原因