学习版本:struts-2.3.15.3

一、导入jar包,可以参考 官方项目 blank。

二、添加配置文件:web.xml struts.xml

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>

web.xml

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>
<package name="default" namespace="/" extends="struts-default">
<action name="helloworld" class="com.nucsoft.struts2.helloworld.HelloWorld" method="firstMethod">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>

struts.xml

三、创建 Action 类

public class HelloWorld {
private static final String SUCCESS = "success"; public String firstMethod() {
System.out.println("com.nucsoft.struts2.helloworld.HelloWorld.firstMethod");
return SUCCESS;
}
}

HelloWorldAction

四、详解

web.xml:

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter为 struts2 的核心处理器,相当于 SpringMVC 的dispatchServlet

struts.xml

根标签:struts

package 标签定义一个功能模块,

name 属性:标识 package,便于引用,extends 属性:需要继承一个父 package,如 struts-default。

namespace 属性:包的命名空间。默认为 /,abstract 属性:定义包为抽象的,不能包含 Action 的定义。

action 标签:

一个 Struts2 请求就是一个 action,

name 属性:定义了一个 Struts2 请求的名字,不包含扩展名,相当于 servlet-path 去掉 / 和 .action

class 属性:定义请求处理类,默认为 ActionSupport,在 struts-default.xml 中配置了

method 属性:每一个 Action 类都可以应答多个 Struts2 请求,每一个请求都由具体的方法处理,方法名由 method 指定。默认为 execute()。

result 标签:

代表 Struts2 处理用户请求后返回的"结果",也就是响应。

name 属性:值和 action 的 method 属性指定的方法的字符串返回值对象,默认为 success。

Action类:
1.不需要实现任何接口或继承任何类。

2.在 Action 类中可以使用 setXxx() 方法接受 Struts2 请求中提交的请求参数(不论是 get 请求还是 post请求)

3.Action 类中的 getXxx() 方法可以用来在页面上显示数据

4.处理请求方法有固定格式:必须为 public,返回值必须是 String 类型,没有参数

struts2的两个默认文件:

struts-default.xml

default.properties

struts2基础——最简单的一个例子的更多相关文章

  1. 菜鸟学习Hibernate——简单的一个例子

    一.Hibernate开发. 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类. 为了能够使用Hibernate快速上手,我们先讲解一个简单的Hibernate应用实例hibernate ...

  2. appium基础之简单的小例子

    appium环境搭建了,当然也要开始用起来了,记录一下学习的过程 遇到问题 1.The permission to start '.ui.home.view.HomeActivity' activit ...

  3. Matlab数值计算最简单的一个例子——指数衰减

    放射性衰变是指数衰减的典型例子.另外还有化学反应某反应物的减少,RC电路电流的减小,大气压随海拔高度的减小等. 指数衰减的方程: \begin{equation} \frac{dN(t)}{dt}=- ...

  4. SSH整合最简单的一个例子

    1.新建mysql数据库   create database spring; 切换数据库 use spring; 新建表 create table user (id int(3) auto_incre ...

  5. QT 自定义消息(超级简单的一个例子)

    #define TEST_EVENT QEvent::User + 100   class CVxActuatorMain : public QMainWindow {   protected:    ...

  6. 写了个 Task.WhenAll(t)的一个例子。

    public static void Main() { var t = Task.Run(() => { throw new Exception("aa"); }); Tas ...

  7. 一个简单的springmvc例子 入门(1)

    一直是从事棋牌游戏,平常用的东西 大多数只是使用一些javase的一些 api对spring 这方面 用到的比较少,每次学了都忘,始终记不住.为了 更轻松学习springboot,从新学习了sprin ...

  8. 一个简单的CORBA例子

    因为对CORBA分析的需要,这里写一个简单的CORBA例子.从JDK1.2开始,JDK中集成了ORB的实现,本例子使用了JDK1.7,对于JDK1.2+应该都没有问题.这个例子实现一个简单的加减乘除的 ...

  9. 对Jena的简单理解和一个例子

    本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...

随机推荐

  1. Spark核心—RDD初探

    本文目的     最近在使用Spark进行数据清理的相关工作,初次使用Spark时,遇到了一些挑(da)战(ken).感觉需要记录点什么,才对得起自己.下面的内容主要是关于Spark核心-RDD的相关 ...

  2. 使用jQuery开发一个响应式超酷整合RSS信息阅读杂志

    在线演示1 本地下载     申请达人,去除赞助商链接 如果大家喜欢阅读博客文章的话,可能都会使用RSS阅读器,今天这里我们将使用jQuery来开发一个响应式的RSS信息阅读应用,使用它你可以将你喜欢 ...

  3. Android--Sensor传感器

    前言 Android提供了对设备传感器的支持,只要Android设备的硬件提供了这些传感器,Android应用可以通过传感器来获取设备的外界条件,包括手机的运行状态.当前摆放的方向等.Android系 ...

  4. asp.net 后台实现删除,划掉效果

    效果: name = "<S>" + fircon + "</br>" + "</S>"; 增加“< ...

  5. Raw-OS源代码分析之消息系统-Queue_Size

    分析的内核版本号截止到2014-04-15.基于1.05正式版.blogs会及时跟进最新版本号的内核开发进度,若源代码凝视出现"???"字样,则是未深究理解部分. Raw-OS官方 ...

  6. kwm备忘

    brew install homebrew/binary/kwm ==> Tapping homebrew/binary Cloning into '/usr/local/Library/Tap ...

  7. 桌面oracle 11g导入多年库的dump备忘

    接到客户6G的dump文件.先导入桌面orcale ,imp提示出错,执行impdp后如下 连接到: Oracle Database 11g Express Edition Release 11.2. ...

  8. 解决CSS移动端1px边框问题

    移动项目开发中,安卓或者IOS等高分辨率屏幕会把1px的border渲染成2px来显示,网上搜了一下,解决方法如下: 一.利用css中的transform的缩放属性解决,推荐这个.如下面代码. < ...

  9. [LeetCode] Range Sum Query 2D - Immutable

    Very similar to Range Sum Query - Immutable, but we now need to compute a 2d accunulated-sum. In fac ...

  10. iOS SDK Release Notes for iOS 9 iOS9 SDK 版本更新说明

    Important: This is a preliminary document for an API or technology in development. Apple is supplyin ...