0
点赞
收藏
分享

微信扫一扫

struts2配置文件元素(Package,Action)


package

在struts2的配置文件中引入了面向对象思想,使用了分包管理。易于管理动作类。便于模块化开发动作类。

<package name="p1" extends="struts-default" abstract="true" namespace="/hh">
</package>

  • name:包名,在struts.xml中不能有相同的包名 包名是唯一的
  • extend:继承,固定struts-default(struts2-core.jar/struts-default.xml中)
  • abstract:抽象包,被用于继承,一般在抽象包中不声明action
  • namespace:命名空间,访问路径,默认为空字符串,可用于模块划分​​http://localhost:8080/struts2_01/hh/hello​​

namespace 查找规则: 如命名空间(/h1/h2/h3)先找/h1/h2/h3命名空间 没有再找/h1/h2命名空间 没有再找/h1命名空间 如果找到 在当前名称空间中找对应name的action执行,找不到则在默认名称空间(空)中找action执行

action

配置动作,处理请求路径

<package name="p1" extends="struts-default">
<action name="hello" class="org.ccit.com.web.action.HelloAction" method="sayhello">
<result name="success">/success.jsp</result>
</action>
</package>

action中定义的常量

struts2配置文件元素(Package,Action)_struts

  • name:动作名称
  • class:动作类全名
  • method:动作中的方法名称。默认是public String execute(){}
    方法要求:
    1.public 2.返回值必须是String(可以是void 表示不跳转任何页面) 3.没有参数

public  class HelloAction {
public String sayhello() throws Exception {
System.out.println("sayhello方法被调用");
return "success";}}

三种Action写法

public  class HelloAction {
public String sayhello() throws Exception {
System.out.println("sayhello方法被调用");
return "success";}}

  • 写个Action类实现Action接口,然后实现excute方法 在xml文件中不指定method 默认访问excute方法

<action name="login2" class="org.ccit.com.web.action.login02">
<result name="success">/success.jsp</result>
</action>

public class login02 implements Action{

@Override
public String execute() throws Exception {
return SUCCESS;
}
}

  • 写个Action类继承ActionSupport,如果action中没有指定method 在其父类ActionSupport中有execute方法。

<action name="login3" class="org.ccit.com.web.action.login03" method="sayhello">
<result name="success">/success.jsp</result>
</action>

public class login03 extends ActionSupport
public String sayhello() throws Exception {
System.out.println("sayhello方法被调用");
return "success";
}
}

默认的action执行类及修改

  • 默认的action执行类 如果在action中不指定类处理 默认类为ActionSupport
    配置在(struts-default.xml)<default-class-ref class=“com.opensymphony.xwork2.ActionSupport” />

<action name="login3" >
<result name="success">/success.jsp</result>
</action>

修改默认的动作类(在struts.xml中)

<package name="p1" extends="struts-default"
<default-action-ref name="login2"></default-action-ref>
</package>

通配符使用

struts2配置文件元素(Package,Action)_命名空间_02

public class UserAction extends ActionSupport {
public String add(){
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
public String update(){
return SUCCESS;
}
public String find(){
return SUCCESS;
}
}

未使用:

<package name="p2" extends="struts-default" namespace="/user">
<action name="add" class="org.ccit.com.web.action.UserAction" method="add">
<result name="success">/userJSP/add.jsp</result>
</action>
<action name="find" class="org.ccit.com.web.action.UserAction" method="find">
<result name="success">/userJSP/find.jsp</result>
</action>
<action name="delete" class="org.ccit.com.web.action.UserAction" method="delete">
<result name="success">/userJSP/delete.jsp</result>
</action>
<action name="update" class="org.ccit.com.web.action.UserAction" method="update">
<result name="success">/userJSP/update.jsp</result>
</action>
</package>

使用:

在2.5版本中加<global-allowed-methods>regex:.*</global-allowed-methods>
打开动态方法调用 可以使用多个* 一次类推 {1} {2}

​​​ http://localhost:8080/struts2_01/user/add​​

<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 
<package name="p3" extends="struts-default" namespace="/user">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="*" class="org.ccit.com.web.action.UserAction" method="{1}">
<result name="success">/userJSP/{1}.jsp</result>
</action>
</package>

​​http://localhost:8080/struts2_01/user/add_user​​

<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 
<package name="p3" extends="struts-default" namespace="/">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="*_*" class="org.ccit.com.web.action.UserAction" method="{1}{2}">
<result name="success">/{2}JSP/{1}.jsp</result>
</action>
</package>

动态方法的调用(不常用)

加!加方法名
​​​ http://localhost:8080/struts2_01/user!add​​​ 开启动态方法调用
<constant name=“struts.enable.DynamicMethodInvocation” value=“true” />
在高版本中需要规定允许调用的动态方法
<global-allowed-methods>find,add,delete,update</global-allowed-methods>

<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="p3" extends="struts-default">
<global-allowed-methods>find,add,delete,update</global-allowed-methods>
<action name="user" class="org.ccit.com.web.action.UserAction">
<result name="success">/success.jsp</result>
</action>
</package>


举报

相关推荐

0 条评论