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. 18、手把手教你Extjs5(十八)模块记录的拖放删除、拖放复制新增

    网页当中的拖放(drag-drop)是比较有趣的操作,extjs5中很好的封装了拖放的动作,也有各种类来支持,但是要学好“拖放”这个东西真是很难,特别是象我这样英语不好的人,看不太懂官网上的说明,做一 ...

  2. 在阿里云ECS(CentOS6.5)上安装mysql

    首先查看服务器上是否已经安装过mysql 命令: rpm -qa | grep mysql 结果: 可以看到ECS上已经有mysql-libs这个包了.这并不影响安装. 查看yum服务器上提供的mys ...

  3. Android L(5.0)源码之手势识别GestureDetector

    本人新手,最近下了Android L的源码,正在研究手势识别,能力有限,现总结如下: Android识别触摸屏手势使得用户体验大大提高.在View类中有个View.OnTouchListener内部接 ...

  4. iOS开发——An App ID with identifier "*****" is not avaliable

    Error: An App ID with identifier "*****" is not avaliable. Please enter a different string ...

  5. 基于libUSB的USB设备固件更新程序(下载数据)(转)

    源:基于libUSB的USB设备固件更新程序(下载数据) 本文紧接上一篇日志:基于libUSB-Win32的USB设备固件更新程序(前言),相关背景以及起因等,此处不再赘述,如感兴趣请移步. libU ...

  6. Built-in functions

    转自::http://blog.csdn.net/luyuncheng/article/details/11674123   — Built-in Function: int __builtin_ff ...

  7. XP Mode 虛擬機器 for Windows 7

    免驗證官方直接下載 官網 Download Windows Virtual PC XP Mode for Windows 7 性質 Windows 7 免費 / en 多國 繁體中文(Traditio ...

  8. Java学习(一)

    各种原因就开始java开发快一个月了.一直也没有正式记录一下...现在开始..O(∩_∩)O~.... 先小结一下学习以来遇到的几个问题: 1.myeclipse的常用快捷键: F2当鼠标放在一个标记 ...

  9. 关于浏览器和HTTP协议

    关于浏览器 浏览器的主要功能就是向服务器发出请求,在浏览器窗口中展示想要访问的网络资源.这里资源一般是指 HTML 文档,图片等其他的类型.资源的位置由用户使用 URL(统一资源标示符)指定. 而浏览 ...

  10. UVa 10911 - Forming Quiz Teams

    题目大意:给出2*n个点,将这些点配成n对,使得所有点对中两点的距离之和尽量小. 用一个整数的二进制形式表示一个集合的子集,以每个集合为状态进行状态转移.具体参见<算法竞赛入门经典>9.5 ...