struts2学习笔记之八:Action中方法的动态调用

方法一:action名称+!+方法名称+后缀

Action类中增加addUser()和delUser()方法,

package com.djoker.struts2;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

public class UserAction {

    private String username;

    private String password;

    private int age;

    private String address;

    private String email;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String execute() throws Exception {
        System.out.println("username: " + username);
        System.out.println("password: " + password);
        System.out.println("age:" + age);
        System.out.println("address" + address);
        System.out.println("email: " + email);
        return "success";
    }

    public String addUser() throws Exception {
        ServletActionContext.getRequest().setAttribute("msg", username);
        return Action.SUCCESS;
    }

    public String delUser() throws Exception {
        ServletActionContext.getRequest().setAttribute("msg", username);
        return Action.SUCCESS;
    }
}

struts.xml中Action配置(注意,配置文件中没有制定详细的方法,只是指定了一个name,)

<package name="user" extends="struts-default">
        <action name="user" class="com.djoker.struts2.UserAction">
            <result>/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>

jsp中如何调用该Action中不同的方法

    <form action="user!addUser.action" method="post">
<!-- form action="user!delUser.action" method="post" -->
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        年龄:<input type="text" name="age"><br>
        地址:<input type="text" name="address"><br>
        邮箱:<input type="text" name="email"><br>
        <input type="submit" value="登录">
    </form>

方法二:多方法调用,创建多个action来指定不同的方法(不推荐该方法,如果有多个方法需要写多个Action)

struts.xml方法中的配置

<package name="user" extends="struts-default">
        <action name="addUser" class="com.djoker.struts2.UserAction" method="addUser">
            <result>/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
        <action name="delUser" class="com.djoker.struts2.UserAction" method="delUser">
            <result>/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>

jsp中如何调用

<form action="addUser.action" method="post">
<!-- form action="delUser.action" method="post" -->
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        年龄:<input type="text" name="age"><br>
        地址:<input type="text" name="address"><br>
        邮箱:<input type="text" name="email"><br>
        <input type="submit" value="登录">
    </form>

方法三:使用通配符配置,需要遵循一定的规范

struts.xml中的配置使用通配符

    <package name="user" extends="struts-default">
        <action name="*User" class="com.djoker.struts2.UserAction" method="{1}User">
            <result>/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
    </package>

jsp中需要按照该规范来调用

时间: 2024-10-07 06:46:50

struts2学习笔记之八:Action中方法的动态调用的相关文章

struts_2_Action类中方法的动态调用

(一)直接调用方法(不推荐使用) 1)Action类: private String savePath; public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } public String other() { savePath = "other"; return "success";

struts2学习笔记之八(result)

strust2的开发步骤 编写一个发送请求的页面,表单或超链接 编写一个action类 1. 推荐实现action接口或继承actionsupport 2. 为所有请求参数,包括需要传到下一个页面显示的数据提供filed 并提供相应的setter和getter 3. 要有无参的构造器 4. 处理请求的方法,该方法不能有形参声明 5. 处理请求的返回值是String 在struts.xml文件配置action struts.xml配制方法 常量配置 包配置和命名空间配置 这种设计是为了企业应用的模

Struts2学习笔记(三)——Action详解

Action是用于处理请求操作的,它是由StrutsPrepareAndExceuteFilter分发过来的. 1.Action的创建方式 1) POJO类(PlainOldJavaObjects简单的Java对象),不需要继承任何父类,实现任何接口 1 public class TestAction { 2 public String execute() { 3 return "success"; 4 } 5 } 这种方式是Struts2框架通过反射来实现的,步骤: struts2框

Struts2学习笔记(六)——Action处理请求参数

在struts2框架中关于Action处理请求参数有两种方案(三个方式),表单属性的名称应该和在Action类中定义的成员属性或者在JavaBean中定义的成员属性名称一样: 1.属性驱动 1)直接在Action类中定义成员属性来接收请求参数 (将Action当成javaBean),在Action中还需要定义成员属性的setter方法. 表单信息: 1 <form action="${pageContext.servletContext.contextPath}/testAction.ac

Struts2学习笔记(五)——Action访问Servlet API

在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1).创建一个ActionContext ActionContext context=ActionContext.getContext(); 2).通过context对象获取Servlet API Map<String,Object> getApplication() 获取的是application

struts2学习笔记(4)---------action中的方法调用

系统需要使用Action的不同方法来处理用户请求,这就需要让同一个Action里面包含多个控制处理逻辑. 1)动态方法调用 即DMI(dynamic method invocation),使用actionName!methodName的形式来指定想要调用的方法,如果想使用DMI,需要在struts.xml里面加入这句话: <constant name="struts.enable.DynamicMethodInvocation" value="true" /&

struts2学习笔记(6)------配置struts2中的异常处理

我们平常的异常处理是直接在方法中手动捕捉异常,当捕捉到特定异常后,返回特定逻辑视图名.这样的缺点是代码与异常处理耦合太多,一旦要改变异常处理方式,需要修改代码! struts2提供给了一种更好的方式来处理异常------声明式的方式管理异常处理,我们可以通过再方法里将出现的异常throw出去,抛给struts2框架处理,然后再struts2中默认开启着异常映射功能,该功能在struts-default.xml中配置的一个拦截器,如下: <interceptor name="exceptio

struts2学习笔记(三)—— 在用户注册程序中使用验证框架

实现目标: 1.使用验证框架对用户注册信息进行验证 2.验证用户名.密码.邮箱不能为空 3.验证用户名.密码长度 4.验证邮件地址格式 具体实现 一.Struts2应用的基础配置 这里不做详细阐述,具体为web.xml.相关jar包的配置 二.将页面显示的文本内容放到资源文件中 1.查看用户注册程序中的所有页面,找到所有可以显示的文本内容,将它们分离出来放到资源文件中. 2.与相关的Action类同名,以.preperties为扩展名,与Action类位于同一个包中,只能由该Action访问 R

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/