Struts2.xml的配置
框架初始知识:
Servlet VS Filter
Filter的性能更强,因为Servlet能实现的,Filter都能实现。
Filter还有拦截资源的作用 是Servlet所不能实现的。
Filter有FilterChain API,而Servlet没有对应的API。
1.包配置(package):
常用属性有:
name:必填属性,用来指定包名,以 name的值来调用此包
extends:可选属性,用来指定该包继承其他包,可以继承其他包中的Action定义、拦截器定义等。通常继承struts-default包
namespace:可选属性,用来指定该包的命名空间,如果某个包没有指定namespace属性,则该包使用默认的命名空间,默认的命名空间为"/"。
Action的搜索:http://localhost:8080/当前web应用名/namespace_value/Action_name.action
eg. <package name="" extends="" namespace="">
<!-- 定义处理请求url为login.action的Action -->
<action name="login" class="">
<!-- 定义处理结果字符串和资源之间的映射关系 -->
result一共有两个属性,type和name

常用的type属性值:默认是dispatcher(转发)
chain:转发到一个action
redirectAction:重定向到一个action


dispatcher:转发,则只能通过添加<param></param>的方式实现,不能通过便捷方式实现
redirect:重定向
<!-- result元素中,name就是result元素的逻辑视图名称,如果省略了name属性,系统就将采用默认的name属性值,默认的name值是SUCCESS。结果类型有如下几种:(引用自慕课网)

|
<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>
|
-->
<result name="login">/login.jsp</result>
</action>
</package>
2.解决struts.xml中内容过多的问题:将一个配置文件分解为多个配置文件,那么在struts.xml中必须包含其他xml文件(include):
<struts>
<include file="struts-user.xml"></include>
<include file="struts-book.xml"></include>
.
.
.
</struts>
3.Action:action必须放在一个指定的包空间下定义,action代表一个struts2的请求,name属性相当于一个servlet path

Action的搜索顺序:

4.动态方法调用:动态方法调用解决了一个包空间内action过多的问题,一个action可以对应多个请求的处理
注意:要使用动态方法调用,必须设置struts.enable.DynamicMethodInvocation常量来完成,该常量属性的默认值是true。


4.1 感叹号方式:

4.2 通配符方式:把method的属性指定为{数字}的形式,其他属性中包含method属性的可使用此来代替,其中{数字}表示它的值是name属性值中第几(数字)个*的值。在struts.xml文件中配置<action…>元素时,它的name、class、method属性都可支持通配符。
使用前:
<struts>
<package>
<action name="user_save" class="cn.save.User" method="save">
<result name="save">/save.jsp</result>
</action>
</package>
</struts>
使用后:
<struts>
<package>
<action name="user_* " class="cn.{1}.User" method="{1}">
<result name="{1}">/{1}.jsp</result>
</action>
</package>
</struts>
总结:通配符映射规则,若找到多个匹配,将选择没有通配符的那个进行执行。
若找到多个带有通配符的匹配,则按先后顺序进行选择
5.struts2的请求和响应过程:

6.常量配置:
Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射, 及Action处理结果和物理资源之间的映射关系。除此之外,Struts2框架还包含了一个struts.properties文件,该文件定义了Struts2框架的大量常量属性。但通常推荐也是在struts.xml文件中来配置这些常量属性。
<struts>
<constant name="" value="" ></constant>
</struts>
struts2受理的请求扩展名问题:

Struts2.xml的配置的更多相关文章
- struts2.xml的配置与技巧
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...
- struts2 xml配置文件配置传参数
传参方式 重定向 第一方式: <action name="search" method="search" class="c ...
- Struts2 web.xml文件配置
在导入了项目需要使用的核心jar包之后需要在web.xml中配置Struts. 1. Struts2的知识点普及: Struts2共有5类配置文件,分别罗列如下: 1), Web.xml; 在没有使用 ...
- struts2在web.xml中配置详情
web.xml是web应用中载入有关servlet信息的重要配置文件,起着初始化servlet,filter等web程序的作用. 通常,全部的MVC框架都须要Web应用载入一个核心控制器.那採取什么方 ...
- IT忍者神龟之Struts2.xml配置全然正确流程能走通可是有红叉解决
一:Multiple annotations found at this line:Undefined actionName parameter Undefined actionnamespace ...
- JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理
此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...
- struts2 在 Action 或 Interceptor 中获取 web.xml 中配置的 <context-param> 参数 (这是我的第一篇博文,哈哈。)
最近为了改一个问题,想加一个控制开关,就在web.xml 中配置了一个 <context-param> 参数,并在 Action 或 Interceptor 中获取参数值. 1.在 web ...
- Struts2入门(二)——配置拦截器
一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...
- Struts2 拦截器配置以及实现
@(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...
随机推荐
- H5 IOS 虚拟键盘不回落的问题
在 H5 页面中,会发现在高版本的 IOS 系统中(ios12以上)和微信版本6.7.x以上,都会发现 input 等输入框,输入内容之后发现虚拟键盘消失,但是页面出现大面积白框. 解决办法(最后加上 ...
- Python 基础 2-1 列表入门
引言 列表 list 是由一系列按照特定顺序排列的元素组成的,它是一种有序的数据集合. 你可以添加任何类型的元素到列表中,其中的元素之间可以没有任何关系. 列表简介 Python 使用方括号 [] 来 ...
- 【JS学习】慕课网4-10 编程练习
在一个大学的编程选修课班里,我们得到了一组参加该班级的学生数据,分别是姓名.性别.年龄和年级,接下来呢,我们要利用JavaScript的知识挑出其中所有是大一的女生的的名字哦. 学生信息如下: ('小 ...
- java如何生成一个0-100的随机整数?
public class Test {public static void main(String[] args) {int num=(int)(Math.random()*101);System.o ...
- Dart编程实例 - 第一个Dart程序
Dart编程实例 - 第一个Dart程序 main() { print("Hello World!"); } 本文转自:http://codingdict.com/article/ ...
- Shiro学习(17)OAuth2集成
目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题,OAuth就是干这个的,OAuth2是OAuth协议的下一个版本,相比OAut ...
- cf期望概率专题
cf1009E:求到第i段期望和的比较困难,但是单独求每段的期望是比较容易的,所以单独对每段求和,然后累计总和 E[i]=1/2*a1+1/4*a2+...+1/2^(i-1)*ai-1+1/2^(i ...
- 2015 ACM/ICPC Asia Regional Changchun Online HDU - 5441 (离线+并查集)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给你n,m,k,代表n个城市,m条边,k次查询,每次查询输入一个x,然后让你一个城市对(u,v ...
- python 模块-json
1.JSON(Javascript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Lan ...
- 深入理解PHP原理之Opcodes(PHP执行代码会经过的4个步骤是什么)
深入理解PHP原理之Opcodes(PHP执行代码会经过的4个步骤是什么) 一.总结 一句话总结: 1.Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens) 2.Parsin ...