Struts 2 Learning

时间:2022-01-26 16:55:41

目录

. J2EE简介
. JAVA EE应用的分层模型
. 搭建Struts2 Demo应用
. struts2流程
. struts2的常规配置
. 实现Action
. 配置Action
. 配置处理结果
. 配置struts2的异常处理
. convention插件与"约定"支持
. 使用struts2的国际化
. 使用struts2的标签库

1. J2EE简介

0x1: JavaBeans

JavaBeans是Java语言中可以重复使用的软件组件,它们是一种特殊的Java类,将很多的对象封装到了一个对象(bean)中。特点是

. 可序列化
. 提供无参构造器
. 提供getter方法和setter方法访问对象的属性
. Bean可以控制它的属性、事件和方法是否暴露给其他程序
. Bean可以接收来自其他对象的事件,也可以产生事件给其他对象
. 有软件可用来配置Bean
. Bean的属性可以被序列化,以供日后重用

javabeans从本质上来讲是一个规范性的概念,要成为JavaBean类,则必须遵循关于命名、构造器、方法的特定规范。有了这些规范,才能有可以使用、复用、替代和连接JavaBeans的工具。反过来说,如果一个java类满足了这些规范,就可以称之为javabeans

package player;

public class PersonBean implements java.io.Serializable {

    /**
* name 属性(注意大小写)
*/
private String name = null; private boolean deceased = false; /** 无参构造器(没有参数) */
public PersonBean() {
} /**
* name 属性的Getter方法
*/
public String getName() {
return name;
} /**
* name 属性的Setter方法
* @param value
*/
public void setName(final String value) {
name = value;
} /**
* deceased 属性的Getter方法
* 布尔型属性的Getter方法的不同形式(这里使用了is而非get)
*/
public boolean isDeceased() {
return deceased;
} /**
* deceased 属性的Setter方法
* @param value
*/
public void setDeceased(final boolean value) {
deceased = value;
}
}

TestPersonBean.java:

import player.PersonBean;

/**
* <code>TestPersonBean</code>类
*/
public class TestPersonBean {
/**
* PersonBean 类测试方法的main函数
* @param ARGS
*/
public static void main(String[] args) {
PersonBean person = new PersonBean(); person.setName("张三");
person.setDeceased(false); // 输出: "张三[活着]"
System.out.print(person.getName());
System.out.println(person.isDeceased() ? " [已故]" : " [活着]");
}
}

testPersonBean.jsp

<% // 在JSP中使用PersonBean类 %>
<jsp:useBean id="person" class="player.PersonBean" scope="page"/>
<jsp:setProperty name="person" property="*"/> <html>
<body>
姓名:<jsp:getProperty name="person" property="name"/><br/>
已故与否?<jsp:getProperty name="person" property="deceased"/><br/>
<br/>
<form name="beanTest" method="POST" action="testPersonBean.jsp">
输入姓名:<input type="text" name="name" size=""><br/>
选择选项:
<select name="deceased">
<option value="false">活着</option>
<option value="true">已故</option>
</select>
<input type="submit" value="测试这个JavaBean">
</form>
</body>
</html>

虽然JavaBean和Java之间已经有了明确的界限,但是在某些方面JavaBean和Java之间仍然存在很容易混淆的地方,比如说重用,Java语言也可以为用户创建可重用的对象,但它没有管理这些对象相互作用的规则或标准,用户可以使用在Java中预先建立好的对象,但这必须具有对象在代码层次上的接口的丰富知识。而对于JavaBean,用户可以在应用程序构造器工具中使用各种JavaBean组件,而不需要编写任何代码。这种同时使用多个组件而不考虑其初始化情况的功能是对当前Java模型的重要扩展,所以也可以说JavaBean是在组件技术上对Java语言的扩展
如果真的要明确的定义,那么JavaBean的定义是:JavaBean是可复用的平*立的软件组件,开发者可以在软件构造器工具中对其直接进行可视化操作

Relevant Link:

http://zh.wikipedia.org/wiki/JavaBeans
http://eduunix.ccut.edu.cn/index2/edu/%C7%E5%BB%AA%B4%F3%D1%A7%BC%C6%CB%E3%BB%FA%BF%CE%B3%CC/JAVA%B1%E0%B3%CC%D3%EF%D1%D4/text/ch09/se01/9_1_2.htm

0x2: POJO(pure old java object)

关于POJO,我们首先明确一句话

A JavaBean is a POJO that is serializable, has a no-argument constructor, and allows access to properties using getter and setter methods that follow a simple naming convention.

POJO(pure old java object)是普通java类,有一些private的参数作为对象的属性,然后针对每一个参数定义get和set方法访问的接口。仅此而已,不能有别的更多的动作了

POJO其实是比javabean更纯净的简单类或接口。POJO严格地遵守简单对象的概念,而一些JavaBean中往往会封装一些简单逻辑。
JavaBean是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:

.这个类必须有一个公共的缺省构造函数
.这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范
.这个类应是可序列化的

简而言之,当一个POJO可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,它就是一个JavaBean

Relevant Link:

http://en.wikipedia.org/wiki/Plain_Old_Java_Object
http://my.oschina.net/pacoyang/blog/151695

0x3: SSH与EJB区别

EJB是一种javabean的组合规范,SSH是3个框架jar包的组合。
EJB本身是JavaEE的规范由容器厂商负责实现,也就是使用EJB,需要使用JavaEE服务器。而用SSH,直接用Web服务器, SSH中要解决的目标和EJB是一致的。EJB是大型的,SSH是轻量级的。

Relevant Link:

http://blog.csdn.net/jojo52013145/article/details/5783677

2. JAVA EE应用的分层模型

0x1: Struts 2简介

Struts 2由传统的Struts 1、webwork两个经典MVC框架发展起来,与传统的Struts 1相比

. Struts 2允许使用普通的、传统的java对象作为action
. action的execute()方法不再与servlet api耦合,因而更易测试
. 支持更多的视图技术
. 基于AOP(Aspect-Oriented Programming)思想的拦截器机制,提供了更好的可扩展性
. 更强大、更易用的输入校验功能
. 整合的ajax支持
...

0x2: MVC简介

MVC思想将一个应用分成三个基本部分,这三个部分以最小的耦合协同工作,从而提高应用的可扩展性及可维护性

. Model(模型)
. View(视图)
. Controller(控制器)

在经典的MVC模式中,事件由控制器处理,控制器根据事件的类型改变模型或视图,每个模型对应一系列的视图列表,这种对应关系通常采用注册来完成,即:把多个视图注册到同一个模型,当模型发生改变时,模型向所有注册过的视图发送通知,接下来,视图从对应的模型中获得信息,然后完成视图显示的更新
概括起来,MVC有如下特点

. 多个视图可以对应同一个模型,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护
. 模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术
) JSP页面
) Velocity模版
) Excel文档
. 应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性
. 控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求。因此,控制层可以说是包含了用户请求权限的概念
. MVC更符合软件工程化管理的思想。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码

MVC思想将应用中各组件按功能进行分类,不同的组件使用不同技术充当,甚至推荐了严格分层,不同组件被严格限制在其所在层内,各层之间以松耦合的方式组织在一起,从而提供了良好的封装

Struts 2 Learning

0x3: Domain Object(领域对象)

此层由系列的POJO(Plain Old Java Object,普通的、传统的Java对象)组成,这些对象是该系统的Domain Object,往往包含了各自所需要实现的业务逻辑方法

0x4: DAO(Data Acess Object 数据访问对象)

此层由系列的DAO组件组成,这些DAO实现了对数据库的创建、查询、更新和删除(CRUD)等原子操作。
在经典Java EE应用中,DAO层也被改称为EAO层,EAO层组件的作用与DAO层组件的作用基本相似。只是EAO层主要完成对实体(Entity)的CRUD操作,因此简称为EAO层

0x5: PO(persistant object 持久对象)

持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作.

0x6: VO(value object 值对象)

通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要。

0x7: DTO(data access object 数据访问对象)

此对象用于访问数据库。通常和PO结合使用,DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作

我们通过DAO将POJO持久化为PO,用PO组装出来VO、DTO

0x8: BO(business object 业务对象)

封装业务逻辑的java对象,通过调用DAO方法,结合PO、VO进行业务操作

Relevant Link:

http://www.oecp.cn/hi/yongtree/blog/122
http://blog.sina.com.cn/s/blog_9af0d32b0101030l.html
http://my.oschina.net/pacoyang/blog/151695
http://www.cnblogs.com/xiaoluojava/archive/2010/05/07/1729992.html

3. 搭建Struts2 Demo应用

0x1: 创建web应用

为了让web应用具有struts 2支持功能,必须将struts 2框架的核心类库(JAR包)增加到web应用中
/HelloWorldStruts2/WebContent/WEB-INF/lib

commons-fileupload-1.3..jar
commons-io-2.2.jar
commons-lang-2.4.jar
commons-lang3-3.2.jar
commons-logging-1.1..jar
commons-logging-api-1.1.jar
freemarker-2.3..jar
javassist-3.11..GA.jar
ognl-3.0..jar
struts2-core-2.3..jar
xwork-core-2.3..jar

0x2: web.xml
通常,所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatcher,只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载Struts2框架,因为Struts2将核心控制器设计成Filter,而不是一个普通Servlet。故为了让Web应用加载FilterDispatcher,只需要在web.xml文件中配置FilterDispatcher即可
/HelloWorldStruts2/WebContent/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0"> <display-name>Struts </display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterorg.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

从本质上讲,struts2并不是一个新的东西,struts2是基于J2EE框架上的一层封装,使开发者更容易地进行J2EE的开发,struts2是一个MVC开发框架,从逻辑上位于spring、hibernate的上层
我们知道,以上配置仅仅修改了web.xml文件仅仅完成了为web应用增加struts2支持,而struts2是基于过滤器实现的,要使用strucs2功能至少还需要一个struts.xml文件

0x3: struts.xml

/HelloWorldStruts2/WebContent/WEB-INF/classes/struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default">
<action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts>

0x4: index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="hello">
<label for="name">Please enter your name</label><br/>
<input type="text" name="name"/>
<input type="submit" value="Say Hello"/>
</form>
</body>
</html>

J2EE struts2采用了充分的面向对向、封装、解耦的设计,将后端的处理逻辑全部放到了javabeans实现,而将前台的展示由JSP实现,JSP和javabeans之间的纽带通过action实现,所有的用于处理后端业务逻辑的javabeans都继承了ActionSupport类
/HelloWorldStruts2/src/com.tutorialspoint.struts2

package com.tutorialspoint.struts2;

public class HelloWorldAction
{
private String name; public String execute() throws Exception
{
return "success";
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
}
}

0x5: HelloWorld.jsp

如果execute方法返回"success", 然后我们把用户引到HelloWorld.jsp
/HelloWorldStruts2/WebContent/HelloWorld.jsp

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

aaarticlea/png;base64,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" alt="" />

Relevant Link:

http://www.yiibai.com/struts2/struts2_examples.html
http://blog.csdn.net/xiazdong/article/details/7214967
http://www.360doc.com/content/11/0519/08/987036_117818681.shtml

4. struts2流程

0x1: struts2应用开发步骤

梳理一下struts2应用的开发步骤

. 在web.xml文件中定义核心filter来拦截用户请求
由于web应用是基于请求/响应架构的应用,所以不管哪个MVC web框架,都需要在web.xml中配置该框架的核心filter或servlet,这样才可以让框架介入web应用中
/*
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterorg.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/ . 如果需要以POST方式提交请求,则定义包含表单数据的JSP页面,如果仅仅只是以GET方式发送请求,则无须经过这一步
. 定义处理用户请求的Action类
这一步是所有MVC框架中必不可少的,因为这个Actino就是MVC中的C,即控制层,该控制器负责调用Model里的方法来处理请求
/*
MVC框架的底层机制是,核心servlet或filter接收到用户请求后,通常会对用户请求进行简单预处理,例如解析、封装参数等,然后通过反射来创建Action实例,并调用Action的指定方法来处理用户请求,这就产生了一个问题: 当servlet或filter拦截用户请求后,它应该如何知道创建哪个Action的实例
1) 利用配置文件
2) 利用约定
*/ . 我们知道,在MVC框架中,控制器实际上由2个部分共同组成
) 即拦截所有用户请求,处理请求的通用代码都由核心控制器完成
) 实际的业务控制(诸如调用model,返回处理结果等),则由Action处理 . 配置Action
对于java领域的大部分MVC框架而言,都经常使用XML文件来配置管理,配置Action就是指定哪个请求对应哪个Action进行处理,从而让核心控制器根据该配置来创建合适的Action实例,并调用该Action的业务控制方法,例如
/*
<action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
指定了如果用户请求URL为login,则使用com.tutorialspoint.struts2.HelloWorldAction来处理,值得注意的是,struts2的convention插件借鉴了Rails框架的优点,开始支持"约定优于配置"的思想,也就是采用约定方式来规定用户请求地址和Action之间的对应关系
*/ . 配置处理结果和物理视图资源之间的对应关系
当Action处理用户请求结束后,通常会返回一个处理结果(简单字符串),我们可以认为该名称是逻辑视图名,这个逻辑视图名需要和指定物理视图进行关联
/*
<action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute">
<result name="success">/welcome.jsp</result>
<result name="input">/login.jsp</result>
<result name="error">/error.jsp</result>
</action>
*/ . 编写视图资源,如果Action需要把一些数据传给视图资源,则可以借助于OGNL表达式

