Struts2配置及Action访问执行

Struts2配置

Struts2加载顺序

  • default.properties
  • struts-default.xml
  • struts-plugin.xml
  • struts.xml
  • struts.properties
  • web.xml
  • 后配置常量的值会覆盖先配置常量的值

package :“包” 为了更好的管理action的配置

属性:
  • name:包的名称,只要在一个项目中不重复即可
  • extends:设置继承哪个包,通常设置为Struts-default(默认),Struts-default中定义很多结果类型和很多拦截器,继承这些之后,action才有这些功能。
  • namespace:name(在action的属性中)+namespace共同决定了访问的路径,不设置的话,在地址中间添加任意值都可访问到本地址。
  • abstract:抽象的,专用于其他包的继承,如果设置这个属性则该包无法被访问。

action

属性:
  • name:与namespace共同决定访问路径
  • class: Action类全路径
  • method:执行Action中对应方法的方法名,默认为execute方法
  • converter:用作自定义类型转换器,一般不设置,内部提供的转换器已经够用

常量配置

  • 在Struts2中的default.properties中提供了很多的常量
    • struts.i18n.encoding= UTF-8-----------Post请求中文乱码不用处理
    • struts.action.extension = action[,(两个逗号)] ----------扩展名可.action或者不写
  • 修改常量的值(struts.xml)
在<pacgage></package>中加入<constant></constant>:
常量在default-properties中可以找到
<package>
	<constant name="" value=""></constant>
</package>

include

  • 在一个配置文件中引入其他配置文件
<include file="配置文件全路径"/>

  • 将资源配置单独放到一个文件中的方法(之前一直都是将资源配置文件放在src文件目录下的):
  • 1).在工程中新建名为resource的文件夹
  • 2).右键选择:Mark Directory as —>Resources Root(这步骤操作很重要)

Action访问执行

Action类的写法

  • 1.Action类是pojo的类(写一个普通的类实现execute方法)
  • 2.创建一个类实现Action的接口
例子:
public class ChildrenAction implements Action{
	public class execute(){
		//执行的操作
		return “XXXX”;
	}
}
  • 3.Action类继承ActionSupport类(最常用
    ActionSupport当中提供了很多功能,数据校验,国际化的操作等一系列操作方法
代码示例:
public Action extends ActionSupport{
	public string execute(){
		//执行的操作
		return " XXX";
	}
}

ACtoin类的方法

method访问(示例):
  • 1.编写jsp文件
<a href="xxx.action">xxx</a>
  • 2.在配置文件中添加(或者新建一个配置文件,然后在使用引入)
<action name="xxxx" class="访问的方法的全路径" method="执行类中的方法名"></action>
  • 3.创建类并添加上面所设置的方法
  • 以上方法存在的问题是,如果有多个发送请求(a标签中的action,对应不同的方法时)就会写多个在struts.xml的package中。
通配符

解决method方法繁杂的问题

  • 示例:
  • jsp
<a href="xxx_add.action">添加</a>
<a href="xxx_delete.action">删除</a>
<a href="xxx_update.action">修改</a>
<a href="xxx_find.action">查找</a>
  • struts.xml
<package name="method2" extends="struts-default">
		<!--将所要添加的方法名拿出来设置为全局变量,这样所有的action就都能访问的到了-->
        <global-allowed-methods>add,delete,update,find</global-allowed-methods>
        <!--通过统配符设置    {1}代表第一个*-->
        <action name="xxx_*" class="com.helong.struts2.MethodAction" method="{1}">
        	<!--设置允许的方法 如果其他的action也要使用的话就可以设置为全局变量-->
            <allowed-methods>add,delete,update,find</allowed-methods>
        </action>
</package>
动态访问的方法示例
  • 1.设置jsp文件
<a href="xxx!add.action">添加</a>
<a href="xxx!delete.action">删除</a>
<a href="xxx!update.action">修改</a>
<a href="xxx!find.action">查找</a>
  • 2.struts2.xml或外部文件用include引入
<struts>
    <!--默认情况不支持动态方法访问 -->
    <!--做常量的修改struts.enable.DynamicMethodInvocation = false 为false 的时候不支持动态访问-->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    <package name="method3" extends="struts-default">
        <action name="xxx" class="com.helong.struts2.MethodAction">
        	<!--如果其他的action要使用的话,就可以将方法设置为全局变量-->
            <allowed-methods>add,delete,update,find</allowed-methods>
        </action>
    </package>
</struts>
参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

helong0102

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值