Struts2系列笔记(2)---Struts.XML
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的更多相关文章
- struts2 一个简洁的struts.xml
struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUB ...
- struts2系列笔记(1)
struts2框架 如果你之前在MVC模式的时候一直都是通过servlet,获取和返回数据,那么现在开始学习struts2框架, Struts是一个实现MVC设计模式的优秀的框架.它的许多优点我就不说 ...
- Struts2系列笔记(4)---Ation类访问servlet
Ation类访问servlet Ation类有三种方式servlet: (1)间接的方式访问Servlet API ---使用ActionContext对象 (2) 实现接口,访问Action时完 ...
- Struts2系列笔记(7)---Struts2类型转换
Struts2类型转换 struts2中内置了大量的类型转换器用来完成数据类型转换的问题,这篇随笔主要通过两个方面来写Struts类型转换 1:Struts2内置的类型转换器 2:如何自定义 ...
- struts2简单入门-配置文件-struts.xml
struts.xml 作用:配置struts中的action,result,package,全局action,result,等等. 基本文件格式: <?xml version="1.0 ...
- struts2核心配置之struts.xml
struts.xml -常量配置 -包配置 -包含配置 一.常量配置 struts2常量的配置通常采用三种方式: 1.在struts.xml中使用<constant>元素配置常量 < ...
- Struts2 学习笔记15 Struts标签 part1
来说一下Struts标签,之前我们也很多地方用到了,还是来总结一下. 首先是property标签. <li>property:<s:property value="user ...
- mybatis系列笔记(3)---SqlMapConfig.xml解析
SqlMapConfig.xml SqlMapConfig.xml是Mybatis的全局配置参数,关于他的具体用的有专门的MyBatis - API文档,这里面讲的非常清楚,所以我这里就挑几个讲下: ...
- Struts2 学习笔记16 struts标签 part2
接下来说一下if标签.下面是结果图. <li><s:if test="#parameters.age[0]<0">error!</s:if> ...
随机推荐
- C语言实现求字符串子集问题
这个问题在于实现Apriori算法的时候需要求各个频繁集的关联规则,而这时需要在求得最大的频繁集中求各个频繁集的真子集.然后在实现这一步的时候被卡主了,第一反应是用递归完成,但是面对数据挖掘中庞大的项 ...
- JAVA中传递参数乱码问题
url传递中文如果jsp页面,myeclipse.web.xml中org.springframework.web.filter.CharacterEncodingFilter,都是UTF-8编码,直接 ...
- mysql的 charset、collation、prefix了解
charset,即字符集. collation,用于指定数据集如何排序,以及字符串的比对规则,即排序规则. prefix,即数据库里表使用的前缀. /************************* ...
- LPC1768的USB使用--宏定义
#ifndef __USBREG_H #define __USBREG_H /* usb设备中断定义 usb_devintst usb_devinten usb_devintclr usb_devin ...
- Linux下部署
moto66@163.com 0144586wei 郭 2015/3/23 星期一 9:29:38 服务器密码:0144586Wei120.26.62.247
- 创建和使用MySQL计划事件
查看事件调度程序线程的状态: SHOW PROCESSLIST; 要启用和启动事件调度程序线程命令: SET GLOBAL event_scheduler = ON; 禁用和停止事件调度程序线程: S ...
- c#和java中的方法覆盖——virtual、override、new
多态和覆盖 多态是面向对象编程中最为重要的概念之一,而覆盖又是体现多态最重要的方面.对于像c#和java这样的面向对象编程的语言来说,实现了在编译时只检查接口是否具备,而不需关心最终的实现,即最终的实 ...
- bug工具
在线工具:柠檬bug管理--兼顾项目管理 开源工具:PPM Bug 缺陷管理系统 项目管理.bug管理:http://www.bugfree.cn
- osgEarth学习笔记(转载)
osgEarth学习笔记1. 通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染:所以如果 ...
- Selenium2(java)环境搭建 一
Selenium2(java)环境搭建 1.下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2 ...