0x2: struts2的流程

aaarticlea/png;base64,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W2+9tamp6e677+bxeHfdddd3vvOd/fv3f+ELX3jnnXeampqeffbZe++995ZbbmGxWLfccsuzzz6rVCrvuOOO9evXP/HEE7t3737mmWf+5V/+5ejRo1/+8pfXrVsnl8u//OUv//GPf/zkJz+5du3a55577qabbnrvvfceffTRO+64g8ViPfzww3v27PnUpz7V0dFx6NChm2666YMPPnj++ec/9alP/fa3v33hhReampo+8YlPHDly5LXXXvuHf/iH7u7u55577pVXXvna1752//33f/jhh5/73Odee+21559//oYbbhgbG1u9erVUKr3nnnt+/OMfX7ly5c477/zZz3526NChG2+88cMPP/zXf/3XM2fOfO9737v11lt7e3u/+c1v3n333c3NzZ/4xCfWrFnzT//0T7t27brzzju/9a1vDQwM3H777atWrRodHX3iiSf27dt34403vvnmmw899NCdd945NjZ29913v/DCC2vXrn3jjTcYDMaNN964Z8+eF1988bOf/exLL7102223rVmz5u/+7u927Njx/vvvf+Yzn9m/f39TU9OnP/3pbdu23XvvvXv37r3nnnueeOKJs2fP3nrrrdu3b3/zzTdvuOGGffv2/eM//uPBgwdvueWWVatW7dix41Of+tQf/vCHt99+e8OGDT/96U9vuOGG4eHhe++996abbjp+/PjNN9/8yCOPrF69+vXXX1+zZs03v/lNs9l83333feELX2CxWOVymWj0JHVGOOzScrIL76wwFK+wEJAUKAIUsF3Cf1fQbeKnbjQasKNgb3TLKiQXuqeNvodqtfpXDToSRZVKJajtdK/FinfoXJ6cJ8HZFaaRq491HUyv0YZnsa+vTyaTSaVSvV7v9Xo1Go3VavV4PG63W6/Xx2Ixq9UqEom8Xq/dbh8ZGfF6vcPDw0KhUKVS2Ww2Pp/P5XKDwSCLxTKZTBaLxWQycTgcg8HgcDicTmdnZ2d3d3dnZ6dYLDYajX6/f2JiQqFQjI2NicVijUYjk8nC4bBOp5PJZGw2m8vl8vl8Pp8/PDzc1dVlNpv7+vokEsnY2BiLxVIoFFwuV6/XCwQCDofj9/u1Wm0ul7NarYlEwmKxMBgMPp/PZDIlEgmDwTCbzW63W6FQ8Pl8vV7vdDq5XC6TyWSxWFqtlsvlgkPxeDyj0cjhcLhcrkQi6e7u5vF4BoNBLBaz2WydTpfNZtlstsvl6u7u1mq1NptNIpFotVqn0ymVSpVKZSAQcDgcbDYbRxcKhVar1Wq1slgsp9MpEAicTmd/f79IJNLpdGw2m1xVBoPB5XLtdjufzzcYDGazmclkikQin8/ncrnUarVer/d4PAMDAxMTEzwe79y5c0KhcGRkZHR0lMViNTc3i0QimUw2MjJit9v7+vpUKlVXVxebzb506dKZM2dcLldnZ6dQKORyuTabLRQKHT9+XKPRMJnMgwcPikQiBoOhVCpxVXEfNRpNIBBgs9nj4+MDAwM+n6+7u1sul1ut1oGBAS6XOzw8fPHiRbFYfPHiRZFI1NXV1dPTI5PJzp07x2AwLl++3NPTMzQ0NDw8LJFItm7dev78+dHR0X379l25cuXs2bN2u312dtZut9dqtVgsZjabIQrT/baNZQkFuEMUAyLskg0fq9VqECuI7YT6uCuWWtaUiY5Rq9XoCYBFmpN3enqaiMsEhXFoook1Go1KpfLXKrxLS0tQXSYnJ+kuDuwfehryFjMzM/QiDlwQusoEB/HVsgx9gF8H02u04Xlis9kWi8Vut0cikXQ6bbfbpVIpItlIJKLT6RQKxejoqMFgCIVCcrnc7/d7PB673a5SqTQajUaj8Xg8TqfT4XBEIhG/359Op10uVzweL5VKPB5PJpNFo1G1Wi2RSMLhcDAYdDqdMpnMbDZrtVqDwWCz2Vwul9/vN5lMDocjGAwGAgEejweMEIlECoVCIBBMTExYLBalUqlSqUQikcFg8Pl8FoslFAqJxWKr1VqpVIxGo0gkUiqV+Xwef9JqtYFAQKPR4H2v12s0GsfHx8PhsNlsDoVCUqnU7XZbrVadThcMBhUKhVwudzgcQA2z2ZxIJFwuVz6f1+v1LpfLarWq1WqNRmOz2YxGo8vl8ng8ZrPZ5XI5nU6Px8Plcv1+v06ns9vtOp3OZrPZ7fZAIBCPx9Vqtc/nczgcmUxGr9fbbLZoNOpyuZLJJH6j0WjEhISJx2azeTye8fHxiYkJXCU2mw2EMpvNIpHIZrONjIwoFAq9Xq9QKKxWq8lkMplM0WhUoVA4HA63222z2RwOByJ3XAqZTBaPxwOBgFar1ev1YrHY7/dnMhmFQmE0Gi0Wi9lstlgswWDQ7Xa73W7c4kqlYrFY+Hy+UqnMZDIejwd3Cj/Q4XB4vV6Px6NWqz0eTywWUyqVoVCIw+EwGIxEIiGRSDwej8fjwS0mfHCRVu5YLpc7OjpSqRQAIp/P1+v1SqXi9XqBWdVqNZPJFIvFWCyWSqUgAVUqlcYy4vT395fL5a6urnw+T33cNOJyuQqFQrFYhJhOr0ajKEqtVg8ODlIU5fP5wEljsdjZs2fxVzwDCoUCMjq94OKvBVM6dhNAnJubK5VKoC82m83v98fj8WKxSBK5IL8ULVVIJgy6lYL6uBTQaDSug+k12nD1H3nkEb1e73a74/F4uVzOZrNerxfc0OVyBQIBnU7X29vrcrkwMnO5HEap2+3G4DEajV6v1+FwMJlMDocDDhsMBjs7O8fGxgQCgcfjsVqtQFuv12symXw+3+TkZCwW02q1Xq83HA6nUqlCoeDxeFKpFHilyWQyGAwYmR6Pp7+/3+12B4NBUE632w0yaDKZtFqtTqezWCx+vx+E0Wq1yuVyuVzOZrONRuPExIRGo+Hz+cCgkZERn89nNpu9Xq/NZtNqtQ6HY3JyEsTN4XCUy2Umk4nTcDgcOp3O6XSKRCK1Wh2NRkUikcViAaWyWq12ux3omUqlgJsej0ckEnG5XKlUarFYR*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FtYWEBtPqRvJyUlsVismJiY+Ph4DoeTmJjIZrPz8/N5PB6Xy01OTk5JScnLy3v48GFubm5mZmZaWlp6enp2dnZubi78zcvLKykpKS8vLy4uzsnJyc/Pr6ioKC8vLysre/jwYVpaWkZGRm1tbXl5uZ+f39q1a728vIBe5bpaTRC87DIfLRaALisqKrKysvbt2/fJJ59899132traKioqCQkJJElyuVwtLa3y8vINGzZs377d0NBwz549QLgkSe7YscPY2HjFihX5+fmqqqonTpwwNDREex6zn0uBwhsH5CF1cnKaP3/+zz//rKKi8vPPPysrK//000/r169XVlb++eefd+zYsXXrVhUVFUVFxS1btmzdunX79u179uxRU1PbvXv3zp07lZWVlZWVt2/fDltu3759+/btampqBw8ePHDgwO7du/ft23fkyJGDBw8ePHjw0KFDsM3Ro0f37t3722+/ff/99/b29ohGJ+Bt+7LLfFRe1tHRcfPmTQaDYW9v7+Dg4O7uvn379tra2qVLl/J4vJ6ensLCQnNzcy6X+/bbb7u5uUml0lu3bnV3d/f19TU3NyspKa1du3b69OnW1tanTp2aNm1aenp6S0sLeE7H7vdSoPAGYmhoaGBgwN7efuHChXPmzFm4cOG8efMWLlw4ffr0GTNmKCgoLFq0aN68ed98883kyZOnTp06b968OXPmzJs3b+7cuZ999tncuXOnT58+ZcqUL774YurUqVOmTPnss8+mTZv25ZdfTp06dcaMGTNmzPjyyy+/+OKLKVOmfPrpp1988cXXX3/94YcffvTRR19//fW//9GmQigAAAnBSURBVP3vr7/+eurUqUZGRiTWq3Wi4aXItLe3F+WsSaXSwsLC1atXz5kz56efflJTUzt06FBRUdHKlSvBMh0eHg4ODp42bdpbb701ZcqURYsW7dmzhyRJkUgUFBS0aNGiWbNmTZkyZfLkyXCdduzYce/ePeTHoUCBwjMgxQDvDD8JEP4dHBzs6+vr7e3t6enp6enp6+vr7u5ubW1tbm5uaWnp7Ozs6el5/CQ0NjbW1NRUVVVVVlZWVVVVVVU9evSorKysqqrq8ePHck1PJxpedpkPowY5TJWVlcePH797925NTc3hw4dpNFpzc/P69etTU1PBb339+nVdXV2hUMjhcAYHB93c3Do6OmA/QUFBioqKT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" alt="" />

StrutsPrepareAndExecuteFilterorg和XXXAction共同构成了struts2的控制器,常常把StrutsPrepareAndExecuteFilterorg称为核心控制器,把XXXAction称为业务控制器
XXXAction业务控制器通常不和物理视图关联,这种做法提供了很好的解耦,业务控制器只负责返回处理结果,而该处理结果与什么视图关联,依然由StrutsPrepareAndExecuteFilterorg来决定
这样做的好处是: 如果需要将某个视图名映射到不同视图资源,就无须修改XXXAction的代码,而只需修改配置即可,StrutsPrepareAndExecuteFilterorg会自动去加载不同的物理视图文件
在struts2框架的控制下,用户请求不再向JSP页面发送,而是由核心控制器StrutsPrepareAndExecuteFilterorg来"调用"JSP页面来生成响应,此处的调用并不是直接调用,而是将请求forward到指定JSP页面

5. struts2的常规配置

虽然struts2提供了Convention插件来管理Action、结果映射,但对于大部分J2EE应用来说,通常会考虑使用XML文件来管理struts2的配置信息。struts2的默认配置文件名为struts.xml,该文件应该放在web应用的类加载路径下,通常就是在WEB-INF/classes路径下
struts.xml配置文件最大的作用就是配置Action和请求之间的对应关系,并配置逻辑视图和物理视图资源之间的对应关系,除此之外,struts.xml文件还有一些额外的功能,例如Bean配置、配置常量、导入其他配置文件等

0x1: 常量配置

struts2除了可以使用struts.xml文件来管理配置之外,还可以使用struts.properties文件来管理常量,该文件定义了struts2框架的大量常量,开发者可以通过改变这些常量来满足应用的需求。struts.properties文件是一个标准的Properties文件,该文件包含了一系列的key-value对,每个key就是一个struts2常量,该key对应的value就是一个struts2常量值
struts2的常量相当于对于struts2应用整体起作用的属性,因此struts2常量也常常被称为struts2属性

