Struts2.xml

本篇博客主要讲struts.xml中package下的标签和标签属性,主要分以下四个部分说明:

(1)action的配置基本属性

(2)同一个Action类中不同方法满足不同的action逻辑

(3)通配符解决多业务问题

(4)配置处理结果:

(1)action的配置基本属性

  <!--首先声明本片文章基本还是参考http://www.cnblogs.com/Nouno/p/5683447.html的博客,特此说明-->
<?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>
<!-- /primer/helloWorldAction.action
package:包
* name:包名,唯一的,必选项
* namespace:命名空间,唯一的,相当于房间号。可选项,省略情况下是"/"。页面中请求连接的前半部分
* extends:继承
* extends="struts-default":struts2框架底层提供的核心包struts2-core-2.3.3.jar下的struts-default.xml文件
* 为什么要继承这个struts-default.xml文件?
* 因为struts2框架底层提供的struts-default.xml声明了所有的拦截器和拦截器栈,
知道在struts2框架运行时执行struts-default.xml文件中的拦截器栈。
* 如果不继承struts-default.xml文件,就没有办法使用struts2框架提供的所有拦截器
-->
<package name="primer" namespace="/" extends="struts-default"> <!--
如果找不到对应的action名的时候,配置默认要执行的action
* name:指定action的名称
-->
<default-action-ref name="error"></default-action-ref>
25
<action name="error" class="com.yyc.struts.action.ErrorAction">
<result name="error">/error.jsp</result>
</action>
<!--
action:
* name:对应页面中请求连接的后面半部分,这里表示jsp请求链接为hello.action才会和它匹配
* class:对应要执行的类的完整路径 ,表示Action类的完整路径,相当于之前的servlet类
*method:对应的class类中要执行的方法,默认执行method="execute()"
-->
<action name="hello" class="cn.yht.primer.HelloWorldAction" method="execute()">
<!--
result:结果类型 ,可以用来把Action类处理好的数据跳转到某界面
* name:对应的是执行的类的方法的返回值
public String execute() throws Exception {
System.out.println("HelloWorldAction ************* execute()");
return "success";
}
* 默认判断name="success",后半部分的文本内容:要转向到的页面
-->
<result name="success">/primer/success.jsp</result>
</action>
<!--
没有为action指定class
* 在struts2框架底层的struts-default.xml文件中,配置了默认执行的类
com.opensymphony.xwork2.ActionSupport
public String execute() throws Exception {
return SUCCESS;
}
* 实际上,默认执行的是底层提供的ActionSupport类的execute()方法
* result结果类型,默认是根据struts2框架底层提供的ActionSupport类的execute()方法返回值,进行跳转
-->
<action name="actionNoClass">
<result name="success">/primer/success.jsp</result>
</action>
</package>
</struts>

(2)同一个Action类中不同方法满足不同的action逻辑

 <!--这个Action中有两个方法
public class ProductAction extends ActionSupport {
public String add(){
System.out.println("添加商品");
return NONE;
}
public String del(){
System.out.println("删除商品");
return NONE;
}
}--> <!-- 多个业务需求 -->
<action name="addBook" class="com.guigu.struts.action.BookAction" method="add"></action>
<action name="delBook" class="com.guigu.struts.action.BookAction" method="del"></action>
<!--这样确实能够实现一个Action类中的不同方法,都能被调用
但是你也许会注意到,每调用一个方法都需要配置action-->

(3)通配符解决多业务问题

 <!--这里是jsp文件
<h1>客户管理</h1>
<a href="${pageContext.request.contextPath }/customer_add">添加客户</a><br/>
<a href="${pageContext.request.contextPath }/customer_del">删除客户</a><br/>
<a href="${pageContext.request.contextPath }/customer_edit">修改客户</a><br/>
<a href="${pageContext.request.contextPath }/customer_find">查询客户</a><br/>
-->
<!-- 使用通配符解决多业务问题 -->
<!-- method 属性{1}是取第一个* ,这样就只需要写一个action就可以了,我们只要在Action类中写好相对应的方法即可-->
<action name="customer_*" class="com.guigu.struts.action.CustomerAction" method="{1}">
<result >/demo1/{1}.jsp</result>
</action>

(4)配置处理结果: 

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

Struts2通过在struts.xml文件中使用<result …/>元素来配置结果。Struts2提供了两种结果。

a.局部结果:将<result …/>作为<action …>元素的子元素配置。

b.全局结果:将<result …/>作为<global-results …>元素的子元素配置。

在package元素中配置<global-results>子元素:

<!--全局result(global-results)
有很多时候一个<result>可供很多<action>使用,这时可以使用<global-results>标签来定义全局的<result>l。执行顺序:当一个Action返回的String没有相应的<result>与之对应,Struts2就会查找全局的<result>。--> <global-results> <result name="error">/Error.jsp</result>
<result name="invalid.token">/Error.jsp</result>
<result name="login" type="redirect-action">Logon!input</result> </global-results>

