struts.xml文件配置
一:package标签
1.<package>配置web应用的不同模块,一般在一个功能模块下配置一个package,在当前模块下配置这个模块的多个action
2.name属性:给不同的模块起不同的名字,可以任意起,不能重复
3.namespace属性:给不同的模块设置访问的根路径,可以配置成/,也可以不配置,如果不配置默认是 "";
(1)按照请求路径先去匹配namespace,如果有对应的namespace接着会去action的name,如果没有对应action的name,就回去默认的命名空间找对应的action,如果没有这个action,就会报404
(2)按照请求路径会先去匹配namespace,如果没有这个namespace,就去根命名空间下找对应的action,如果没有对应的action就回去着默认的action如果还没有就404
4.extends属性表继承,struts-default是struts2给我们提供的一个package
二:action标签
action标签表示配置一个请求
name属性表示请求路径的后缀,一般表示功能模块的具体请求,name的名称就代表访问路径的名称
class属性表示当请求过来的时候调用的是那个类中的方法,配置全类名、
method表示class请求调用的是class中的哪个方法,指具体的方法名
三:result标签
result结构配置,用于设置不同的方法返回值,可以配置不同的返回值对应不同的视图
(1)name属性:表示结果处理名称,与action中的返回值对应
(2)type属性表示指定的哪个result类来处理显示的页面,默认是内部转发,可以在struts-default的文件中进行查看
(3)标签体表示相对路径,相对于web应用开始
四:include标签
如果有多个配置文件,可以在主配置文件中加载其他配置文件
常量配置
默认的常量配置在struts核心包中default.properties
修改常量配置顺序及加载顺序
对于常量的配置,默认加载的是struts核心包中的default.properties,如果通过以下的三项进行配置,就会按照默认1---》2----》3的顺序加载,后面设置的常量会覆盖之前设置的常量
1:在struts.xml文件中,在struts的根标签下,书写constant标签进行配置,在项目中主要使用这种方式
2:在src下创建struts.properties文件,将内容复制到此文件进行修改
3:在web.xml文件中配置context-param
常用的常量设置
(1)struts.i18n.encoding=UTF-8 用于配置接收参数和向外输出中文的编码格式一般设置为 UTF-8
(2)struts.action.extension=action,, 指定访问action的路径的后缀名,使用 , 表示可以有两个后缀名,可以是action也可以是没有后缀名
(3)struts.devMode = false 指定structs是否是以开发模式运行,能够支持修改配置文件后进行热部署,所以我们可以将其设置为true
动态方法调用
如果一个业务模块有多个方法,我们可以使用动态的方法调用省略action的配置,设置动态方法调用有两种方法
(1)开启动态方法调用 <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
配置action的时候不写method,在访问的时候输入网址 http://localhost:8080/Struts2Test/命名空间/action的name!方法名
(2)通配符方式
关闭动态方法调用。对于方法名可以使用一个 * 通配符,在后面的class和method可以使用 {索引} 来读取前面的内容
struts2中的默认配置
(1)method的默认值是execute
(2)result的默认值是success
(3)result的type的默认值是dispatcher
(4)class的默认值是ActionSupport其中有execute方法的返回值是success,一般可用于通过action跳转到指定界面
(5)default-action-ref配置package下的默认的是action,当访问当前包下,如果找不到指定的action,就会自动找默认的action
Action类
action类创建的方式一共有三种类型
1:普通pojo,不需要实现接口,不需要继承任何父类,这种类的好处就是书写自由,框架代码侵入性低,缺点:对于很多struts提供的很多功能我们都需要自己去实现,实际开发中不常用
2:实现Action接口,抽象方法execute()需要去实现,并且内置了一些字符串供我们使用,实际开发中并不常用,主要起到一个规范的作用
3.继承ActionSupport父类,在ActionSupport中提供很多丰富的功能,并且实现了Action, Validateable, ValidationAware, TextProvider,LocaleProvider 这些接口为我们提供了更多的功能,并且ActionSupport内部也有很多丰富的功能,这些功能包括获取国际化信息,数据校验,默认处理用户请求等功能,实际开发过程中大多使用这种方法来创建Action类内部方法的特征为 (1).修饰符 public(2)返回值为String(3)方法名随意(4)不能有参数(5)可以抛异常