只要将struts.properties文件放在web应用的类加载路径下,struts2框架就可以加载该文件
. 基础Constants
) struts.devMode: 可选值true,false(默认false),在开发模式下,struts2的动态重新加载配置和资源文件的功能会默认生效。同时开发模式下也会提供更完善的日志支持
) struts.i18n.reload: 可选值true,false(默认值依赖于struts.devMode),是否自动重新加载本地的资源文件。
) struts.i18n.encoding: 主要用于设置请求编码(默认值(UTF-),Head和Include标签的解析编码、资源和配置文件的解析编码
) struts.configuration.xml.reload: 可选值true,false(默认值依赖于struts.devMode)是否自动重新加载XML配置文件
) struts.action.extension: 设置struts的Action请求的后缀,支持多个时以逗号隔开
) struts.action.excludePattern: 设置struts所排除的url(通过正则表达式匹配)(支持多个,以逗号隔开)
) struts.tag.altSyntax: 可选值true,false(默认true),是否支持ognl表达式
) struts.url.http.port: 设置生成URL所对应的http端口
) struts.url.https.port: 设置生成URL所对应的https端口
) struts.url.includeParams: 可选值 none、get、all(默认get),设置URL是否包含参数,以及是否只包含GET方式的参数
) struts.locale: 设置struts2默认的locale,决定使用哪个资源文件
) struts.ui.templateDir: 该属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件
) struts.ui.theme: 该属性指定视图标签默认的视图主题,该属性的默认值是xhtml
) struts.ui.templateSuffix: 该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、Velocity和JSP模板
) struts.multipart.saveDir: 设置上传临时文件的默认目录
) struts.multipart.maxSize: 设置上传的临时文件的最大限制
) struts.objectFactory.spring.autoWire: 可选值(name、type、auto、constructor、name)(默认name),设置spring的自动装配方式,只有引入spring插件后才有效
) struts.objectFactory.spring.autoWire.alwaysRespect: (默认false)设置是否总是以自动装配策略创建对象
) struts.objectFactory.spring.useClassCache: (默认false)对象工厂是否使用类缓存,开发模式无效
) struts.xslt.nocache: (默认为false)设置XsltResult是否不是用缓存
) struts.custom.properties: 设置用户的自定义属性文件名列表(用","隔开)
) struts.custom.i18n.resources: 设置用户自定义的资源文件路径列表(用","隔开)
) struts.serve.static: (默认false)设置是否支持静态资源请求(要求url在struts或static下)
) struts.serve.static.browserCache: (默认false)是否在静态资源响应中设置缓存。只有在支持静态资源时有效
) struts.el.throwExceptionOnFailure: (默认false)是否在解析el表达式或无法找到属性时抛出RuntimeException
) struts.ognl.logMissingProperties: (默认false)是否日志无发找到的属性
) struts.ognl.enableExpressionCache: 是否缓存ognl解析的表达式
) struts.enable.DynamicMethodInvocation: (默认false)是否支持动态的方法调用,在URL上通过!method指定方法
) struts.enable.SlashesInActionNames: 在URL中的Action段中是否支持斜线
) struts.mapper.alwaysSelectFullNamespace: (默认false)是否总是用最后一个斜线前的URL段作为namespace
. 核心对象Constants
) struts.actionProxyFactory: 设置ActionProxy的实体工厂,该工厂同时也生成默认的ActionInvoctation
) struts.xworkConverter: 设置XWorkConverter对象,该对象用于获取各种类型的转换器
) struts.unknownHandlerManager: 设置UnknownHandlerManager的实现类,用于处理无法找到方法等异常
) struts.multipart.handler: 设置mutipartRequest的handler(默认是jakarta)对应类,org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest
) struts.mapper.class: 可选值(struts、composite、restful、restful2)设置URL解析且映射到ACTION的实现(默认struts)
) struts.mapper.prefixMapping: 通过URL前缀映射到对应的Mapper,格式为urlPrefix1:mapperName2、urlPrefix2:mapperName2。必须添加mapperClass为org.apache.struts2.dispatcher.mapper.PrefixBasedActionMapper,并指定struts.mapper.class为该mapper
) struts.mapper.composite: 设置是否支持复合(多个)actionMapper,mapperName用逗号隔开。必须配置struts.mapper.class 为composite 才会生效
) struts.mapper.idParameterName: 用于Restful2ActionMapper作为URL中id所对应的parameterName
) struts.ognl.allowStaticMethodAccess: (默认false)设置ognl表达式是否支持静态方法
) struts.configuration: 设置struts2的Settings类
) struts.urlRenderer: 设置struts2的URL render(用于生成的URL)(默认struts),类名org.apache.struts2.components.ServletUrlRenderer
) struts.objectFactory: 设置struts2的对象工厂,默认(struts),类名org.apache.struts2.impl.StrutsObjectFactory,当引入struts2-spring插件之后,则被修改为org.apache.struts2.spring.StrutsSpringObjectFactory
) struts.xworkTextProvider: 设置struts2的资源文件内容提供类的实现。默认为com.opensymphony.xwork2.TextProviderSupport
) struts.actionValidatorManager: 设置ActionValidatorManager 的实现类
) struts.valueStackFactory: 设置struts2的ValueStack工厂的实现
) struts.reflectionProvider: 设置ReflectionProvider的实现类
) struts.reflectionContextFactory: 设置ReflectionContextFactory的实现类
) struts.patternMatcher: 设置PatternMatcher的实现类
) struts.staticContentLoader: 设置StaticContentLoader的实现类

struts2默认会加载类加载路径下的struts.xml、struts-default.xml、struts-plugin.xml三类文件

. struts.xml: 开发者定义的默认配置文件
. struts-default.xml: struts2框架自带的配置文件
. struts-plugin.xml: struts2插件的默认配置文件

struts2配置常量总共有以下几种方法,按如下搜索顺序加载

. struts-default.xml
. struts-plugin.xml
. struts.xml
. struts.properties
. web.xml
//如果在多个文件中配置了同一个struts2常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值

0x2: 包含其他配置文件

为了避免struts.xml文件过于庞大、提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件
/*
<include file="struts-part1.xml" />
*/

通过这种方式,struts2能以一种模块化的方式来管理struts.xml配置文件

 

6. 实现Action

对于struts2应用的开发者而言,Action才是应用的核心,开发者需要提供大量的Action类,并在struts.xml文件中配置Actino,Action类里包含了对用户请求的处理逻辑,Actino类也被称为业务控制器
相对于struts1而言,struts2采用了低侵入式设计,struts2不要求Action类继承任何的struts2基类,或者实现任何struts2接口,在这种设计方式下,struts2的Action类是一个普通的POJO(通常应该包含一个无参数的execute方法),从而有很好的代码复用性
struts2通常直接使用Action来封装HTTP请求参数,因此,Action类里还应该包含与请求参数对应的属性(并非强制),并且为这些属性提供对应的setter和getter方法(强制),例如用户请求包含user、pass两个请求参数,那么Action类应该提供user、pass两个属性来封装用户的请求参数,并且为user、pass提供对应的setter、getter方法

Action类里的属性,不仅可用于封装请求参数,还可用于封装处理结果,例如我们可以在Action类中增加一个tip属性,并为该属性提供对应的setter、getter方法
/*
private String tip;
public String getTip()
{
return tip;
}
public void setTip(String tip)
{
this.tip = tip;
}
*/

一旦在Action中设置了tip属性的值,就可以在下一个页面中使用struts2标签来输出该属性的值

<s:property value="tip"/>

0x1: Action接口和ActionSupport基类

为了让用户开发的Action类更规范,struts2提供了一个Action接口,这个接口定义了struts2的Action处理类应该实现的规范

public interface Action
{
//定义Action接口里包含的一些结果字符串,用于规范化返回值,如果开发者依然希望使用特定的字符串作为逻辑视图名,依然是可以使用的
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login"; //定义处理用户请求的execute方法
public String execute() throws Exception;
}

另外,struts2为Action接口提供了一个实现类: ActionSuport

/**
* Provides a default implementation for the most common actions.
* See the documentation for all the interfaces this class implements for more detailed information.
*/
public class ActionSupport implements Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable
{
protected static Logger LOG = LoggerFactory.getLogger(ActionSupport.class); private final transient TextProvider textProvider = new TextProviderFactory().createInstance(getClass(), this);
private final ValidationAwareSupport validationAware = new ValidationAwareSupport(); //收集校验错误的方法
public void setActionErrors(Collection errorMessages)
{
validationAware.setActionErrors(errorMessages);
} //返回校验错误的方法
public Collection getActionErrors()
{
return validationAware.getActionErrors();
}
public void setActionMessages(Collection messages)
{
validationAware.setActionMessages(messages);
}
public Collection getActionMessages()
{
return validationAware.getActionMessages();
}
/**
* @deprecated Use {@link #getActionErrors()}.
*/
public Collection getErrorMessages() {
return getActionErrors();
}
/**
* @deprecated Use {@link #getFieldErrors()}.
*/
public Map getErrors() {
return getFieldErrors();
} //设置表单域校验错误信息
public void setFieldErrors(Map errorMap)
{
validationAware.setFieldErrors(errorMap);
} //返回表单域校验错误信息
public Map getFieldErrors()
{
return validationAware.getFieldErrors();
} //控制Locale的相关信息
public Locale getLocale()
{
ActionContext ctx = ActionContext.getContext();
if (ctx != null)
{
return ctx.getLocale();
}
else
{
LOG.debug("Action context not initialized");
return null;
}
} //返回国际化信息的方法
public String getText(String aTextName) {
return textProvider.getText(aTextName);
}
public String getText(String aTextName, String defaultValue) {
return textProvider.getText(aTextName, defaultValue);
}
public String getText(String aTextName, String defaultValue, String obj) {
return textProvider.getText(aTextName, defaultValue, obj);
}
public String getText(String aTextName, List args) {
return textProvider.getText(aTextName, args);
}
public String getText(String key, String[] args) {
return textProvider.getText(key, args);
}
public String getText(String aTextName, String defaultValue, List args) {
return textProvider.getText(aTextName, defaultValue, args);
}
public String getText(String key, String defaultValue, String[] args) {
return textProvider.getText(key, defaultValue, args);
}
public String getText(String key, String defaultValue, List args, ValueStack stack) {
return textProvider.getText(key, defaultValue, args, stack);
}
public String getText(String key, String defaultValue, String[] args, ValueStack stack) {
return textProvider.getText(key, defaultValue, args, stack);
} //用于访问国际化资源包的方法
public ResourceBundle getTexts() {
return textProvider.getTexts();
}
public ResourceBundle getTexts(String aBundleName) {
return textProvider.getTexts(aBundleName);
} //添加错误信息
public void addActionError(String anErrorMessage) {
validationAware.addActionError(anErrorMessage);
} //添加字段校验失败的错误信息
public void addActionMessage(String aMessage) {
validationAware.addActionMessage(aMessage);
}
public void addFieldError(String fieldName, String errorMessage) {
validationAware.addFieldError(fieldName, errorMessage);
} //默认的input方法,直接返回INPUT字符串
public String input() throws Exception {
return INPUT;
} public String doDefault() throws Exception {
return SUCCESS;
} /**
* A default implementation that does nothing an returns "success".
* <p/>
* Subclasses should override this method to provide their business logic.
* <p/>
* See also {@link com.opensymphony.xwork2.Action#execute()}.
*
* @return returns {@link #SUCCESS}
* @throws Exception can be thrown by subclasses.
默认的处理用户请求的方法,直接返回SUCCESS字符串
*/
public String execute() throws Exception {
return SUCCESS;
} public boolean hasActionErrors() {
return validationAware.hasActionErrors();
} public boolean hasActionMessages() {
return validationAware.hasActionMessages();
} public boolean hasErrors() {
return validationAware.hasErrors();
} public boolean hasFieldErrors() {
return validationAware.hasFieldErrors();
} /**
* Clears field errors. Useful for Continuations and other situations
* where you might want to clear parts of the state on the same action.
*/
public void clearFieldErrors() {
validationAware.clearFieldErrors();
} /**
* Clears action errors. Useful for Continuations and other situations
* where you might want to clear parts of the state on the same action.
*/
public void clearActionErrors() {
validationAware.clearActionErrors();
} /**
* Clears messages. Useful for Continuations and other situations
* where you might want to clear parts of the state on the same action.
*/
public void clearMessages() {
validationAware.clearMessages();
} /**
* Clears all errors. Useful for Continuations and other situations
* where you might want to clear parts of the state on the same action.
*/
public void clearErrors() {
validationAware.clearErrors();
} /**
* Clears all errors and messages. Useful for Continuations and other situations
* where you might want to clear parts of the state on the same action.
*/
public void clearErrorsAndMessages() {
validationAware.clearErrorsAndMessages();
} /**
* A default implementation that validates nothing.
* Subclasses should override this method to provide validations.
*/
public void validate() {
} public Object clone() throws CloneNotSupportedException {
return super.clone();
} /**
* <!-- START SNIPPET: pause-method -->
* Stops the action invocation immediately (by throwing a PauseException) and causes the action invocation to return
* the specified result, such as {@link #SUCCESS}, {@link #INPUT}, etc.
* <p/>
*
* The next time this action is invoked (and using the same continuation ID), the method will resume immediately
* after where this method was called, with the entire call stack in the execute method restored.
* <p/>
*
* Note: this method can <b>only</b> be called within the {@link #execute()} method.
* <!-- END SNIPPET: pause-method -->
*
* @param result the result to return - the same type of return value in the {@link #execute()} method.
*/
public void pause(String result) {
}
}

