Struts2学习笔记:DMI,多个配置文件,默认Action,后缀
动态方法调用有三种方法:
1.同一Action多次映射,每个action标签的method对应要调用的方法。
当要调用的方法多了就会增加struts.xml文件的复杂性。
2.struts.DynamicMethodInvocation=true (struts.properties文件)
或<constant name="struts.enableDynamicMethodInvocation" value=true></constant(struts.xml文件)
struts.properties文件优先级更高
因为常量可以在下面多个配置文件中进行定义,所以我们需要了解struts2加载常量的搜索顺序:
struts-default.xml
struts-plugin.xml
struts.xml
struts.properties
web.xml
如果在在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值。
这个顺序是在多个文件中配置了同一个常量的前提下,比如struts.action.extension这个常量在struts.xml中有而struts.properties没有,那么struts.xml仍会覆盖默认的值aciton,,。
3.通配符(官方推荐的方法)
案例:
<!--索引下标从1开始-->
<action name="*_*" class="action.{1}Action" method="{2}">
<result name="success">/{2}_{1}.jsp</result>
</action>
访问http://127.0.0.1:8080/Ch12/User_add.action
调用action.UserAction.add(),若业务处理返回success,会跳转到add_User.jsp
指定多个配置文件:
我们不可能将所有的内容写在一个struts.xml文件中,特别是在比较大的应用中更是如此,为便于管理,就可以根据功能的不同写在不同的.xml文件中,然后将这些.xml文件包含在struts.xml文件中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<include file="hello.xml"></include>
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
</struts>
第7行指定了编码,防止多个xml文件的编码格式不同导致乱码。
hello.xml的内容是实际要配置的action。
默认Action:
通常用于显示404页面
<package name="testStruts" extends="struts-default" namespace="/aaa">
<action name="notFound">
<result>/404.jsp</result>
</action>
</package>
如果action标签没有指定class属性,默认会不经业务逻辑直接跳转到result。
注意:如果action的name用了通配符,首先会去和通配符\匹配,如果没有才会寻找默认的Action
Action后缀:
StrutsPrepareAndExecuteFilter是Struts2框架的核心控制器,它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。默认情况下,如果用户请求的路径不带后缀或者后缀以.action结尾,这时请求将被转入Struts 2框架处理,否则Struts 2框架将略过该请求的处理。
* 根据配置文件:struts2-core-x.x.x.jar包下的org.apache.struts2/default.properties文件定义的常量决定
struts.action.extension=action,,
* 默认处理的后缀是可以通过常量”struts.action.extension“进行修改的,如下面配置Struts 2只处理以.do为后缀的请求路径:
<struts>
<constant name="struts.action.extension" value="do"/>
</struts>
* 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。如:
<constant name="struts.action.extension" value="do,go"/>
也可在struts.properties文件中配置
也可在web.xml中配置
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>struts.action.extension</param-value>
<param-value>do,action,,</param-value>
</init-param>
</filter>
参考:https://www.cnblogs.com/pwc1996/p/4839162.html
另外,result的name属性区分大小写,默认是success。如果多个result的name相同(包含多个未指定的情况),那么将跳转到最后一个result的页面
Struts2学习笔记:DMI,多个配置文件,默认Action,后缀的更多相关文章
- 【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的全部方法进行输入校验
在struts2中,我们能够实现对action的全部方法进行校验或者对action的指定方法进行校验. 对于输入校验struts2提供了两种实现方法: 1. 採用手工编写代码实现. 2. 基于XML配 ...
- 【Struts2学习笔记(3)】至Action注入属性值
(1)有属性注入? 当一些属性不适合固定写入时适合使用这样的方法,对于一些使用特频繁的类或者方法,非常多类都会用到,那么使用属性注入会节省很多其它的力气.并且在设计的时候就能够提早的把该属性给定义出来 ...
- Struts2 学习笔记(概述)
Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...
- Struts2学习笔记⑧
今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...
- Struts2学习笔记①
Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) -- 样例(6)
managed-schema 样例: <?xml version="1.0" encoding="UTF-8" ?> <!-- License ...
- Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml)(3)
5. <fieldType> fieldType主要定义了一些字段类型,其name属性值用于前面<field>中的type属性的值.e.g. <fieldTyp ...
- Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) - filter(5)
自定义fieldType时,通常还会用到filter.filter必须跟在tokenizer或其它filter之后.如: <fieldType> <analyzer> < ...
随机推荐
- JSP-Runood:Eclipse JSP/Servlet 环境搭建
ylbtech-JSP-Runood:Eclipse JSP/Servlet 环境搭建 1.返回顶部 1. Eclipse JSP/Servlet 环境搭建 本文假定你已安装了 JDK 环境,如未安装 ...
- JeePlus:代码结构
ylbtech-JeePlus:代码结构 1.返回顶部 1. 代码结构 1.文件结构 1.1.源码目录 src/main/javacom.jeeplus Jeeplus目录录├ common 公共模块 ...
- 昆石VOS2009 VOS3000无漏洞去后门电脑管理客户端大全
注意:您的VOS是什么版本的请使用什么版本的管理客户端,否则无法登陆! ** VOS2009的: ** VOS2009-client-v2.1.2.0.exe 点击这里下载: VOS2009-clie ...
- 盘点国内网站常用的一些 CDN 公共库加速服务(转载)
百度CND jQuery 地址:<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></scri ...
- bzoj 3231: [Sdoi2008]递归数列【矩阵乘法】
今天真是莫名石乐志 一眼矩阵乘法,但是这个矩阵的建立还是挺有意思的,就是把sum再开一列,建成大概这样 然后记!得!开!long!long!! #include<iostream> #in ...
- 清北考前刷题da5下午好
/* (4,1)*(3,1)*(2,1)的话1变成2然后一直是2 2变成1然后变成3 3变成1然后变成4 4变成1 */ #include<iostream> #include<cs ...
- 【weiphp】安装中报错
问题描述:安装的第三部报错“SQLSTATE[HY000]: General error: 2030 This command is not supported in the prepared sta ...
- Sql 主键设置
1.开发数据库时常用命名规范 1>.使用不包含数字的单数表名,如果必要的话可以增加模块名前缀. 2>.对于主键的命名,使用表名+ID的形式. 3>.作为外键的列的名字应该与它们所对应 ...
- 【题解】自行车比赛 [AHOI2016] [P2777]
[题解]自行车比赛 \([AHOI2016]\) \([P2777]\) 逼自己每天一道模拟题 传送门:自行车比赛 \([AHOI2016]\) \([P2777]\) [题目描述] 比赛中一共有 \ ...
- Math teacher's homework
Title:[Math teacher's homework] Description 题目大意:给你n个数m1,m2...mn,求满足X1 xor X2 xor ... xor Xn=k,0< ...