`

struts2使用通配符与动态方法调用

阅读更多
1. 使用通配符

新建项目HeadFirstStruts2Chap02_05


GradeAction.java

package com.andrew.action;
import com.opensymphony.xwork2.ActionSupport;
public class GradeAction extends ActionSupport {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String list()throws Exception{
        System.out.println("班级查找");
        name="班级查找";
        return SUCCESS;
    }
    public String add()throws Exception{
        System.out.println("班级添加");
        name="班级添加";
        return SUCCESS;
    }
    public String update()throws Exception{
        System.out.println("班级修改");
        name="班级修改";
        return SUCCESS;
    }
    public String delete()throws Exception{
        System.out.println("班级删除");
        name="班级删除";
        return SUCCESS;
    }
}

StudentAction.java

package com.andrew.action;
import com.opensymphony.xwork2.ActionSupport;
public class StudentAction extends ActionSupport {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String list()throws Exception{
        System.out.println("学生查找");
        name="学生查找";
        return SUCCESS;
    }
    public String add()throws Exception{
        System.out.println("学生添加");
        name="学生添加";
        return SUCCESS;
    }
    public String update()throws Exception{
        System.out.println("学生修改");
        name="学生修改";
        return SUCCESS;
    }
    public String delete()throws Exception{
        System.out.println("学生删除");
        name="学生删除";
        return SUCCESS;
    }
}


1.1) 使用通配符 xxx_*

struts.xml

<package name="manage" namespace="/" extends="struts-default">
    <action name="student_*" class="com.andrew.action.StudentAction" method="{1}">
        <result name="success">success.jsp</result>
    </action>
    <action name="grade_*" class="com.andrew.action.GradeAction" method="{1}">
        <result name="success">success.jsp</result>
    </action>
</package>

index.jsp

<h1>通配符</h1>
<a href="student_list" target="_blank">学生信息查询</a>&nbsp;
<a href="student_add" target="_blank">学生信息添加</a>&nbsp;
<a href="student_update" target="_blank">学生信息修改</a>&nbsp;
<a href="student_delete" target="_blank">学生信息删除</a>&nbsp;
<br/><br/>
<a href="grade_list" target="_blank">班级信息查询</a>&nbsp;
<a href="grade_add" target="_blank">班级信息添加</a>&nbsp;
<a href="grade_update" target="_blank">班级信息修改</a>&nbsp;
<a href="grade_delete" target="_blank">班级信息删除</a>&nbsp;<br/>

success.jsp

Ok!${name }

http://localhost:8080/HeadFirstStruts2Chap02_05/index.jsp
Ok!学生查找


1.2) 使用通配符 *_*

第一个字母大写!!!

struts.xml

<package name="manage" namespace="/" extends="struts-default">
    <action name="*_*" class="com.andrew.action.{1}Action" method="{2}">
        <result name="success">success.jsp</result>
    </action>
</package>

index.jsp

<h1>通配符</h1>
<a href="Student_list" target="_blank">学生信息查询</a>&nbsp;
<a href="Student_add" target="_blank">学生信息添加</a>&nbsp;
<a href="Student_update" target="_blank">学生信息修改</a>&nbsp;
<a href="Student_delete" target="_blank">学生信息删除</a>&nbsp;
<br/><br/>
<a href="Grade_list" target="_blank">班级信息查询</a>&nbsp;
<a href="Grade_add" target="_blank">班级信息添加</a>&nbsp;
<a href="Grade_update" target="_blank">班级信息修改</a>&nbsp;
<a href="Grade_delete" target="_blank">班级信息删除</a>&nbsp;<br/>

success.jsp

Ok!${name }

http://localhost:8080/HeadFirstStruts2Chap02_05/index.jsp
Ok!学生查找


2. 动态方法调用

开启动态方法调用:
<constant name="struts.enable.DynamicMethodInvocation" value="true" />

struts.xml

<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="manage" namespace="/" extends="struts-default">
    <action name="student" class="com.andrew.action.StudentAction">
        <result name="success">success.jsp</result>
    </action>
    <action name="grade" class="com.andrew.action.GradeAction">
        <result name="success">success.jsp</result>
    </action>
</package>

index.jsp

<h1>动态方法调用</h1>
<a href="student!list" target="_blank">学生信息查询</a>&nbsp;
<a href="student!add" target="_blank">学生信息添加</a>&nbsp;
<a href="student!update" target="_blank">学生信息修改</a>&nbsp;
<a href="student!delete" target="_blank">学生信息删除</a>&nbsp;
<br/><br/>
<a href="grade!list" target="_blank">班级信息查询</a>&nbsp;
<a href="grade!add" target="_blank">班级信息添加</a>&nbsp;
<a href="grade!update" target="_blank">班级信息修改</a>&nbsp;
<a href="grade!delete" target="_blank">班级信息删除</a>&nbsp;<br/>

success.jsp

Ok!${name }

http://localhost:8080/HeadFirstStruts2Chap02_05/index.jsp
Ok!学生查找
分享到:
评论

相关推荐

    Struts2动态方法调用

    Struts2的通配符功能是动态方法调用的关键。在配置文件中,我们可以使用`*`通配符来代替Action方法名。比如: ```xml *" class="com.example.SaveAction"&gt; &lt;result&gt;/success.jsp ``` 这个配置表示所有以`...

    struts2动态调用之通配符

    本文将深入探讨Struts2中的动态调用之通配符特性。 首先,我们要理解在Struts2中,动态调用的基本概念。它允许我们不在配置文件中为每个Action的每一个method单独指定一个URL,而是通过某种约定或规则来映射多个...

    struts2利用通配符调用同一个Action里面不同的方法

    例如,你可以设置一个`execute`方法来处理默认请求,而其他方法则通过通配符调用。 在实际开发中,我们还可以结合Struts2的拦截器(Interceptor)进行更复杂的逻辑处理,如权限验证、日志记录等。拦截器可以在...

    struts2.5+框架使用通配符与动态方法常见问题小结

    例如,我们可以使用动态方法来调用Action类中的方法,如下所示: ${pageContext.request.contextPath }/test!query" rel="external nofollow" &gt;DynamicMethodInvocation 在上面的示例中,我们使用动态方法来调用...

    struts2通配符示例代码

    在Struts2的配置中,通配符(Wildcard)的使用是一个非常实用的功能,它使得URL映射更加灵活,减少了重复配置。下面将详细解释Struts2通配符的用法,并结合示例代码进行解析。 1. **Struts2通配符概述** Struts2的...

    struts2 通配符配置

    - 结合通配符,Struts2还支持动态方法调用。Action类中可以定义多个方法,每个方法对应不同的业务逻辑,Struts2会自动根据URL中的剩余部分调用相应的方法。 - 如:`user_view/123`,`123`会被当作方法名自动调用`...

    Struts2通配符

    当用户访问`logon.action`时,Struts2框架会自动调用`tutorial.Logon`类的`execute()`方法,并根据返回值来决定执行哪个结果。例如,如果`execute()`方法返回`"input"`,那么框架会渲染`/tutorial/Logon.jsp`页面。 ...

    Struts2_Action学习笔记、通配符{1},{2}

    因此,推荐使用动态调用方式: - URL格式:`http://localhost:8080/xxx/user/user!method` - 示例:`http://localhost:8080/xxx/user/user!add`,其中`user!add`指定了要调用的方法。 #### 五、通配符配置 通配符...

    传智播客struts2.1源代码_动态方法

    本文将深入探讨Struts2.1中的动态方法调用和使用通配符定义这两个关键知识点。 首先,让我们理解动态方法调用的概念。在传统的Struts2框架中,Action类的方法与HTTP请求的URL路径直接关联。然而,动态方法调用允许...

    struts2笔记之动态调用Action指定方法及默认Action

    在 Struts2 中,我们可以使用不同的方式来动态调用 Action 的指定方法,例如使用表单提交、struts.xml 配置、通配符方法等方式。此外,我们还可以配置默认的 Action 和全局结果,以便更好地管理我们的应用程序。

    struts2通配符的使用详解

    在Struts2的配置文件`struts.xml`中,可以通过以下方式使用通配符: ```xml &lt;package name="user" extends="struts-default" namespace="/"&gt; *" class="com.test.action.UserAction" method="{1}"&gt; &lt;result&gt;/user...

    详解Struts2动态方法调用

    Struts2 还提供了通配符方式来实现动态方法调用。例如: ```xml *" method="{1}" class="com.venn.action.HelloWorldAction"&gt; &lt;result&gt;/jsp/test.jsp &lt;result name="add"&gt;/jsp/add.jsp &lt;result name="update"&gt;/...

    struts中动态方法调用使用通配符

    总结来说,Struts的动态方法调用结合通配符是一种强大的工具,能够提高代码的可重用性和灵活性。它允许我们在一个Action中处理多个业务逻辑,减少了配置文件的复杂性,简化了项目结构,同时保持了良好的可读性和可...

    Struts2教学视频

    Struts2支持Action的动态方法调用,允许Action类根据请求参数动态选择要执行的方法,而无需预先在struts.xml中硬编码。 **八、Action通配符(wildcard)的配置** 通配符配置允许为一组相似的Action定义一个通用配置,...

    struts2一个action处理多个请求 struts2实例

    如果不想在XML配置文件中硬编码方法名,可以使用动态方法调用。请求URL中的部分可以动态解析为Action类中的方法名。比如,`myAction/save`会调用`save()`方法。 5. **注解配置** 除了XML配置,Struts2还支持使用...

    struts2的学习笔记+测试源代码

    压缩包文件`struts2_5_dynamicRequestMethod`很可能包含了与Struts2动态方法调用相关的示例代码和测试用例。这些源代码可能展示了如何配置Struts2的配置文件以支持动态方法调用,以及如何在Action类中定义对应的方法...

    Struts2请求处理方法的处理

    在Struts2框架中,一个Action可以包含多个请求处理方法,这种设计模式极大地提升了代码的灵活性与可维护性。通过这种方式,开发人员可以根据不同的业务需求定义不同的处理逻辑,并且能够很好地组织这些逻辑,避免了...

    struts2动态访问方式

    除了动态方法调用,Struts2还支持基于注解的配置,这使得Action类和方法的配置更加简洁。例如,可以在Action类或方法上使用`@Action`注解: ```java @Action(value = "saveUser", results = { @Result(name = ...

    Struts2 处理多个请求

    总结来说,Struts2通过动态方法调用、通配符映射和拦截器+`@Action`注解等方式,提供了灵活的多请求处理能力,使Action类能够更好地组织和管理不同的业务逻辑。开发者可以根据项目需求和代码可维护性选择适合的方法...

Global site tag (gtag.js) - Google Analytics