ActionSupprt类是struts2默认的Action处理类,如果开发者的Action类继承该ActionSupport类,则会大大简化Action的开发,实际上,如果我们配置Action没有指定class属性(即没有用户提供的Action类),系统自动使用ActionSupport类作为Action处理类

0x2: Action访问Servlet API

struts2的Action没有与任何Servlet API耦合,这是struts2的一个改进点,但是对于web应用的控制器而言,不防问servlet api几乎是不可能的,例如跟踪HTTP session,web应用中通常需要访问的api如下

. HttpServletRequest: 对应于JSP内置对象中的requst
. HttpSession: 对应于JSP内置对象中的session
. ServletContext: 对应于JSP内置对象中的application

struts2提供了一个ActionContext类,struts2的Action可以通过该类来访问servlet api

. Object get(String key): Returns a value that is stored in the current ActionContext by doing a lookup using the value's key.
. ActionInvocation: getActionInvocation(): Gets the action invocation (the execution state).
. Map<String,Object> getApplication(): Returns a Map of the ServletContext when in a servlet environment or a generic application level Map otherwise.返回一个map对象,该对象模拟了该应用的ServletContext实例
. Container getContainer(): Sets the container for this request
. static ActionContext getContext(): Returns the ActionContext specific to the current thread.静态方法,获取系统的ActionContext实例
. Map<String,Object> getContextMap(): Gets the context map.获取所有请求参数,类似于调用HttpServletRequest对象的getParameterMap()方法
. Map<String,Object> getConversionErrors(): Gets the map of conversion errors which occurred when executing the action.
. <T> T getInstance(Class<T> type) Locale getLocale(): Gets the Locale of the current action.
. String getName():Gets the name of the current Action.
. Map<String,Object> getParameters(): Returns a Map of the HttpServletRequest parameters when in a servlet environment or a generic Map of parameters otherwise.
. Map<String,Object> getSession(): Gets the Map of HttpSession values when in a servlet environment or a generic session map otherwise.返回一个Map对象,该Map对象模拟了HttpSession实例
. ValueStack getValueStack(): Gets the OGNL value stack.
. void put(String key, Object value): Stores a value in the current ActionContext.
. void setActionInvocation(ActionInvocation actionInvocation): Sets the action invocation (the execution state).直接传入一个Map实例,将该Map实例里的key-value对转换为application的属性名、属性值
. void setApplication(Map<String,Object> application): Sets the action's application context.
. void setContainer(Container cont): Gets the container for this request
. static void setContext(ActionContext context): Sets the action context for the current thread.
. void setContextMap(Map<String,Object> contextMap): Sets the action's context map.
. void setConversionErrors(Map<String,Object> conversionErrors): Sets conversion errors which occurred when executing the action.
. void setLocale(Locale locale): Sets the Locale for the current action.
. void setName(String name): Sets the name of the current Action in the ActionContext.
. void setParameters(Map<String,Object> parameters): Sets the action parameters.
. void setSession(Map<String,Object> session): Sets a map of action session values.直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名、属性值
. void setValueStack(ValueStack stack): Sets the OGNL value stack.

code example

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext; public class HelloWorldAction implements Action
{
private String name; public String execute() throws Exception
{
ActionContext ctx = ActionContext.getContext();
//通过ActionContext访问application范围的属性值
Integer counter = (Integer)ctx.getApplication().get("counter");
if(counter == null)
{
counter = ;
}
else
{
counter = counter + ;
}
//通过ActionContext设置application范围的属性
ctx.getApplication().put("counter", counter);
//通过ActionContext设置session范围的属性
ctx.getSession().put("user", getName());
if(getName().equals("LittleHann"))
{
//通过ActionContext设置request范围的属性
ctx.put("tip", "login success");
return SUCCESS;
}
else
{
ctx.put("tip", "login faild");
return ERROR;
}
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
}
}

通过struts.xml配置这个Action

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default">
<action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0"> <display-name>Struts </display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>

HelloWorld.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value="name"/>
login times ${applicationScope.counter} <br/>
${sessionScope.user}, has login! <br/>
${requestScope.tip}
</body>
</html>

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVcAAABOCAIAAAAb/cKoAAAE9UlEQVR4nO2bS3bcIBBFtf+lOFvIHrKAOMm87Yk9syfKoGOn3cCjCtC37j06PlIJqgoQT0hWT3+e3/9tABCS6ffz+3V7ePjGxsYWcPuvAjMAhGT69fR23bbOBAC2ARUAiA4qABCd6fHp7bptnQkAbAMqABCd6fHydt22zgQAtmH6eXm7bltnAgDbgAoARAcVAIgOKgAQHVQAIDp1FZg+yB5aqlTtvow/PHz+bXZob8tw5/39UA2hCw8ZCyMDYy2d82p9ko27WXTLWuAuM/tl57Ibub2OxzpsLtBQceB42/20jeMoUAERVByukQAqsIkKNNTq788TqMBA9pMPKuAGFWiOggrcsp98Dq8C4nnGddXan4u0CqR+bg+zIUSenY9qVc8iYqlRxn4u+SlVLPVbmq3uTIFr3LNNFiVd+VT7WRQuVbHkb8FVeBRWFSiNyl0xcSjsxoq3Z9O/2o897WxdkU81Ve/Zfnupgd5xTK94bde48rTXGphPNeLdjiV/ez4NhUfRtRYoXVXZWsK+jgpoh835VFP1nh2iAq7ZntbS5dv6Z1EVGJJP1X+qApZ+trOJBMz9KmCvJezeUfzscX0TiKwClpKl/tlcBeabCdbpx5VP1X+qAsK5aIIrnxU4qgpU9/WpsfnYPVvOrq8Co+yatrVAjx9vPlX/dhXw5rOhBMxjVcA4GPtXgflrG7P7Fkb1j9e+9Gxfcy1g0bidqEBz/4y66zTT++1gdrSmr1TtJT8ipex+1o8xaHbsPwf7bsfClMMSVwTq6U/joTHnkh9LV+g8Zzm7vO3SpHG1/9sdnX+pvZb+MSY/EH5H4GP9EQpISQVgIVABK5uIdFg2vDEGBBUAiA4qABAdVAAgOqgAQHRQAYDouL8XyJ7tTcL/P962/w8vwQrRB7axwQ9v6U9Py7eDd6dGXSV2P3v7f/I6CaACsBC9KtBQy2uvltz8Mj2QChwoLqwGKjAAVAAOzfTw/cd1U4XkS4H0bOmj6JJdRCn5KVVMy3/uG+0NCD+l9uquEFFSo92/KFk6W4oLZ2J6eXl5fX29XC6qUO23IgvZS7N9SrCUt9u9CP+lfLL2ahRtyfq3zGrdD6jA6dm7Crhme1pLlx91uXfm0xZFxG1QAfshnI+9q4ClZOmi34MKiP07afBGqcYtOfeqAJyeU6nAKLuXTv/GuG1rgR4/EIQWFei8uJtVYPhsF3bXTFhHfdrWAkOeCNCFc1NXgSlH9lSpbtUu/Iig+tCYc9ZPKW3dP8Z8LP1WCpGWz9rTMsKPPvT2BhwR01ogIIe+7ksqAJAFFbjnHLc+11oDgoMKAEQHFQCIDioAEB1UACA6qABAdKxfDY1628xba4C94VgLoAIAp2RtFQCAvYEKAESnVwUs37eLb9Tnm2cE19uH1H/16/eS/2r+1XYJO8D+6VKBdIak9mqtOTeBXZlk44o0qvte/yIuwP7ZiwroAlUP9nyMfrL3dq8fgEOwiArMcnnfrwLz14la9dOgAq64wg6wfxZfC/T4MeJdsVcDGRNgaQDnYPG1wApPBKUnEd4LAFjwfTtoXAmL2ZKW14fN+cw5ISipkr1dLjvAIVjkdwTcGwEOxFK/JuLeCHAU+E0hQHRQAYDooAIA0UEFAKKDCgBEBxUAiA4qABAdVAAgOqgAQHRQAYDooAIA0UEFAKKDCgBEBxUAiA4qABCdv6eCpBcjYTGDAAAAAElFTkSuQmCC" alt="" />

从结果来看,struts2的Action设计非常优秀,它既可以彻底与servlet API分离,从而可以允许该Action脱离WEB容器运行,也就可以脱离WEB容器来测试Actino,又允许用简单方式来操作request、session、application范围的属性

0x3: Action直接访问servlet API

虽然struts2提供了ActionContext来访问Servlet API,但这种访问并不是直接获得Servlet API的实例,为了在Action中直接访问Servlet API,struts2还提供了如下几个接口

. ServletContextAware: 实现该接口的Action可以直接访问WEB应用的ServletContext实例
. ServletRequestAware: 实现该接口的Action可以直接访问用户请求的HttpServletRequest实例
. ServletResponseAware: 实现该接口的Action可以直接访问服务器响应的HttpServletResponse实例

我们继续用之前的login case进行讨论: HelloWorldAction.java

package com.tutorialspoint.struts2;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext; public class HelloWorldAction implements Action, ServletResponseAware
{
private String name;
private HttpServletResponse response; //重新实现ServletResponseAware接口必须实现的方法
@Override
public void setServletResponse(HttpServletResponse response)
{
this.response = response;
} public String execute() throws Exception
{
ActionContext ctx = ActionContext.getContext();
//通过ActionContext访问application范围的属性值
Integer counter = (Integer)ctx.getApplication().get("counter");
if(counter == null)
{
counter = ;
}
else
{
counter = counter + ;
}
//通过ActionContext设置application范围的属性
ctx.getApplication().put("counter", counter);
//通过ActionContext设置session范围的属性
ctx.getSession().put("user", getName());
if(getName().equals("LittleHann"))
{
//通过response添加cookie
Cookie c = new Cookie("user", getName());
c.setMaxAge( * );
response.addCookie(c); //通过ActionContext设置request范围的属性
ctx.put("tip", "login success");
return SUCCESS;
}
else
{
ctx.put("tip", "login faild");
return ERROR;
}
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
} }

HelloWorld.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value="name"/>
login times ${applicationScope.counter} <br/>
${sessionScope.user}, has login! <br/>
${requestScope.tip}
cookie: ${cookie.user.value}
</body>
</html>

需要注意的,即使在struts2的Action类中获得了HttpServletResponse对象,也不能直接生成对客户端的响应,这在struts2中没有任何意义

0x4: 使用servletactioncontext访问servlet API

除此之外,为了能直接访问Servlet API,struts2还提供了一个ServletActionContext工具类,这个类包含如下几个静态方法

. static ActionContext    getActionContext(javax.servlet.http.HttpServletRequest req): Gets the current action context.获取web应用的PageContext对象
. static ActionMapping getActionMapping():Gets the action mapping for this context
. static javax.servlet.jsp.PageContext getPageContext(): Returns the HTTP page context.
. static javax.servlet.http.HttpServletRequest getRequest():Gets the HTTP servlet request object.获取web应用的HttpServletRequest对象
. static javax.servlet.http.HttpServletResponse getResponse(): Gets the HTTP servlet response object.获取web应用的HttpServletResponse对象
. static javax.servlet.ServletContext getServletContext(): Gets the servlet context.获取web应用的ServletContext对象
. static ValueStack getValueStack(javax.servlet.http.HttpServletRequest req): Gets the current value stack for this request
. static void setRequest(javax.servlet.http.HttpServletRequest request): Sets the HTTP servlet request object.
. static void setResponse(javax.servlet.http.HttpServletResponse response): Sets the HTTP servlet response object.
. static void setServletContext(javax.servlet.ServletContext servletContext): Sets the current servlet context object

借助于ServletActionContext类的帮助,开发者也可以在Action中访问Servlet API,并可避免需要实现ServletXXXAware接口

package com.tutorialspoint.struts2;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletResponseAware; import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext; public class HelloWorldAction implements Action, ServletResponseAware
{
private String name;
private HttpServletResponse response; //重新实现ServletResponseAware接口必须实现的方法
@Override
public void setServletResponse(HttpServletResponse response)
{
this.response = response;
} public String execute() throws Exception
{
ActionContext ctx = ActionContext.getContext();
//通过ActionContext访问application范围的属性值
Integer counter = (Integer)ctx.getApplication().get("counter");
if(counter == null)
{
counter = ;
}
else
{
counter = counter + ;
}
//通过ActionContext设置application范围的属性
ctx.getApplication().put("counter", counter);
//通过ActionContext设置session范围的属性
ctx.getSession().put("user", getName());
if(getName().equals("LittleHann"))
{
//通过response添加cookie
Cookie c = new Cookie("user", getName());
c.setMaxAge( * );
//通过ServletActionContext工具类直接访问Servlet API
ServletActionContext.getResponse().addCookie(c); //通过ActionContext设置request范围的属性
ctx.put("tip", "login success");
return SUCCESS;
}
else
{
ctx.put("tip", "login faild");
return ERROR;
}
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
}
}

