struts2基础——最简单的一个例子
学习版本: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基础——最简单的一个例子的更多相关文章
- 菜鸟学习Hibernate——简单的一个例子
一.Hibernate开发. 上篇博客已经为大家介绍了持久层框架的发展流程,持久层框架的种类. 为了能够使用Hibernate快速上手,我们先讲解一个简单的Hibernate应用实例hibernate ...
- appium基础之简单的小例子
appium环境搭建了,当然也要开始用起来了,记录一下学习的过程 遇到问题 1.The permission to start '.ui.home.view.HomeActivity' activit ...
- Matlab数值计算最简单的一个例子——指数衰减
放射性衰变是指数衰减的典型例子.另外还有化学反应某反应物的减少,RC电路电流的减小,大气压随海拔高度的减小等. 指数衰减的方程: \begin{equation} \frac{dN(t)}{dt}=- ...
- SSH整合最简单的一个例子
1.新建mysql数据库 create database spring; 切换数据库 use spring; 新建表 create table user (id int(3) auto_incre ...
- QT 自定义消息(超级简单的一个例子)
#define TEST_EVENT QEvent::User + 100 class CVxActuatorMain : public QMainWindow { protected: ...
- 写了个 Task.WhenAll(t)的一个例子。
public static void Main() { var t = Task.Run(() => { throw new Exception("aa"); }); Tas ...
- 一个简单的springmvc例子 入门(1)
一直是从事棋牌游戏,平常用的东西 大多数只是使用一些javase的一些 api对spring 这方面 用到的比较少,每次学了都忘,始终记不住.为了 更轻松学习springboot,从新学习了sprin ...
- 一个简单的CORBA例子
因为对CORBA分析的需要,这里写一个简单的CORBA例子.从JDK1.2开始,JDK中集成了ORB的实现,本例子使用了JDK1.7,对于JDK1.2+应该都没有问题.这个例子实现一个简单的加减乘除的 ...
- 对Jena的简单理解和一个例子
本文简单介绍Jena(Jena 2.4),使用Protégé 3.1(不是最新版本)创建一个简单的生物(Creature)本体,然后参照Jena文档中的一个例子对本体进行简单的处理,输出本体中的Cla ...
随机推荐
- C++ Data Member内存布局
如果一个类只定义了类名,没定义任何方法和字段,如class A{};那么class A的每个实例占用1个字节的内存,编译器会会在这个其实例中安插一个char,以保证每个A实例在内存中有唯一的地址,如A ...
- Jmeter报告优化之New XSL stylesheet
Jmeter默认的报告展示的信息比较少,如果出错了,不是很方便定位问题.由Jmeter默认报告优化这篇文章可知,其实由.jtl格式转换为.html格式的报告过程中,style文件起了很关键的作用.下面 ...
- arcgis server10.1注册服务——避免在发布服务中拷贝数据
之前用的arcgis10.1前的版本,后来换成10.1还有点不习惯,变化挺多的.发布服务过程中,进行分析的时候,其中有一项提醒:xxx图层没有注册到服务,很纳闷,为什么会有这种提示,不管,点击发布,会 ...
- 将redis作为windows系统的系统服务
在windows系统,每次打开redis服务都是一个dos窗口一直开着,很不爽,这里我用winsw工具把redis作为系统服务启动 我把自动启动的所有内容都整理好了,请自行下载 下载地址:http:/ ...
- 删除数据报ORA-00600: internal error code, arguments: [ktbesc_plugged]
Oracle在删除数据是以下错误: ORA-00600: internal error code, arguments: [ktbesc_plugged], [], [], [], [], [], [ ...
- 单元测试mock之mockito使用
先来一个简单的例子来感受一下 外部接口类:TestService.java package com.yzl.mock; /** * 测试用服务 * * @author yangzhilong */ p ...
- OpenCV 2.4.8组件结构全解析
转自: http://blog.csdn.net/huang9012/article/details/21811271 之前啃了不少OpenCV的官方文档,发现如果了解了一些OpenCV整体的模块架构 ...
- (原)win8下编译GLUT
1.到opengl官网下载glut源代码 2.修改glutwin32.mak下 # MSVC install directoriesLIBINSTALL = XXXXX\VC\lib //vs ...
- SRM 591 div1 275
topcoder被Appirio收购了 好久没做tc,这个题目挺简单.就是Arena里面看不到图片,只能去tc网站上找题目.http://community.topcoder.com/stat?c= ...
- 架构模式之REST架构
直至今日,分布式系统(Distributed System)已经取得了大规模的应用,特别是Web的发展,已经给软件开发带来了翻天覆地的变化,这一点已经毋庸置疑了. 构建分布式系统常用的技术通常就是使用 ...