关于struts.xml的配置思考。
针对方便的配置struts.xml。
一般的配置样式
<package name="default" extends="struts-default.xml">
<interceptors>
<interceptors-stack name="acStack">
<interceptors-ref name="param" />
<interceptors-ref name="default" />
</interceptors-stack>
</interceptors>
<action name="login" class="com.zengzhi.user.LoginAction" method="login">
<result name="success">/WEB-INF/login/login.jsp</result>
</action>
</package>
一 namespace可选属性解析
namespace为action的命名空间。
情况分析 1. namespace="/" ,则所有的*.action都可以到达。
2. namespace="apple" ,则 /apple/*.action可以到达,如果没有找到对应的action,则会到namespace="/" 去寻找action。
3. namespace="apple/fi",则apple/fi/*.adction可以到达,如果没有找到对应的action,则会到namespace="/" 去寻找action。
二 extends可选属性
extends表示,该包继承于其它包,可以继承其它包中的拦截器和action定义。一般情况下使用 extends="struts-default",因为struts自带struts-default比较全面。
三 多种action配置解析
1. 最简单的action配置
<action name="login" class="com.zengzhi.user.LoginAction">
<result name="success">/WEB-INF/login/login.jsp</result>
</action>
2.动态分配action的配置,一个action包含多个处理逻辑
需要在jsp中请求action的格式为,login!regist ,请求的为login Action处理,处理的方法为rejist
3.指定method属性。
<action name="login" class="com.zengzhi.user.LoginAction" method="login">
<result name="success">/WEB-INF/login/login.jsp</result>
</action>
4.同一个action使用通配符配置method {1}代表第一个*号,{2}则代表第二个*号
<action name="*Action" class="com.zengzhi.user.LoginAction" method="{1}">
<result name="success">/WEB-INF/login/login.jsp</result>
</action>
5.使用通配符去匹配class
<action name="*Action" class="com.zengzhi.user.{1}Action" >
<result name="success">/WEB-INF/login/login.jsp</result>
</action>
6.使用通配符 同时去配置method和class。
<action name="*_*" class="com.zengzhi.user.{1}Action"method="{2}">
<result name="success">/WEB-INF/login/login.jsp</result>
</action>
7.使用通配符去配置result元素。
<action name="*" class="com.zengzhi.user.LoginAction" method="execute">
<result name="success">/WEB-INF/login/{1}.jsp</result>
</action>
8.配置默认的action
在默认的namespace"/"中配置默认的action,就可以让该action能够处理所有请求。
<package name="default" extends="struts-default.xml">
<default-action-ref name="example">
<action name="example" class="com.zengzhi.user.LoginAction" method="login">
<result name="success">/WEB-INF/login/login.jsp</result>
</action>
</package>
具体情况如下所示
注意如果在配置文件中action存在 name="*" 、name="*Action" 、name="loginAction",页面请求loginAction ,则请求交给name="loginAction"的类处理,如果页面请求rejistAction,则在name="*" 、name="*Action" 中,先找到谁,就是谁处理。
四、配置默认的action处理类
如果在action的配置中,不配置class属性,则系统使用默认的ActionSupport处理请求。
同时也允许开发者使用自己定义的action来当做默认的action处理类
<package name="default" extends="struts-default.xml">
<default-class-ref name="com.zengzhi.user.LoginAction">
</package>
在开发的过程中,如果躲在package继承了struts-default,那么Action默认的处理类就是ActionSupport
五、result属性
<action name="example" class="com.zengzhi.user.LoginAction" method="login">
<result name="success" type="dispatcher">/WEB-INF/login/login.jsp</result>
</action>
其中,若不配置result的name或者type属性,则使用默认的的属性即 success、dispatcher,如果把type="redirect",则会重定向。
<action name="example" class="com.zengzhi.user.LoginAction" method="login">
<result name="success" type="dispatcher">/WEB-INF/login/{taget}.jsp</result>
</action>
要求在相应的action中存在相应的taget属性,并且有get,set方法。
八、定义全局结果。
<package name="default" extends="struts-default.xml">
<global-results>
<result>/WEB-INF/login/login.jsp</result>
</global-results>
<action name="login" class="com.zengzhi.user.LoginAction" method="rejist">
</action>
<action name="login" class="com.zengzhi.user.LoginAction" method="login">
<result name="success">/WEB-INF/login/login.jsp</result>
</action>
</package>
如上所示,如果设置了全局结果globle-results,则如果在action中有自己的局部result,则局部的result会覆盖掉全局的result,如果没有局部result,则会使用全局result。
九、定义全局异常和局部异常。
action处理,可能会出现很多异常,针对不同的异常,可能需要选择不同的视图去呈现。与全局result和局部result类似,全局异常对所有的action有效,局部异常仅对该异常所在的action有效,如果都存在,则局部异常会覆盖全局异常。
使用struts.xml捕获异常的步骤
1.在acton中抛出异常
if(null.equals(usename)){
throw new MyException("用户名为空");
}
2.配置struts.xml文件,在exception-mapping指定exception和result两个属性,result可以配合全局视图和局部视图关联起来。
<package name="zeng" namespace="apple" extends="struts-default">
<global-results>
<result name="myException">/WEB-INF/exception/exception.jsp</result>
<result name="exception">/WEB-INF/exception/exception.jsp</result>
<result name="error">/WEB-INF/login/login.jsp</result>
</global-results>
<exception-mapping exception="java.sql.SQLException" result="exception" />
<exception-mapping exception="java.lang.Exception" result="error"/>
<action name="*_*" class="com.zengzhi.user.{1}Action" method="{2}">
<exception-mapping exception="MyException" result="myException" />
<result name="success" type="dispatcher">{taget}</result>
</action>
</package>
关于struts.xml的配置思考。相关推荐
- Struts2的struts.xml的配置细节
2019独角兽企业重金招聘Python工程师标准>>> (七)Struts2的struts.xml的配置细节 这里说的struts.xml说到的包含内容如下: 1.include包含 ...
- Struts2的struts.xml的配置细节,OGNL,标签
2019独角兽企业重金招聘Python工程师标准>>> (七)Struts2的struts.xml的配置细节 这里说的struts.xml说到的包含内容如下: 1.include包含 ...
- Struts2教程3:struts.xml常用配置解析
在本文中将详细讲述struts.xml文件的常用配置及注意事项. 1. 使用<include>标签重用配置文件 在Struts2中提供了一个默认的struts.xml文件,但 ...
- Structs2 框架笔记(一)配置文件及struts.xml常用配置
部分摘自授课教师笔记,侵删. 6个配置文件 1. struts-default.xml 位置:struts2-core-2.2.1.jar!struts-default.xml 作用:默认的核心配置文 ...
- struts2配置详解(struts.xml配置详解)
本文转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html struts.xml是我们在开发中利用率最高的文件,也是Stru ...
- struts2.1.6教程二、struts.xml配置及例程
1.配置文件的优先级 在struts2中一些配置(比如常量)可以同时在struts-default.xml(只读性),strtus-plguin.xml(只读性),struts.xml,struts. ...
- Struts2的配置 struts.xml Action详解
在学习struts的时候,我们一定要掌握struts2的工作原理.只有当我们明确了在struts2框架的内部架构的实现过程,在配置整个struts 的框架时,可以很好的进行逻辑上的配置.接下来我就先简 ...
- 【struts2】struts2配置文件—struts.xml
解决在断网环境下,配置文件无提示的问题: 我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为" http://struts.apach ...
- struts2随笔(一)Action、struts.xml、Interceptor细节
Struts2由Struts1和webWork两个经典MVC框架发展起来.与传统的Struts1相比,Struts2允许使用不同的Java对象作为Action.支持更多的视图技术,基于AOP思想的拦截 ...
- Java进阶学习第十六天(Struts框架:配置、数据处理、自动封装、日期类型转换、文件上传)
一.Struts2配置 1.Struts2的Action开发的几种方式 ① 方式1:继承ActionSupport(一般使用方法) public class UserAction extends Ac ...
最新文章
- 数字图像处理笔记二 - 图片缩放(最近邻插值(Nearest Neighbor interpolation))
- vue router按需加载
- linux非lvm分区在线扩容,怎么给不是LVM的根分区扩容
- Android移动开发之【Android实战项目】通过Java代码设置TextView
- 设计模式:建造者模式
- c#中datareader中HasRows属性和Read方法的区别
- mysql 异步 同步 不支持,Mysql 异步/同步/半同步复制
- Javascript基于对象三大特征
- I00025 寻找循环数
- 安居客头部买房部分书写
- 勤哲web配置教程_勤哲Excel服务器新手教程
- Spring源码解析之-doCreateBean() 详解
- vue引入阿里巴巴图标(含彩色图标)
- 吃货联盟订餐系统项目实践
- 十、生产者消费者问题
- PostgreSQL 14 版本发布,快来看看有哪些新特性!
- SQL删除重复记录保留最大值
- 【Nav2中文网】七、配置指南(三)行为树XML节点 之 控制插件--RoundRobin
- aws lambda使用_使用python了解AWS Lambda中的多处理
- ERA5-hourly-total precipitation的单位换算问题:m转为mm