对上文进行一下总结梳理,在Action中访问Servlet API有如下几种方法

. 通过ActionContext类中指定方法访问
. 让Action类实现ServletXXXAware接口后,在类中可直接访问
. 通过ServletActionContext工具类的静态方法访问

7. 配置Action

实现了Action处理类之后,就可以在struts.xml文件中配置该Action了,配置Action就是让struts2知道哪个Action处理哪个请求(配置Action和请求的映射关系),我们可以认为,Action是struts2的基本"程序单位"

0x1: 包和命名空间

struts2使用包来组织Action,因此,将Action定义放在包定义下完成,定义Action通过使用<package../>下的<action../>子元素来完成,而每个package元素配置一个包
struts2框架中核心组件就是Action、拦截器等,struts2框架使用包来管理Action和拦截器等,每个包就是多个Action、多个拦截器、多个拦截器引用的集合

. name: 配置<package../>元素时必须指定name属性,这个属性是引用该包的唯一标识
. extends: 还可以指定一个可选的extends属性,extends属性值必须是另一个包的name属性,表示让该包继承另一个包,子包还可以从一个或多个父包中继承到拦截器、拦截器栈、action等配置,因为struts2的配置是从上到下处理的,所以父包应该在子包前面定义
. namespace: 该属性是一个可选属性,该属性定义该包的命名空间
. abstract: struts2还提供了一种抽象包,抽象包意味着改包不能包含Action定义,为了显式指定一个包是抽象包,可以为该<package../>元素增加abstract="true"属性
//struts.xml文件的<package../>元素用于定义包配置,每个<package../>元素定义一个包配置

定义每一个package元素时,都可以指定一个namespace属性,用于指定改包对应的命名空间。struts2之所以提供命名空间的功能,主要是为了处理同一个web应用中包含同名Action的情形,struts2以命名空间的方法来管理Action,同一个命名空间里不能有同名的Action
struts2不支持为单独的Action设置命名空间,而是通过为包指定namespace属性来为包下面的所有Action指定共同的命名空间,如果配置<package../>时没有指定namespace属性,则该包下的所有Action处于默认的包空间下

当某个包指定了命名空间后,该包下所有的Action处理的URL应该是命名空间+Action名
http://xxxx/namespace.action
//struts2命名空间的作用类似于struts2里模块的作用,因为它从逻辑上对Action进行了分类,它允许以模块化的方式来组织Action

除此之外,struts2还可以显示指定根命名空间,通过设置某个包的namespace="/"来指定根命名空间

如果请求为/barspace/bar.action

. 系统首先查找/barspace命名空间里名为bar的Action,如果在该命名空间里找到对应的Action,则使用该Action处理用户请求
. 否则,系统将到默认命名空间中查找名为bar的Action,如果找到对应的Action,则使用该Action处理用户请求
. 如果两个命名空间里都找不到名为bar的Action,则系统出现错误

如果请求为/login.action

. 系统会在根命名空间("/")中查找名为login的Action,如果找到了,则由该Action处理用户请求
. 否则,系统将转入默认空间中查找名为login的Action,如果默认的命名空间中有名为login的Action,则由该Action处理用户请求
. 如果两个命名空间里都找不到login的Action,则系统出现错误

命名空间只有一个级别,如果请求的URL是/bookservice/search/get.action,系统将先在/bookservice/search的命名空间下查找名为get的Action,如果在该命名空间内找到名为get的Action,则由该Action处理用户请求;如果在该命名空间内没有找到名为get的Action,系统将直接进入默认的命名空间中查找名为get的Action,而不会进行逐级递归

0x2: Action的基本配置

. name: 定义Action时,至少需要指定该Action的name属性,该name属性既是该Action的名字,也指定了该Action所处理的请求的URL
. class: class属性指定了该Action的实现类,如果我们没有指定该属性,系统则默认使用系统的ActionSupport类
. method: 处理逻辑的方法

Action只是一个逻辑控制器,它并不直接对浏览者生成任何响应,因此,Action处理完用户请求后需要将指定的视图资源呈现给用户,因此需要配置逻辑视图和物理视图资源之间的对应关系
这通过<result../>元素来定义

0x3: 使用Action的动态方法调用

struts2允许同一个Action内包含抖个控制处理逻辑,例如对于同一个表单,当用户通过不同的提交按钮来提交同一个表单时,系统需要使用Action的不同方法来处理用户请求,这就需要让同一个Action里包含多个控制处理逻辑,此时,可以采用DMI(dynamic method invocation 动态方法调用)来处理这种请求,动态方法调用是指表单元素的action并不是直接等于某个Action的名字的名字,而是以如下形式存在

<!--
action属性为actionNmae!methodName的形式
其中actionName指定提交到哪个Action,methodName指定提交到指定方法
-->
action="ActionName!methodName"

通过这种方法,我们可以在一个Action中包含多个处理逻辑,并通过为表单元素指定不同action属性来提交给Action的不同方法,默认情况下是直接调用execute方法
使用动态方法必须对struts2进行显式设置: struts.enable.DynamocMethodInvocation = true

0x4: 指定method属性及使用通配符

对于一个表单里包含多个处理流程,struts2还提供了一种处理方法,即将一个Action处理类定义成多个逻辑Action,即在配置<action../>元素时,为它指定method属性,则可以让Action调用指定方法(而不是默认的execute方法)

在配置<action../>元素时,允许在指定name属性时使用模式字符串(即用"*"代表一个或多个任意字符串),接下来就可以在class、method属性及<result../>子元素中使用{N}的形式来代表前面第N个星号(*)所匹配的子串

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default">
<action name="*Action" class="com.tutorialspoint.struts2.HelloWorldAction" method="{1}">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
</struts>

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="loginAction">
<label for="name">Please enter your name</label><br/>
<input type="text" name="name"/>
<input type="submit" value="Say Hello"/>
</form>
</body>
</html>

实例中定义的<action name="*Action"../>定义了一系列的逻辑Action,例如,如果用户请求的URL为loginAction.action,则调用com.tutorialspoint.struts2.HelloWorldAction类的login方法

对上文进行一下总结梳理,让同一个Action同时具备多个处理逻辑的方法有

. 在前端调用端使用: actionName!methodName的形式
. struts.xml中配置action的method属性,显式指定处理逻辑函数
. 使用*通配符

0x5: 配置默认Action

为了让struts2的Action可以接管用户请求,我们可以配置name="*"的Action,除此之外,struts2还支持配置默认Action,当用户请求找不到对应的Action时,系统默认的Action即将处理用户请求,配置默认的Action通过<default-action-ref../>元素完成

<package name="helloworld" extends="struts-default" namespace="/">
<!-- 配置一个默认Action,默认Action为simpleViewResultAction -->
<default-action-ref name="simpleViewResultAction"/> <!-- 通过action元素配置默认的Action -->
<action name="simpleViewResultAction" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>

这样,就可以明确指定一个Action作为默认Action,将默认Action配置在默认命名空间里就可以让该Action处理所有用户请求,因为默认命名空间的Action可以处理任何命名空间的请求

0x6: 配置Action的默认处理类

配置<action../>元素时可以不指定class属性,如果没有指定class属性,则系统默认使用ActionSupport作为Action处理类
实际上,struts2允许开发者自己配置Action默认处理类,配置Action的默认处理类使用<default-class-ref../>元素,配置该元素时只需要指定一个class属性,该class属性指定的类就是Action的默认处理类

8. 配置处理结果

Action只是struts2控制器的一部分,所以它不能直接生成对浏览者的响应,Action只负责处理请求,负责生成响应的视图组件(通常就是JSP页面),而Action会为JSP页面提供显示的数据,当Action处理用户请求结束后,控制器应该使用哪个视图资源来生成响应,由<result../>元素指定映射关系

0x1: 理解处理结果

Action处理完用户请求后,将返回一个普通字符串,整个普通字符串就是一个逻辑视图名,struts2通过配置逻辑视图名和物理视图名之间的映射关系,一旦系统收到Action返回的某个逻辑视图名,系统就会把对应的物理视图呈现给浏览者

aaarticlea/png;base64,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" alt="" />

相对于struts1框架而言,struts2的逻辑视图不再是ActionForward对象,而是一个普通字符串,这样的设计更有利于将Action类与struts2框架分离,提供了更好的代码复用性,除此之外,struts2还支持多种结果映射

. JSP视图
. FreeMarker试图
. 下一个Action,形成Action的链式处理

0x2: 配置结果

struts2的Action处理用户请求结束之后,返回一个普通字符串(逻辑视图名),必须在struts.xml文件中完成逻辑试图和物理视图资源的映射,才可让系统转到实际的视图资源

<action name="*Action" class="com.tutorialspoint.struts2.HelloWorldAction" method="{1}">
<result name="success" type="dispatcher">
<param name="location">/HelloWorld.jsp</param>
</result>
</action>

<result../>完整结构

. nane属性: 逻辑视图名
. type属性: 结果类型

<param..>子元素结构

. name属性
) location: 指定了该逻辑视图对应的实际视图资源
) parse: 指定是否允许在实际视图名字中使用OGNL表达式,默认为true
. 对应的物理资源

0x3: struts2支持的结果类型

struts2支持使用多种视图技术,例如JSP、Velocity、FreeMarker等,当一个Action处理用户请求结束时,仅仅返回一个字符串(逻辑视图名)
struts2的结果类型要求实现com.opensymphony.xwork2.Result,这个结果是所有结果类型的通用接口,如果我们需要自己的结果类型,我们需要提供一个实现该接口的类,并且在struts.xml文件中配置该结果类型
struts2默认提供了一系列的结果类型: struts2-core-2.3.24.jar/struts-default.xml

    <package name="struts-default" abstract="true">
<!-- 配置系统支持的结果类型 -->
<result-types>
<!-- 链式处理的结果类型 -->
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<!-- 用于与JSP整合的结果类型 -->
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<!-- 用于与FreeMarker整合的结果类型 -->
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<!-- 用于控制特殊的HTTP行为的结果类型 -->
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<!-- 用于跳转到其他URL的结果类型 -->
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<!-- 用于跳转到其他Action的结果类型 -->
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<!-- 向浏览器返回一个inputStream的结果类型 -->
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<!-- 用于整合Velocity的结果类型 -->
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<!-- 用于整合XML/XSLT的结果类型 -->
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<!-- 用于显示某个页面原始代码的结果类型 -->
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
<result-type name="postback" class="org.apache.struts2.dispatcher.PostbackResult" />
</result-types>

实际上,struts2提供了极好的可扩展性,它允许自定义结果类型,我们完全可以自定义结果类型

0x4: plaintext结果类型

这个结果类型并不常用,它主要用于显示实际视图资源的源代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default" namespace="/">
<action name="*Action" class="com.tutorialspoint.struts2.HelloWorldAction" method="{1}">
<result name="success" type="plainText">
<param name="location">/HelloWorld.jsp</param>
</result>
</action>
</package>
</struts>

0x5: redirect结果类型

这种结果类型与dispatcher结果类型相对

. dispatcher: 将请求forward(转发)到指定的JSP资源,
. redirect: 将请求redirect(重定向)到指定的视图资源,重定向会对视所有的请求参数、请求属性、Action的处理结果

使用redirect结果类型,系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源,效果是让浏览器重新产生一个请求,因此所有的请求参数、请求属性、Action实例和Action中疯转的属性全部丢失

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default" namespace="/">
<action name="hello" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute">
<result name="success" type="redirect">
<param name="location">/HelloWorld.jsp</param>
</result>
</action>
</package>
</struts>

配置一个redirect类型的结果,可以指定如下两个参数

. location: 指定Action处理完用户请求后跳转的地址
. parse: 指定是否允许在location参数值中使用表达式,默认是true

0x6: redirectaction结果类型

这种结果类型与redirect类型非常相似,同样是重新生成一个全新的请求,但与redirect结果类型区别在于

redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求,当需要让一个Action处理结束后,直接将请求重定向(注意不是转发)到另一个Action时,我们需要使用这种结果类型

配置redirectAction结果类型时,可以指定如下两个参数

. actionName: 指定重定向的Action名
. namespace: 指定需要重定向的Action所在的命名空间

使用redirectAction结果类型时,系统将重新生成一个新请求,只是该请求的URL不是一个具体视图资源,而是另一个Action(redirect是重定向到另一个视图资源),因此前一个Action的处理结果、请求参数、请求属性都会丢失

0x7: 动态结果

动态结果的含义是指在指定实际视图资源时使用了表达式语法,通过这种语法可以允许Action处理完用户请求后,动态转入实际的视图资源

