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

1、下载Struts2的jar包

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

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

2、创建一个web project项目

以下给出全部文件均创建完毕后的project师图。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3d3Z2V5YW5nNzc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

3、导入Struts2所需jar包

由于仅仅是演示样例程序,仅仅须要导入Struts 2支持最小的包就能够了,网上非常多教程中加入的最小包都有出入。教大家一个保险的方法。

解压刚才下载的压缩包struts-2.3.14-all.zip,在apps文件夹下有个struts2-blank.war包,打开它,到WEB-INF/lib文件夹下,例如以下图所看到的,即为所需的最小包。包括的包应该和详细的Struts版本号有关。

4、配置web.xml

以下进入到详细的配置编码阶段。

打开web.xml,改动配置參数。改动后的详细配置例如以下。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name> <!-- Struts2配置 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> </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

结果报错

***********************************************************************
* WARNING!!! *
* *
* >>> FilterDispatcher <<< is deprecated! Please use the new filters! *
* *
* This can be a source of unpredictable problems! *
* *
* Please refer to the docs for more details! *
* http://struts.apache.org/2.x/docs/webxml.html *
* *
***********************************************************************

假设你也遇到如上的错误,要细致再检查下了。

5、配置struts.xml

以下须要创建struts.xml文件,配置strust2要调用的action。直接新建在src文件夹下,那样部署的时候会自己主动公布到WEB-INF/classes文件夹下,或者直接创建在WEB-INF/classes文件夹以下。

<?xml version="1.0" encoding="UTF-8" ?

>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<package name="struts2" extends="struts-default">
<action name="HelloWorld" class="tutorial.HelloWorld">
<result>/HelloWorld.jsp</result>
</action>
</package>
</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依据返回的字符跳到对应的页面

package tutorial;
import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport
{
    public final static String MESSAGE = "Struts2 is up and running ...";
    
    private String message;     /**
     * @return the message
     */
    public String getMessage()
    {
        return message;
    }     /**
     * @param message the message to set
     */
    public void setMessage(String message)
    {
        this.message = message;
    }     public String execute() throws Exception
    {
        setMessage(MESSAGE);
        return SUCCESS;
    }
}

7、写jsp页面

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

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ taglib prefix="s" uri="/struts-tags" %> <html>
<head>
<title>Hello World!</title>
</head> <body>
<h2><s:property value="message" /></h2>
</body>
</html>

8、部署执行

在Tomcat中执行该项目,然后打开浏览器,在地址栏中输入:http://localhost:8080/Struts2Demo/HelloWorld

IE效果例如以下。



到目前为止,最简单的Struts2使用完整的介绍。

最新文章

  1. Spark SQL 之 Data Sources
  2. 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(二)
  3. java--HashMap多线程并发问题分析
  4. C# 正则表达式
  5. 【wikioi】1230 元素查找(巨水题+set/hash)
  6. linux下共享内存mmap和DMA(直接访问内存)的使用 【转】
  7. eclipse插件安装 (zhuan)
  8. Qt之自定义搜索框
  9. android编程常见问题-程序在模拟器中不显示
  10. GPIO模拟串口注意是事项
  11. NET Core环境并创建运行ASP.NET网站
  12. UISearchBar的扩展使用
  13. WPF MVVM UI分离之《交互与数据分离》
  14. 驰骋工作流引擎 -Webservice接口说明文档
  15. adb devices 找不到设备
  16. 针对Nginx日志的相关运维操作记录
  17. 13-linux定时任务不起作用到的问题解决办法
  18. 树莓派上搭建NAS
  19. 《Visual Basic开发实战1200例》包括第I卷、第II卷共计1200个例子,本书是第I卷,共计600个例子。
  20. 注册带有Portal功能的DYN365_ENTERPRISE_PLAN1地址

热门文章

  1. 使用gettimeofday测试函数运行的时间
  2. 【转】文件恢复神器extundelete
  3. ie6下常见的bug 调整页面兼容性
  4. cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测下
  5. CairoSVG - Convert SVG to PNG or PDF - Contents
  6. JDBC连接SQL server与ADO.NET连接Sql Server对比
  7. MSSQL - 视图操作
  8. 为经典版eclipse增加web and JavaEE插件
  9. nest expression &amp;amp; Pyparsing
  10. 数据库元数据MetaData