虽然Struts 2.x的Action在技术上不需要实现任何接口或继承任何类型,但是,大多情况下我们都会出于方便的原因,使Action类继承com.opensymphony.xwork2.ActionSupport类,并重载(Override)此类里的String execute()方法以实现相关功能。

本文是一个HelloWorld级别的action示范程序。

1. 修改web.xml

    <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>

加入上述代码的作用是添加过滤器,拦截所有请求,将由struts来处理;具体由下面的struts.xml配置决定。

2. 创建struts.xml

<?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> <constant name="struts.action.extension" value="action"></constant>
</struts>

注意:

  • 此文件存放于WEB-INF/classes目录下面。
  • 最后一行为我本机环境加入的,含义是只拦截后缀为action的请求。

3. 在struts.xml配置文件中注册Action和result

    <package name="myStruts" extends="struts-default">
<action name="hello" class="com.clzhang.ssh.demo.action.HelloAction">
<result>/ssh/demo1/hello.jsp</result>
</action>
</package>

action的name决定调用时的名称;class为实现类名;result的值为action执行完成后转向何页面。如果没有为result指定name名称,默认值为success

4. 创建action处理类

package com.clzhang.ssh.demo.action;

import java.util.Date;
import java.text.SimpleDateFormat; import com.opensymphony.xwork2.ActionSupport; public class HelloAction extends ActionSupport {
private String message; public String getMessage() {
return message;
} @Override
public String execute() {
message = "Hello there, now is: "
+ new SimpleDateFormat("yyyy-MM-dd hh:mm").format(new Date()); return SUCCESS;
}
}

关于ActionSupport类的更多内容,请参考:http://struts.apache.org/release/2.0.x/struts2-core/apidocs/index.html?overview-summary.html

5. 创建显示JSP文件

<%@page contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Hello there!</title>
</head>
<body>
<h2><s:property value="message"/></h2>
</body>
</html>

JSP文件中用到了struts标签,以后的章节中会详细描述。

6. 打开IE,测试

输入地址:http://127.0.0.1:8080/st/hello.action,回车结果为:

Hello there, now is: 2013-11-18 11:13

图解:

struts2:图解action之HelloWorld示范(从action转到JSP)的更多相关文章

  1. struts2视频学习笔记 07-08(为Action的属性注入值,指定需要Struts 2处理的请求后缀,常用常量)

    课时7 为Action的属性注入值(增加灵活性,适用于经常更改的参数) Struts2为Action中的属性提供了依赖注入功能,在struts2的配置文件中,我们可以很方便地为Action中的属性注入 ...

  2. 【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型

    一.Action缺省配置值 <span style="font-size:18px;"><package name="itcast" name ...

  3. struts2中错误There is no Action mapped for namespace [/] and action name [] associated with context path

    1 There is no Action mapped for namespace [/] and action name [] associated with context path [/Stru ...

  4. Struts2从一个action转到另一个action的两种方法

    在Struts2中,Action处理完用户请求后,将会返回一个字符串对象,这个字符串对象就是一个逻辑视图名.Struts 2通过配置逻辑视图名和物理视图之间的映射关系,一旦系统收到Action返回的某 ...

  5. Struts2中关于"There is no Action mapped for namespace / and action name"的总结

    今天在调试一个基础的Struts2框架小程序.总是提示"There is no Action mapped for namespace / and action name"的错误. ...

  6. Struts2 从一个Action跳至另一个Action

    Struts2  从一个Action跳至另一个Action 一.注解的 @Result(name=SUCCESS,type="chain", params={"actio ...

  7. struts2的action的知识点和利用action向页面注入值的操作

    1.      Action的顺序,会先搜索指定名字下的包的action,如果找不到会去搜索默认路径下的包下的action. 2.      如果没有给action设置值,那么action会有一些默认 ...

  8. struts2.1.6教程三、在Action获取Scope对象

    引言:在前面的Action操作中,关键就是Action中的exectue方法,但是此方法并没有request.session.application等对象作为参数,自然就不能利用这些对象来操作.下面我 ...

  9. Struts2基于XML配置方式实现对Action方法进行校验

    JavaWeb框架(2)  使用XML对Action方法进行校验方式有两种,一种是对Action的所有方法进行校验,另一种是对Action指定方法进行校验. 对Action的所有方法进行校验: 步骤: ...

随机推荐

  1. MyBatis Spring SqlSessionFactoryBean 配置

    在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建.而在 MyBatis-Spring 中,则使用 SqlSessionFactory ...

  2. IIS 管理器无法验证此内置帐户是否有访问权

    解决办法:1.打开iss管理器2.点击网站——localhost3.点击右上角位置的"基本设置"——"链接为"——"特定用户"——" ...

  3. ansible2.4.x RPM急速安装

    概述: 在centos上安装ansible如果在线联网安装甚是方便,实际上大部分在内网安装隔绝外网,都是离线安装.如何急速安装软件,使我们迫切的愿望 环境: python2.6 ansible2.4. ...

  4. 【原创+亲测可用】JS如何区分微信浏览器、QQ浏览器和QQ内置浏览器

    1.原理: 通过不同移动端的ua弹窗 获取user-agent 参数包含的信息,进行判断浏览器类型 在Android上 QQ内置环境的ua中有关键字 MQQBrowser, 并且后面包含一个[空白符+ ...

  5. NSDictionary的分类

    @implementation NSDictionary (extra) //根据key值的到字典中的object - (id)getObjectByKey:(NSString*)key { NSAr ...

  6. C-pthread_cond_wait 详解

    pthread_cond_wait() 用于阻塞当前线程,等待别的线程使用 pthread_cond_signal() 或 pthread_cond_broadcast 来唤醒它. pthread_c ...

  7. Learning to Rank:Point-wise、Pair-wise 和 List-wise区别

    机器学习的 ranking 技术——learning2rank,包括 pointwise.pairwise.listwise 三大类型. [Ref-1]给出的: <Point wise rank ...

  8. Linux按照CPU、内存、磁盘IO、网络性能监测【转载】

    本文转载地址:https://my.oschina.net/chape/blog/159640 系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监 ...

  9. opencv 摄像头 线程

    #include <stdio.h>#include <stdlib.h>#include <string.h>#include <pthread.h> ...

  10. 【JavaScript】浅析JavaScript对象如何添加属性和方法

    向JavaScript类中添加属性和方法,最直观的做法就是在类中定义属性和方法.JavaScript是一门弱语言,除了直接定义还可以用prototype来添加. 下面介绍从外部向JavaScript添 ...