针对方便的配置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",则会重定向。

六、dispatcher与redirect的比较。
dispacher将请求forward(转发)到指定的资源,浏览器地址栏不会改变。
redirect就是重定向了,会丢失所有的请求参数、请求属性,也会丢失action的处理结果,浏览器地址栏会改变。
使用redirect的效果是,会从新产生一个请求,重新产生HttpServletRequest和HttpServletResponse对象。之前的属性会全部丢失。
七、使用OGNL表达式来指定result中的视图资源。

<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的配置思考。相关推荐

  1. Struts2的struts.xml的配置细节

    2019独角兽企业重金招聘Python工程师标准>>> (七)Struts2的struts.xml的配置细节 这里说的struts.xml说到的包含内容如下: 1.include包含 ...

  2. Struts2的struts.xml的配置细节,OGNL,标签

    2019独角兽企业重金招聘Python工程师标准>>> (七)Struts2的struts.xml的配置细节 这里说的struts.xml说到的包含内容如下: 1.include包含 ...

  3. Struts2教程3:struts.xml常用配置解析

    在本文中将详细讲述struts.xml文件的常用配置及注意事项. 1.        使用<include>标签重用配置文件 在Struts2中提供了一个默认的struts.xml文件,但 ...

  4. Structs2 框架笔记(一)配置文件及struts.xml常用配置

    部分摘自授课教师笔记,侵删. 6个配置文件 1. struts-default.xml 位置:struts2-core-2.2.1.jar!struts-default.xml 作用:默认的核心配置文 ...

  5. struts2配置详解(struts.xml配置详解)

    本文转自:http://www.cnblogs.com/fmricky/archive/2010/05/20/1740479.html struts.xml是我们在开发中利用率最高的文件,也是Stru ...

  6. struts2.1.6教程二、struts.xml配置及例程

    1.配置文件的优先级 在struts2中一些配置(比如常量)可以同时在struts-default.xml(只读性),strtus-plguin.xml(只读性),struts.xml,struts. ...

  7. Struts2的配置 struts.xml Action详解

    在学习struts的时候,我们一定要掌握struts2的工作原理.只有当我们明确了在struts2框架的内部架构的实现过程,在配置整个struts 的框架时,可以很好的进行逻辑上的配置.接下来我就先简 ...

  8. 【struts2】struts2配置文件—struts.xml

    解决在断网环境下,配置文件无提示的问题: 我们可以看到Struts.xml在断网的情况下,前面有一个叹号,这时,我们按alt+/ 没有提示,这是因为" http://struts.apach ...

  9. struts2随笔(一)Action、struts.xml、Interceptor细节

    Struts2由Struts1和webWork两个经典MVC框架发展起来.与传统的Struts1相比,Struts2允许使用不同的Java对象作为Action.支持更多的视图技术,基于AOP思想的拦截 ...

  10. Java进阶学习第十六天(Struts框架:配置、数据处理、自动封装、日期类型转换、文件上传)

    一.Struts2配置 1.Struts2的Action开发的几种方式 ① 方式1:继承ActionSupport(一般使用方法) public class UserAction extends Ac ...

最新文章

  1. 数字图像处理笔记二 - 图片缩放(最近邻插值(Nearest Neighbor interpolation))
  2. vue router按需加载
  3. linux非lvm分区在线扩容,怎么给不是LVM的根分区扩容
  4. Android移动开发之【Android实战项目】通过Java代码设置TextView
  5. 设计模式:建造者模式
  6. c#中datareader中HasRows属性和Read方法的区别
  7. mysql 异步 同步 不支持,Mysql 异步/同步/半同步复制
  8. Javascript基于对象三大特征
  9. I00025 寻找循环数
  10. 安居客头部买房部分书写
  11. 勤哲web配置教程_勤哲Excel服务器新手教程
  12. Spring源码解析之-doCreateBean() 详解
  13. vue引入阿里巴巴图标(含彩色图标)
  14. 吃货联盟订餐系统项目实践
  15. 十、生产者消费者问题
  16. PostgreSQL 14 版本发布,快来看看有哪些新特性!
  17. SQL删除重复记录保留最大值
  18. 【Nav2中文网】七、配置指南(三)行为树XML节点 之 控制插件--RoundRobin
  19. aws lambda使用_使用python了解AWS Lambda中的多处理
  20. ERA5-hourly-total precipitation的单位换算问题:m转为mm

热门文章

  1. [转]飞鸟集 Stray Bird
  2. 2D游戏案例:雷霆战机
  3. 如何查看一个网站的robots文件?
  4. 一文让你初步了解壮族——一个奇葩但同样优秀的民族
  5. BiDi单纤双向光模块全解析
  6. KMP(看毛片)NEXT数组模板
  7. w10计算机管理员权限解除,win10系统取消管理员身份运行图标的详细步骤
  8. python unpack java,Java中的python struct.unpack - java
  9. WIN7各种系统大全
  10. 如何将 Laravel 数据表里的数据导出成 Seeder 文件