0x8: Action属性值决定物理视图资源

配置<result../>元素时,不仅可以使用${0}表达式形式来指定视图资源,还可以使用${属性名}的方式来指定视图资源,在这种情况下,${属性名}里的属性名就是对应Action实例里的属性,并且还可以使用完全的OGNL表达式,例如${属性名.属性名.属性名}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default" namespace="/">
<action name="loginAction" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute">
<result name="success">
<param name="location">/${target}.jsp</param>
</result>
</action>
</package>
</struts>

使用了/${target}.jsp表达式来指定视图资源,这要求在对应的Action类里应该包含target属性,该属性值将决定实际的视图资源: HelloWorldAction.java

..
//封装请求参数的target属性
private String target;
..
public String getTarget()
{
return target;
} public void setTarget(String target)
{
this.target = target;
}
..

index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="loginAction">
<label for="target">Please enter the target</label><br/>
<input type="text" name="target"/>
<input type="submit" value="Go"/>
</form>
</body>
</html>

struts2会自动将HTTP GET/POST传入的参数字段作为属性值赋值给Action中的对应属性变量,同时struts2的视图资源又可以根据变量进行动态跳转,当赋值一个不存在的视图资源时,struts2会报错

aaarticlea/png;base64,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" alt="" />

从本质上来说,通过Action属性值和视图资源中动态变量标记的配合,实现了"模版机制"

0x9: 全局结果

struts2的<result../>元素配置,也可以放在<global-result../>元素中配置,当在<global-result../>元素中配置<result../>元素时,该<result../>元素配置了一个全局结果,全局结果将对所有的Action都有效
如果一个Action里包含了与全局结果里同名的结果,则Action里的局部Result会覆盖全局Result,即"就近原则"

0x10: 使用preresultlistener

PreResultListener是一个监听器接口,它可以在Action完成控制处理之后,系统转入实际的物理视图之前被回调
struts2应用可由Action、拦截器添加PreResultListener监听器,添加PreResultListener监听器通过ActionInvocation的addPreResultListener()方法完成

. 一旦为Action添加了PreResultListener监听器,该监听器就可以在应用转入实际物理视图之前回调该监听器的beforeResult()方法
. 一旦为拦截器添加了PreResultListener监听器,该监听器会对该拦截器所拦截的所有Action都起作用

通过使用PreResultListener监听指定Action转入不同Result的细节,因此也可以作为日志的实现方式

9. 配置struts2的异常处理

任何成熟的MVC框架都应该提供成熟的异常处理机制,虽然可以在execute方法中手动捕捉异常,当捕捉到特定异常时,返回特定逻辑视图名,但这种处理方式非常繁琐,需要在execute方法中写大量的catch块,而且最大的缺点还在于异常处理与代码耦合,一旦需要改变异常处理方式,必须修改代码。解决这种问题最好的方式是可以通过声明式的方式管理异常处理

0x1: struts2的异常处理机制

对struts2 MVC框架而言,我们希望有如图所示的处理流程
aaarticlea/png;base64,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" alt="" />

当Action处理用户请求时,如果出现了异常1,则系统转入视图资源1,如果出现异常2,则系统转入视图资源2
类似于struts1提供的声明时异常管理,struts2允许通过struts.xml文件来配置异常的处理

//处理用户请求的execute方法,该方法抛出所有异常
public String execute() throws Exception

上面的execute方法可以抛出全部异常,这意味着我们重写该方法时,完全无须进行人呢和异常处理,而是把异常直接抛给struts2框架处理,struts2框架接收到Action抛出的异常之后,将根据struts.xml文件配置的异常映射,转入指定的视图资源
为了使用struts2的异常处理机制,我们必须打开struts2的异常映射功能,开启异常映射功能需要一个拦截器,在struts-default.xml中配置如下(所有struts.xml都继承自它)

<interceptors>
..
<!-- 执行异常处理的拦截器 -->
<interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>
..
<!-- struts2默认的拦截器栈 -->
<interceptor-stack name="defaultStack">
..
<!-- 引用异常映射拦截器 -->
<interceptor-ref name="exception"/>
..
</interceptor-stack>
</interceptors>

通过上面配置的拦截器,实现了struts2的异常处理机制

0x2: 声明式异常捕捉

struts2的异常处理机制通过在struts.xml文件中配置<exception-mapping../>完成的,配置该元素时,需要指定如下几个属性

. exception: 指定该异常所设置的异常类型
. result: 指定Action出现该异常时,系统返回result属性值对应的逻辑视图名

根据<exception-mapping../>出现的位置的不同,异常映射又可分为如下两种

. 局部异常映射: 将<exception-mapping../>元素作为<action../>元素的子元素配置
//局部异常映射仅对该异常映射所在的Action内有效 . 全局异常映射: 将<exception-mapping../>元素作为<global-exception-mapping>元素的子元素配置
//全局异常映射对所有的Action都有效

HelloWorldAction.java

package com.tutorialspoint.struts2;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class HelloWorldAction extends ActionSupport
{
/**
*
*/
private static final long serialVersionUID = 9053634696133432054L;
private String name; public String execute() throws Exception
{
if(getName().equalsIgnoreCase("LittleHann"))
{
throw new MyException("自定义异常");
}
else if(getName().equalsIgnoreCase("sql"))
{
throw new java.sql.SQLException("用户名不能为SQL");
}
return SUCCESS;
} public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
}
}

通过struts.xml文件来胚子好struts2的异常处理机制

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default">
<!-- 定义全局结果映射 -->
<global-results>
<!-- 定义当sql、root两个逻辑异常都对应HelloWorld.jsp页 -->
<result name="sql">/HelloWorld.jsp</result>
<result name="root">/HelloWorld.jsp</result>
</global-results>
<!-- 定义全局异常映射 -->
<global-exception-mappings>
<!-- 当Action中遇到SQLException异常时 -->
<exception-mapping exception="java.sql.SQLException" result="sql"/>
<!-- 当Action中遇到MyException异常时 -->
<exception-mapping exception="java.lang.Exception" result="root"/>
</global-exception-mappings>
<action name="loginAction" class="com.tutorialspoint.struts2.HelloWorldAction" method="execute">
<result name="success">
<param name="location">/HelloWorld.jsp</param>
</result>
<result name="error">
<param name="location">/HelloWorld.jsp</param>
</result>
</action>
</package>
</struts>

可以看到,除了使用SUCCESS、ERROR等预定义的逻辑视图映射之外,struts2原生还提供了异常处理的框架支持

0x3: 输出异常信息

当struts2框架控制系统进入异常处理页面后,我们必须在对应页面中输出指定异常信息,为了在异常处理页面中显示异常信息,我们可以使用struts2的如下标签来输出异常信息

<s:property value="exception"/>: 输出异常对象本身
<s:property value="exception.message"/>: 输出异常信息
<s:property value="exceptionStack"/>: 输出异常堆栈信息

HelloWorld.jsp

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World</title>
</head>
<body>
Hello World, <s:property value="name"/> <br/>
Exception Info: <s:property value="exception.message"/><br/>
Exception Stack Info:<s:property value="exceptionStack"/>
</body>
</html>

输出异常对象完整的跟踪栈信息,会更有利于项目调试

10. convention插件与"约定"支持

从struts2.1开始,struts2引入了Convention插件来支持"零配置",插件完全可以抛弃配置信息,不仅不需要使用struts.xml文件进行配置,甚至不需要使用Annotation进行配置,而是由struts2根据约定来自动配置,"约定优于配置"

0x1: action的搜索和映射约定

为了使用Convention插件,必须在struts2应用中安装Convention插件,即将struts2项目下的struts2-convention-plugin-2.3.24.jar文件复制到struts2应用的WEB-INF\lib路径下
对于Convention插件而言,它会自动搜索位于action、actions、struts、struts2包下的所有java类,Convention插件会把如下两种java类当成Action处理

. 所有实现了com.opensymphony.xwork2.Action的java类
. 所有类名以Action结尾的java类

struts2的Convention插件还允许设置如下3个常量

. struts.convention.exclude.package: 指定不扫描哪些包下的java类,位于这些包结构下的java类将不会被自动映射到Action
. struts.convention.package.locators: Convention插件使用该常量指定的包作为搜寻Action的根包,对于actions.lee.LoginAction类,按约定原本应该映射到/lee/login,如果将该常量设置为lee,则该Action将会映射/login
//Action的映射直接对应到URL的访问模式
. struts.convention.action.packages: Convention插件以该常量指定包作为根包来搜索Action类,Convention插件除了扫描action、actions、struts、struts2四个包的类之外,还会扫描该常量指定的一个或多个包,Convention会视图从中发现Action类

找到合适的Action类之后,Convention插件会按约定部署这些Action,部署Action时,action、actions、struts、struts2包会映射成根命名空间,而这些包下的子包则被映射成对应的命名空间

. org.crazy.actions.LoginActino: 映射到/
//下面类实现了com.opensymphony.xwork2.Action接口
. org.crazyit.actions.books.GetBooks: 映射到/books
. org.crazyit.struts.auction.bid.BidAction: 映射到/auction/bid

除此之外,我们知道struts2的Action都是以package的形式来组织的,而package还有父package,对于采用Convention插件开发的struts2应用而言,每个Action所处的package与其Action类所在的包相似(除去action、action、struts、受托人2这些包及父包部分),Convention插件里所有Action所在package的父package默认是conventionDefault
而Action的name属性(也就是该Action所要处理的URL)则根据该Action的类名映射,映射Action的name时,遵循如下原则

. 如果该Action类名包含Action后缀,将该Action类名的Action后缀去掉,否则不做任何处理
. 将Action类名的驼峰写法转成中划线写法

对于如下Action将被映射成的完整URL如下

org.crazyit.actions.LoginAction: 映射成/loing.action
org.crazyit.actions.books.GetBooks: 映射成/books/get-books.action

采用Convention插件之后,Action类的代码不需要任何额外的变化

