一、如何在sturts.xml文件中修改请求扩展名?
在org.apache.struts2包下default.properties文件中配置了Struts2应用的一些常量和默认值。通过查找default.properties文件可知,对应的扩展名的常量名是struts.action.extension,其默认值是.action和没有扩展名。我们如果要修改只需在struts.xml配置文件中添加constant标签进行配置就能够解决。配置代码如下:
<constant name="struts.action.extension" value="action,do"></constant>
以上配置struts2就能够检测以.action和.do为结尾的请求。
二、关于ActionSupport类的补充说明
ActionSupport是默认的Action类:若某个action节点没有配置class属性,则ActionSupport即为待执行的Action类,而execute方法即为要默认执行的Action方法
<action name="testActionSupport" >
<result>testActionSupport.jsp</result>
</action>
等同于
<action name="testActionSupport" class="com.opensymphony.xwork2.ActionSupport" method="execute" >
<result>testActionSupport.jsp</result>
</action>
在手工完成字段验证,显示错误消息,国际化等情况下,推荐继承ActionSupport方法
三、动态方法调用
动态方法调用就是直接使用URI的方式直接调用action中的方法运行。例如:URI:/struts-app2/Product.action:Struts该URI含义是调用Product类的execute方法
实现动态方法调用步骤:
第一步:在struts.xml配置文件中添加一个constant标签打开动态方法调用,通过查找default.properties文件可知,对应的动态方法调用名称为struts.enable.DynamicMethodInvocation。因为struts2中动态方法调用默认是关闭的。配置如下:
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
第二步:引用URI实现调用。示例代码如下:
URI:/struts-app2/Product.action:Struts调用Product类的execute方法
URI:/struts-app2/Product!save.action:Struts调用Product类的save方法
在什么时候使用动态方法呢?倘若我们的工程允许动态方法调用的话,就会造成一些安全隐患。个人建议开启动态方法调用用来测试程序运行。
四、通配符
一个Web应用可能有成百上千个action声明。可以利用struts提供的通配符映射机制把多个彼此相似的映射关系简化为一个映射关系