欢迎大家留言指点!

Struts2系列笔记(2)---Struts.XML的更多相关文章

  1. struts2 一个简洁的struts.xml

    struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUB ...

  2. struts2系列笔记(1)

    struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...

  3. Struts2系列笔记(4)---Ation类访问servlet

    Ation类访问servlet Ation类有三种方式servlet: (1)间接的方式访问Servlet API  ---使用ActionContext对象 (2)  实现接口,访问Action时完 ...

  4. Struts2系列笔记(7)---Struts2类型转换

    Struts2类型转换      struts2中内置了大量的类型转换器用来完成数据类型转换的问题,这篇随笔主要通过两个方面来写Struts类型转换 1:Struts2内置的类型转换器 2:如何自定义 ...

  5. struts2简单入门-配置文件-struts.xml

    struts.xml 作用:配置struts中的action,result,package,全局action,result,等等. 基本文件格式: <?xml version="1.0 ...

  6. struts2核心配置之struts.xml

    struts.xml -常量配置 -包配置 -包含配置 一.常量配置 struts2常量的配置通常采用三种方式: 1.在struts.xml中使用<constant>元素配置常量 < ...

  7. Struts2 学习笔记15 Struts标签 part1

    来说一下Struts标签,之前我们也很多地方用到了,还是来总结一下. 首先是property标签. <li>property:<s:property value="user ...

  8. mybatis系列笔记(3)---SqlMapConfig.xml解析

    SqlMapConfig.xml SqlMapConfig.xml是Mybatis的全局配置参数,关于他的具体用的有专门的MyBatis - API文档,这里面讲的非常清楚,所以我这里就挑几个讲下: ...

  9. Struts2 学习笔记16 struts标签 part2

    接下来说一下if标签.下面是结果图. <li><s:if test="#parameters.age[0]<0">error!</s:if> ...

随机推荐

  1. Html标签中Alt和Title都是提示性语言标签

    在Html标签中Alt和Title都是提示性语言标签,在我们浏览一些网页时,鼠标停留在一张图片或文字链接上时,在鼠标的右下角出现一个提示信息框,对目标进行一定的注释说明,这就是它们的作用.    其中 ...

  2. CodeForces 631B Print Check

    对于每一个格子,看是行最后画还是列最后画.预处理一下就可以了. #include<stdio.h> #include<string.h> int n,m,k; +]; +]; ...

  3. 21、手把手教你Extjs5(二十一)模块Form的自定义的设计

    前面几节完成了模块Grid的自定义,模块Form自定义的过程和Grid的过程类似,但是要更复杂一些.先来设计一下要完成的总体目标. 1、可以有多个Form方案,对应于显示.新增.修改.审核.审批等功能 ...

  4. team talk 主要框架

    Android TeamTalk的原型是Android-IM, 注:本文假设你已经有Android开发环境,且对Android开发的基本常识有所了解 本文以eclipse为例启动Eclipse,导入A ...

  5. asp.net-mvc验证码 asp.net-mvc c#验证码

    验证码看不清换一组 写一个类 public class ValidateCode { public ValidateCode() { } /// <summary> /// 验证码的最大长 ...

  6. iOS 开发之动画篇 - 从 UIView 动画说起

    毋庸置疑的:在iOS开发中,制作动画效果是最让开发者享受的环节之一.一个设计严谨.精细的动画效果能给用户耳目一新的效果,吸引他们的眼光 —— 这对于app而言是非常重要的. 本文作为动画文集的第一篇, ...

  7. STM32 USB 问题汇总(转)

    源:STM32 USB 问题汇总 汇总1:STM32的USB例程修改步骤,来自http://blog.csdn.net/cy757/archive/2010/01/01/5117610.aspx 以下 ...

  8. iOS调用相机,相册,上传头像 分类: ios技术 2015-04-14 11:23 256人阅读 评论(0) 收藏

    一.新建工程 二.拖控件,创建映射 三.在.h中加入delegate @interface ViewController : UIViewController 复制代码 四.实现按钮事件 -(IBAc ...

  9. Oracle的一些命令

    sqlldr: 一般用于导入以任何后缀结束的文件,我这次就是因为要导入一张以.20160101为后缀的文件,当初简直束手无策 结合input.ctl使用,可以在DOS下使用,可以对一张表导入数十万,百 ...

  10. Php连接及读取和写入mysql数据库的常用代码

    在这里我总结了常用的PHP连接MySQL数据库以及读取写入数据库的方法,希望能够帮到你,当然也是作为我自己的一个回顾总结. 1.为了更好地设置数据连接,一般会将数据连接所涉及的值定义成变量. $mys ...