Struts2入门示例教程
【试了无数遍,看了无数个帖子,总算找到了一个能运行的】
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,修改配置参数,修改后的具体配置如下。
![](https://code.csdn.net/assets/CODE_ico.png)
- <?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的使用方法介绍完毕。
Struts2入门示例教程相关推荐
- Spring MVC入门示例教程--静态页面跳转
以下示例显示如何使用Spring MVC Framework编写一个简单的基于Web的应用程序,它可以使用<mvc:resources>标记访问静态页面和动态页面.首先使用Eclipse ...
- Spring MVC入门示例教程--表单处理
以下示例演示如何编写一个简单的基于Web的应用程序,它使用Spring Web MVC框架使用HTML表单. 首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework ...
- linux命令实例教程,Linux xxd命令入门示例教程
你是否需要使用二进制或十六进制格式显示文件内容? 寻找可以执行此操作的命令行实用程序? 那,你很幸运,因为存在一个名为xxd的命令可以为你做到这一点. 在本教程中,我们将使用一些易于理解的示例来讨论x ...
- 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 ...
- Struts2 Hibernate集成示例教程
Struts2 Hibernate集成示例教程 Struts2和Hibernate都是各自领域中广泛使用的框架.今天我们将学习如何将Struts2 Web应用程序框架与Hibernate ORM框架集 ...
- struts2登录注册示例_Struts 2控制标签示例教程
struts2登录注册示例 We learned about Struts 2 Data tags in the last post, today we will look into the cont ...
- kettle 笛卡尔_Kettle-Spoon入门示例
Spoon 是Kettle的设计调试工具 1. 微软ETL与Java 开源Kettle做下对比 微软Integration Services 项目 测试(仅2008版做比较,更高版 ...
- Provisioning Services 7.8 入门系列教程之十四 UEFI支持和BOOTPTAB 编辑器
续Provisioning Services 7.8 入门系列教程之十三 使用 Boot Device Management(BDM) UEFI,全称Unified Extensible Firmw ...
- MVC5+EF6 入门完整教程七
原文:MVC5+EF6 入门完整教程七 本篇我们针对表格显示添加一些新功能. 前面我们已经讲解过表格显示数据了,现在我们添加三个常用功能: 对显示结果进行排序.过滤.分页. 文章提纲 理论基础/前置准 ...
最新文章
- C#编码标准--命名约定和风格
- 目标检测 - Tensorflow Object Detection API
- [译]Chipmunk 教程2 - 基本概念
- 华为云FusionInsight+永洪BI共建政企用数之道,普惠千行百业
- Intel Realsense 如何获取输入图像的分辨率参数?傻办法 asanyarray() shape() get_data()
- python列表元素替换的数据结构_Python基础学习数据结构(第2讲:列表;第2讲:列表创建、添加元素、插入元素、替换元素、删除元素、其他常用方法和列表派生),第二,主讲,追加,推导,式...
- JavaScript-内存空间
- socketmq 设置队列大小_LeetCode 622:设计循环队列 Design Circular Queue
- yolov3前向传播(二)-- yolov3相关模块的解析与实现(二)
- 实用工具篇--华为eNSP下载及安装
- 关于王小云破解MD5
- 关于海外置业,我泼点冷水
- 用c语言编写匀速直线运动,匀速直线运动知识点总结
- dnf剑魂buff等级上限_DNF95全新版本,剑魂之玩法攻略
- 单模、多模有什么区别
- 路由器网口1一直闪烁正常吗_网口1一直闪烁上不了网
- 你知道有哪些类型的接口吗?
- jQuery+html5音乐网站mp3播放器代码
- Linux:丢包检查工具,dropwatch
- 从二本到ICLR杰出论文奖,我用了20年
热门文章
- 加域时提示找不到网络路径
- 【Google Colab】使用手册、教程;使用 Google Colab 免费使用 python 服务器
- 银行 IT运维故障管理 可视化案例
- DB-Engines 9月数据库排名:ClickHouse一路猛冲,Redis坐稳第七
- php程序员一句话介绍自己,php程序员面试自我介绍怎么说
- 中国拥有全球最快超级计算机 速度超美国1倍
- 保护企业文档更安全的几个方法...
- 《学姐教我写代码(二)》一行代码一个算法(上)
- 2D随机地图算法整理
- 通过 COM 读取 Office PPT 文件提示 COMException 错误码 0x80004005 可能原因