package com.tutorialspoint.action.struts2;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.tutorialspoint.struts2.MyException; public class HelloWorldAction extends ActionSupport
{
/**
*
*/
private static final long serialVersionUID = 9053634696133432054L;
private String name;
...

根据映射规则,该Action将被映射到如下URL: /struts2/loginAction

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World From Struts2</h1>
<form action="struts2/loginAction">
<label for="target">Please enter the name</label><br/>
<input type="text" name="name"/>
<input type="submit" value="Go"/>
</form>
</body>
</html>

0x2: 按约定映射result

默认情况下,Convention总会到web应用的WEB-INF/content路径下定位物理资源,定位物理资源的约定是:

actionName + resultcode + suffix
//当某个逻辑视图找不到对应的视图资源时,Convention会自动试图使用actionName + resultcode + suffix作为物理视图资源

为了看到struts2应用里Action等各种资源的映射情况,struts2提供了ConfigBrowser插件,使用该插件可以清楚地看出struts2应用下部署了哪些Action,以及每个Action详细的映射信息

. 复制struts2-config-browser-plugin-2.3..jar到struts2应用的lib目录下
. 重启该应用
. http://localhost:8080/HelloWorldStruts2/config-browser/actionNames.action

0x3: action链的约定

如果希望一个Action处理结束后不是进入视图页面,而是进入另一个Action,从而形成Action链,则通过Convention插件只需遵守如下几个约定即可

. 第一个Action返回的逻辑视图字符串没有对应的视图资源
. 第二个Action与第一个Actino处于同一个包下
. 第二个Action映射的URL为: firstactionName + resultcode

FirstAction.java

package org.crazyit.app.action;

public class FirstAction
{
//封装提示信息的tip属性
private String tip; public void setTip(String tip)
{
this.tip = tip;
}
public String getTip()
{
return this.tip;
} public String execute()
{
System.out.println("first Action");
setTip("first tip");
return "second";
}
}

为了让该Action结束处理后进入第二个Action而不是直接进入视图页面,因此该应用的WEB-INF/content不能提供first-second.jsp、first.jsp(Convention的命名约定)
对于FirstAction返回"second"字符串,第二个Action的映射的URL应该是first-second
,因此第二个Action的类名应该为FirstSecond

package actions.lee;

public class FirstSecondAction
{
//处理用户请求
public String execute()
{
System.out.println("second Action");
return SUCCESS;
}
}

0x4: 自动重加载映射

Convention插件支持自动重加载映射,只要我们为struts2应用配置如下两个常量即可(struts.xml、web.xml中配置都可)

<!-- 配置struts2应用处于开发模式 -->
<constant name="struts.devMode" value="true"/>
<!-- 配置Convention插件自动重加载映射 -->
<constant name="struts.convention.classes.reload" value="true" />

0x5: convention插件的相关常量

虽然Convention插件是所谓的"零配置",但实际上并不能真正做到零配置,至少我们需要在web.xml文件中配置struts2的核心 Filter、以及struts2应用的各宗全局配置(例如Bean配置、拦截配置等),依然需要借助于struts2的配置文件
Convention插件主要致力于解决Action管理、Result管理等最常见、最琐碎的配置,将开发者从struts.xml繁琐配置中解放出来,而不是完全舍弃struts.xml文件

0x6: convention插件相关annotation

Convention还允许使用Annotation管理Action和Result的配置,从而覆盖Convention的约定

11. 使用struts2的国际化

struts2的国际化是建立在java国际化的基础之上的,一样也是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再取得该资源文件中指定key对应的消息,整个过程与java程序的国际化完全相同,只是struts2框架对java程序国际化进行了进一步封装,从而简化了应用程序的国际化

0x1: struts2中加载全局资源文件

0x2: 访问国际化信息

0x3: 输出带占位符的国际化消息

0x4: 加载资源文件的方式

0x5: 加载资源文件的顺序

12. 使用struts2的标签库

struts2提供了大量标签来帮助开发表现层页面

0x1: struts2标签库概述

struts2标签库不依赖于任何表现层技术,即struts2提供的大部分标签,可以在各种表现层技术中使用,包括最常用的JSP页面,也可以在Velocity、FreeMarker等模板技术中使用
struts2把所有的标签都定义在URI为"/struts-tags"的空间下,大致可以分为如下三类

. UI(Uesr Interface 用户界面)标签: 主要用于生成HTML元素的标签
) 表单标签: 主要用于生成HTML页面的form元素,以及普通表单元素的标签
) 非表单标签: 主要用于生成页面上的树、Tab页等标签
. 非UI标签: 主要用于数据访问、逻辑控制等的标签
) 逻辑控制标签: 主要包含用于实现流程控制、分支、循环等流程控制的标签,也可以完成对集合的合并、排序等操作
1.1) if: 用于控制选择输出的标签
1.2) elself/elseif: 与if标签结合使用,用于控制选择输出的标签
1.3) else: 与if标签结合使用,用于控制选择输出的标签
1.4) append: 用于将多个集合拼接成一个新的集合
1.5) generator: 一个字符串解析器,用于将一个字符串解析成一个集合
1.6) iterator: 一个迭代器,用于将集合迭代输出
1.7) merge: 用于将多个集合拼接成一个新的集合,但与append的拼接方法不同
1.8) sort: 用于对集合进行排序
1.9) subset: 用于截取集合的部分元素,形成新的子集合
) 数据访问标签: 主要包含用于输出ValueStack中的值、完成国际化等功能的标签
2.1) action: 用于在JSP页面中直接调用一个Action,通过指定executeResult参数,还可将该Action的处理结果包含到本页面中
2.2) bean: 用于创建一个JavaBean实例,如果指定了var属性,则可以将创建的JavaBean实例放入Stack Context中
2.3) date: 用于格式化输出一个日期
2.4) debug: 用于在页面上生成一个调试链接,当单击该链接时,可以看到当前ValueStack和Stack Context中的内容
2.5) i18n: 用于指定国际化资源文件的baseName
2.6) include: 用于在JSP页面中包含其他的JSP或Servlet资源
2.7) param: 用于设置一个参数,通常是用作bean标签、url标签的子标签
2.8) push: 用于将某个值放入ValueStack的栈顶
2.9) set: 用于设置一个新变量,并可以将新变量放入指定的范围内
2.10) text: 用于输出国际化消息
2.11) url: 用于生成一个URL地址
2.12) property: 用于输出某个值,包括输出ValueStack、Stack Context、Action Context中的值
. Ajax标签: 用于Ajax(asynchronous javascript and xml)支持的标签

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAc4AAAEYCAIAAABa44HVAAAgAElEQVR4nOydd3xUZfb/s/v6WtZ1X+6uuigSegkJSei9KNIhCFhAEde6Csh+gaUJgiJlFxCiICjSQ0hPSJtMpvfey53ee0vvbe7vj/PLfc1i+a4sOEm47z/ymszcmXnmPvd+nvOc5zznJERxcHBwcO4zCfFuAA4ODs7AB5daHBwcnPsOLrU4ODg49x1canHiT3d3d2dnJ4qi3d3dPT09KIr29PTA8z09PT09PV1dXdi/nZ2d8LezszMajXZ1dcEx8HZ4b0dHR0dHB7wKj1EUhTdiB/f09HR3d3d3d3d0dMAb29ra4MloNApfiqJoV1cX1jb4C41BUbS1tRUOgMfwlra2tmg02tbW1tXVBQe0t7fDx8KD2I+CXwR/4QdCg6G10Db4iq6uLuyrcfojuNTixB+0l4aGBnjQ3t6OomhLSwv2L8gTiA4IFsglJl7RaLSjowM0K/YzMbA3tra2wvE/PCYajWIf2NHRAXoHL3V0dLS2toL2gS5jHxur1NFoFBNf7GN7enoikQg82dLSAl+NDSTwY+FxNBrFvjG25djx8eojnP8SXGpx4k9LSwsmYSiK8vn81atXZ2RkvPXWW+vXr1++fPk777zz6quvvvTSSxs2bFixYsXSpUtXrVq1fPnyBQsWLFy4cNmyZS+99NLq1as3btz4+uuvL1q0aNmyZW+88cby5csXL168Zs2ajIyMF198cerUqbNnz54/f/6sWbPmzJkza9as559//sUXX5w5c+b06dNnzJgxc+bMuXPnzp49e+7cuTNnzoSXli9fPnfu3Hnz5s2ZM+fll19eunTpggULli9fPmfOnFWrVq1atWrlypVLlizJyMh45ZVX4Is2btw4b968lStXvvjii6+88srKlSsXL168efPmN954Y+HChYsXL3711VczMjJWrFixevXq1atXr1q1Cj55xYoV8+bNmzt37uLFi9euXbtu3bo5c+a8/vrru3btglEHt2r7L7jU4sQfEBGY6Xd3d5PJ5L/97W/Xrl27ePFiUVFRdnY2PC4pKblx40ZZWdnJkydzc3OzsrI+/fTTa9euHT9+PDMz8/jx45cvX87Ozj516tThw4cPHTp08uTJffv2nTx58uTJkwcPHty9e/epU6f27dt35MiRo0ePfvHFF998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ZcvgwYPz8/OLi4sPHDiwdOnSV155ZfDgwW+//bZQKGQymcePH//ggw9KS0t37dp17dq18ePH83g8JpMJAQybN2+GUN9Fixa99tprTz/9dGJi4pIlS37zm99cvnwZXLpSqVSv17PZ7LKyMoFA8P333/N4PBqNRiaTq6urIQIBtorhUtt/waUWJ/7cIbVkMjkzM9NkMgkEAq/XSyAQmEym1WqVSCRyuby5ubm6unrixIl/+tOfJk6c+Pbbbz/55JMbN27U6/UQv2UwGAoLC9VqNYIgcrlcq9UymUyn0ykWi3U6XUFBQV5e3uXLl9lstlarValUer2exWJVV1cXFhaOHDly3LhxCQkJp0+f5nA4dDr99OnTf/rTny5cuJCdnb169eqpU6dmZGQsXrw4Ly9Pq9VKJJKNGzempqY+8cQTqampgwcPnjZt2qhRo/74xz+eOHHi+vXraWlpY8aMmTRp0uLFi3/729+mpKTMmjVr8uTJM2bMWL58uVQqra6uVqvVLBaLx+NJpVIGg+F0OrVard/vNxgMFApFJBKtXbu2tbUV9v7Gu69w7hJcanHiDxbmBY+pVOr58+cbGxv9fr9Wqw2Hw+ByDQQCLpdLr9cvX778j3/848aNGwUCAZVKfe211zZs2PD6668/9thjH374IY/H43K5oLl0Ot1ut1dUVDidTnARnDt37vHHH//oo4+kUqlcLieRSAKBoKioqLCw8LnnnnvooYfkcvn8+fMTEhK+/fbbN95447e//e0jjzwyevToV199lUgkXrhw4datWxcvXvz666+Li4uvXbs2Z86c+fPnP/fcc7AP7eTJkzt37nzmmWfOnz/P4XCGDRs2Y8aMrVu3fvLJJ0888URaWtqOHTvWrl07ceLEo0eP0un0ioqKvLy8rKws8BvAiplEIqFSqRwOp6SkpLi4+L333oOTA/uJcfojuNTixB80JgNLNBqtrq7++uuvnU5nOBzW6/W1tbVisbipqclms2m1WovFcvDgwYSEhOTk5PPnzxOJxPLy8pKSkmeeeSYhIWHJkiWffvrpxo0bjxw5snPnzq1bt7777rs3b96k0Wjr1q175513EhMT//CHPwwaNOjLL7/ct2/f9OnTX3rppXnz5m3btm358uWHDh0qLS1ds2bNb37zm9zcXL1e//LLLyckJOzbt2/dunXz5s2bN29eSkrK4sWL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zAwJCeHm5v7xxx+VlZW1tLQ2bdo0ffp0olWioKDw008/jRs37sCBA+fOnbt27ZqysvIvv/yipqZmZmYWGhp68+ZN2EC///778uXLlZSUtm7dOnHiRA0NDVNTU0dHR/j64ChXUFBYsmTJvHnzRo0axcnJaW1t7ebmtnv3bk1Nzejo6N9//11YWHj79u1CQkL8/PxOTk7ILEQKfFlZmYKCAs6bvr6+YU61RK92586d1tbW4eHhqHBdtmzZpEmTYMXAKfP999/v3bs3Li4uOjra1dV19erVV65cQfo6sms9PT1Rkenl5XXo0CFubm6oDTk4OGzdunXXrl3QCRMQEPD39+fm5vby8lqzZo2qqurq1avnzJmTlJRkb2+/detWd3d3iEVpaWkZGBhwcnKKiIjs379/1qxZsrKyfn5+2traGzZsmDhxIhcX14QJE6ZMmRIQECArK7v3cHwUAAAgAElEQVRixYpffvnlxo0bBQUFOjo62traMjIy/Pz8CxYsgGN+5syZ+vr6KMFIS0srKSkxNjbevn07EdMc5FTLpHEuk8nctGmThYVFZGQk8sn19fVXrVpla2u7atWqsLCwkpISSALFxcW5ubmNHz9+7ty5CFNMmzZtzJgxs2fP9vHxyc7O9vb2vn///vLly+3t7ePi4oKCguBVCAsLQ2qRk5MTLy/vhg0bZs+e/eOPP16+fHnRokUCAgILFy4UFBQ0Nja2srL6/fffdXR05s2bp6KiAj0wb2/v9evXq6urOzk5jRo1ipubOywsTExMbMWKFSdPnhQREdm1axfuKHv37p09e/aUKVPWrFkzduzYCRMmaGpqrlu3bty4cVu3bn3w4IGbmxsvL6+YmJicnNzkyZO/++47BMe2bduGauC0tDQpKank5OTW1lZWP6u/AThqERaTkJBgMBihoaFWVlbffffdxIkTR48ezcHBMXbsWHV1dUVFxe+++05aWtrR0XHt2rXff//9d999N2HCBC8vr4cPH8LukZeXf/TokaenZ1xcXHBw8Lp16xQUFKytrbFT4uPjnzx54uLisnfvXuxocXFxXl7eH374YerUqaNHj541a5aGhoaPj4+oqCgHB8e6detcXV1x81i3bt2cOXOmTp164cIFrJaffvpp7dq1o0aNGjVq1KpVqwwNDcXFxcePH3/jxo309PRFixZJSkqamJjMmzePg4Nj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" alt="" />

0x2: 使用struts2标签

标签库开发包括两个步骤

. 开发标签处理类
. 定义标签库定义文件

struts2框架已经完成了这两个步骤,即struts2既提供了标签的处理类,也提供了struts2的标签库定义文件
struts-tags.tld

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<description><![CDATA["To make it easier to access dynamic data;
the Apache Struts framework includes a library of custom tags.
The tags interact with the framework's validation and internationalization features;
to ensure that input is correct and output is localized.
The Struts Tags can be used with JSP FreeMarker or Velocity."]]></description>
<display-name>Struts Tags</display-name>
<tlib-version>2.3</tlib-version>
<!-- 指定该标签库默认的短名 -->
<short-name>s</short-name>
<!-- 指定该标签库默认的URI -->
<uri>/struts-tags</uri>
...
</taglib>

为了使JSP页面具有更好的兼容性,因此建议定义struts2标签库的URI时,使自定义的struts2标签库URI和默认的URI相同
使用struts2标签必须先导入标签库,在JSP页面中使用如下代码导入struts2标签库

<!-- 导入struts2标签库 -->
<%@taglib prefix="s" uri="/struts-tags"%>

0x3: struts2的OGNL表达式语言

struts2利用内建的OGNL(Object Graph Navigation Language)表达式语言支持,大大加强了struts2的数据访问功能,XWork在原有的OGNL基础上,增加了对ValueStack的支持

OGNL表达式语言和JSP2EL的作用完全相似,在struts2应用中,视图页面可通过标签直接访问Action属性值,struts2自己维护了一个大的容器,Action将数据放入其中,而JSP页面可从其中取出数据,以此达到JSP直接访问Action的效果。当Action属性不是简单值(基本类型值或String类型值)时,而是某个对象,甚至是数组、集合时,就需要使用表达式语言来访问这些对象、数据、集合的内部数据了,struts2利用OGNL表达式语言来实现这个功能。实际上,OGNL并不是真正的编程语言,只是一种数据访问语言

在传统的OGNL表达式求值中,系统会假设只有一个"根"对象,下面是标准OGNL表达式求值,如果系统的Stack Context中包含两个对象

. foo对象: 它在Context中的名字为foo
. bar对象: 它在Context中的名字为bar,并将foo对象设置成Context的根对象

如下代码

//返回foo.getBlah()方法的返回值
#foo.blash
//返回bar.getBlah()方法的返回值
#bar.blah
//因为foo是根对象,所以默认是取得foo对象的blah属性
blah

OGNL表达式的语法非常简洁

#bar.foo.blah
//返回bar.GetFoo().getBlah()方法的返回值,如果需要访问的属性属于根对象,则可以直接访问该属性,否则必须显式指定一个对象名作为前缀修饰该属性

struts2可以直接从对象中获取属性,struts2提供了一个特殊的OGNL Property Accessor(属性访问器),它可以自动搜寻Stack Context的所有实体(沿着栈顶从上到下),直到找到与求值表达式匹配的属性,例如

Stack Context中包括两个"根实例"
. animal(栈顶元素)
) name属性
) species属性
. person(紧跟在栈顶元素之后)
) name属性
) salary属性 //返回animal.getSpecies()方法的返回值
species
//返回person.getSalary()方法的返回值
salary
//因为struts2先找到animal实例,返回animal.getName()方法的返回值
name
//直接取得person实例的name属性,需要显式声明
#person.name
//还可以通过索引来访问Stack Context中的对象
//返回animal.getName()方法的返回值,struts2的"属性访问器"会自动从上到下搜索Stack Context
[].name
//返回person.getName()方法的返回值
[].name
//值得注意的是,索引的方式并不是直接取得指定元素,而是从指定索引开始向下搜索,直到搜索到为止

struts2使用标准的Context来进行OGNL表达式语言求值,OGNL的*对象是一个Context,这个Context对象就是一个Map类型,其根对象就是ValueStack,如果需要访问ValueStack里的属性,直接通过如下方式即可

//取得ValueStack中的bar属性
${bar}

除此之外,struts2还提供了一些命名对象,但这些命名对象都不是Stack Context的"根对象",它们只是存在于Stack Context中,所以访问这些对象时需要使用#前缀来指明

. parameters对象: 用于访问HTTP请求参数,例如#parameters["foo"]、#parameters.foo,用于返回调用HttpServletRequest的getParameter("foo")方法的返回值
. request对象: 用于访问HttpServletRequest的属性,例如#request["foo"]、#request.foo,用于返回调用HttpServletRequest的getAttribute("foo")方法的返回值
. session对象: 用于访问HttpSession的属性,例如#session["foo"]、#session.foo,用于返回调用HttpSession的getAttribute("foo")方法的返回值
. application对象: 用于访问ServletContext的属性,例如#application["foo"]、#application.foo,用于返回调用ServletContext的getAttribute("foo")方法的返回值
. attr对象: 该对象将依次搜索如下对象中的属性
) PageContext
) HttpServletRequest
) HttpSession
) ServletContext

梳理下OGNL中StackContext和ValueStack两个概念

. Stack Context: 是整个OGNL计算、求值的Context
. ValueStack只是StackContext内的"根对象",OGNL的Stack Context里除了包括ValueStack这个根之外,还包括parameters、request、session、application、attr等命名对象,但这些命名对象都 不是根
Stack Context中的"根对象"和普通命名对象的区别在于
) 访问Stack Context里的普通命名对象需要在对象名之前添加#前缀
) 访问OGNL的Stack Context里"根对象"的属性时,可以省略对象名 . 访问方式的区别
) 访问OGNL*对象ValueStack
//取得ValueStack中的bar属性
${bar}
当系统创建了Action实例后,该Action实例已经被保存到ValueStack中,故无须书写#即可访问Action属性 ) 访问OGNL普通命名对象
//返回调用HttpServletRequest的getParameter("foo")方法的返回值
例如#parameters["foo"]、#parameters.foo

0x4: OGNL中的集合操作

使用OGNL表达式可以直接创建集合对象

//创建一个List类型集合,该集合包含3个元素
{e1, e2, e3}

直接生成Map类型集合的语法为

//创建一个Map类型的集合,该Map对象中每个key-value对象之间以冒号分割
#{key:value1, key2:value2, ...}

对于集合,OGNL提供了两个运算符

. in: 判断某个元素是否在指定集合中
. not in: 判断某个元素是否不再指定集合中

如下代码

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:if test"'foo' in {'foo','bar'}">
include
</s:if>
<s:else>
not include
</s:else>
<s:if test"'foo' not in {'foo', 'bar'}">
not include
</s:if>
<s:else>
include
</s:else>
</body>
</html>

除此之外,OGNL还允许通过某个规则取得集合的子集,取得子集有如下三个操作符

. ?: 取出所有符合选择逻辑的元素
. ^: 取出符合选择逻辑的第一个元素
. $: 取出符合选择逻辑的最后一个元素
//person.relatives.{? #this.gender == 'male'}
在上面的代码中,直接在集合后紧跟.{}运算符表明用于取出该集合的子集,在{}内使用?表明取出所有符合选择逻辑的元素,而#this代表集合里元素,因此,上面代码的含义是: 取出person集合中所有gender属性为male的relatives集合

可以看到,OGNL表达式语言和JSP2表达式语言作用相似,但OGNL表达式语言的功能更加强大,使用OGNL可以通过URL访问的方式直接和struts2的Action直接进行交互,甚至进行实例创建、属性修改等编程操作

0x5: 访问静态成员

struts2 OGNL表达式提供了一种访问静态成员(调用静态方法、访问静态Field)的方式,但struts2默认关闭了访问静态方法,只允许通过OGNL表达式访问静态Field,为了让OGNL表达式可以访问静态成员,应该在struts2应用中将struts.ognl.allowStaticMethodAccess设置为true

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="crazyit" extends="struts-default">
</package> <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
</struts>

一旦进行了如上设置,则OGNL表达式可以通过如下语法来访问静态成员

@className@staticField
@className@staticMethod(val..)

JSP页面使用如下方式来访问静态Field和静态方法

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
access system environment var: <s:property value="@java.lang.System@getenv('JAVA_HOME')"/> <br/>
PI: <s:property value="@java.lang.Math@PI"/>
</body>
</html>

0x6: lambda()表达式

OGNL支持基本的Lambda()表达式语法,通过这种Lambda表达式语法,可以让我们在OGNL表达式语言中使用一些简单的函数

if n== return ;
elseif n== return ;
else return fib(n-)+fib(n-);
//我们可以使用OGNL表达式将以上的斐波那契数列进行实现
<s:property value="#fib=:[#this==0 ? 0 : #this==1 ? 1 : #fib(#this-2) + #fib(#this-1)], #fib(11)"/>

0x7: 控制标签

0x8: 数据标签

1. action标签

使用action标签可以允许在JSP页面中直接调用Action,使用action标签有如下几个属性

. var: 可选属性,一旦定义了该属性,该Action将被放入ValueStack中,该属性可用id代替,但推荐使用var
. name: 必填属性,通过该属性指定该标签调用哪个Action
. namespace: 可选属性,该属性指定该标签调用的Action所在的namespace
. executeResult: 可选属性,该属性指定是否要将Action的处理结果页面包含到本页面,默认值是false
. ignoreContextParams: 可选参数,它指定该页面中的请求参数是否需要传入调用的Action,默认是false,即不忽略,需要传入

TagAction.java

package crazyit;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class TagAction extends ActionSupport
{
private String author;
public String getAuthor()
{
return this.author;
}
public void setAuthor(String author)
{
this.author = author;
} public String execute() throws Exception
{
return "done";
} public String login() throws Exception
{
ActionContext.getContext().put("author", getAuthor());
return "done";
}
}

上面的Action类包含了两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="crazyit" extends="struts-default">
<action name="tag1" class="crazyit.TagAction">
<result name="done">succ.jsp</result>
</action>
<action name="tag2" class="crazyit.TagAction" method="login">
<result name="done">Loginsucc.jsp</result>
</action>
</package> <constant name="struts.ognl.allowStaticMethodAccess" value="true"/>
</struts>

上面的配置文件将一个Action类定义成两个逻辑Action,可以在JSP页面中通过<s:actino../>标签来调用这两个逻辑Action

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
调用第一个Action,并将结果包含到本页面中
<s:action name="tag1" executeResult="true"/> <br/> 调用第二个Action,并将结果包含到本页面中,但阻止本页面请求参数传入Action
<s:action name="tag2" executeResult="true" ignoreContextParams="true"/><br/> 调用第三个Action,且并不将结果包含到本页面中
<s:action name="tag2" executeResult="false"/><br/>
</body>
</html>

2. bean标签

标签用于创建创建一个JaveBean实例,创建JavaBean实例时,可以在该标签体内使用<param..>标签为该JavaBean实例传入属性,使用bean标签时可以指定如下两个属性

. name: 必填属性,该属性指定要实例化的JavaBean的实现类
. var: 可选属性,如果指定了该属性,则该JavaBean实例会被放入Stack Context中,并放入requestScope中,该var属性可用id属性代替,但推荐使用var属性

在bean标签的标签体内,bean标签创建的JavaBean实例位于ValueStack的顶端,但一旦该bean标签结束了,则bean标签创建的JavaBean实例被移出ValueStack(一个map结构),将无法再次访问该JavaBean实例,除非指定了var属性,则还可通过Stack Context来访问该实例

package crazyit;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class Person extends ActionSupport
{
private String name;
private String age; //name
public String getName()
{
return this.name;
}
public void setName(String name)
{
this.name = name;
} //age
public String getAge()
{
return this.age;
}
public void setAge(String age)
{
this.age = age;
} public String execute() throws Exception
{
return SUCCESS;
} }

提供了上面的Person类后,就可以在JSP页面中通过<s:bean../>标签来创建该JavaBean的实例

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<!-- 使用bean标签创建一个Person类的实例 -->
<s:bean name="crazyit.Person">
<!-- 使用param标签为Person类的实例传入参数 -->
<s:param name="name" value="'LittleHann'"/>
<s:param name="age" value=""/>
<!-- 因为在bean标签内,Person实例位于ValueStack的栈顶,故可以直接访问Person实例 -->
Person.name: <s:property value="name"/><br/>
Person.age: <s:property value="age"/>
</s:bean>
</body>
</html>

除此之外,我们还可以在使用<s:bean/>标签时指定var属性,如果指定了var属性后,就可以将该JaveBean实例放在Stack Context中(并放入requestScope中)了,这样即使不在<s:bean..>标签内,也可以通过该var属性来访问该JavaBean实例

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<!-- 使用bean标签创建一个Person类的实例,为其指定了var属性 -->
<s:bean name="crazyit.Person" var="p">
<!-- 使用param标签为Person类的实例传入参数 -->
<s:param name="name" value="'LittleHann'"/>
<s:param name="age" value=""/>
</s:bean> <!-- 根据JavaBean实例指定的var属性来访问JavaBean实例 -->
Person.name: <s:property value="#p.name"/><br/>
Person.age: <s:property value="#p.age"/> </body>
</html>

0x9: 主题和模版

因为struts2所有的UI标签都是基于主题和模版的,主题和模版是struts2所有UI标签的核心

. 模版是一个UI标签的外在表现形式
. 如果为所有的UI标签都提供了对应的模版,那么这系列的模版就会形成一个主题

0x10: 自定义主题

0x11: 表单标签

0x12: 非表单标签

Relevant Link:

https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CB4QFjAA&url=%68%74%74%70%3a%2f%2f%77%77%77%2e%33%36%30%64%6f%63%73%2e%6e%65%74%2f%77%6f%72%64%2d%64%6f%77%6e%6c%6f%61%64%2f%32%32%37%33%62%31%64%35%62%39%66%33%66%39%30%66%37%36%63%36%31%62%37%36%2d%31%2e%64%6f%63&ei=KV-TVbfpA9iC8gXwzKGgAQ&usg=AFQjCNFu7Ch3-jAOZ9V-OsOlobH2B7yk4g&bvm=bv.96952980,d.dGc 

Copyright (c) 2015 LittleHann All rights reserved