zoukankan      html  css  js  c++  java
  • Struts2-Action接受参数方式、method属性使用及通配符的配置

    一、Action接受参数的方式

    1、属性方式接收

    首先编写一个用于上传参数的页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
      <title>用户登录</title>
    </head>
    <body>
    <h1>用户登录</h1>
    <form action="Login.action" method="post">
      <table>
        <tr>
          <td>用户名:</td><td><input type="text" name="username"></td>
        </tr>
        <tr>
          <td>密码:</td><td><input type="password" name="password"></td>
        </tr>
        <tr>
          <td colspan="2" style="text-align: center"><input type="submit" value="登录"></td>
        </tr>
      </table>
    </form>
    </body>
    </html>

    action的xml配置

            <action name="Login" class="LoginAction">
                <result name="success">/WEB-INF/jsp/success.jsp</result>
                <result name="login">/index.jsp</result>
            </action>

    此form的“action”的值必须和xml配置的acting的“name”一样,input的“name”的值和LoginAction的属性名一致

    成功跳转的页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>登录成功</title>
    </head>
    <body>
    <h1>${username}登录成功!</h1>
    </body>
    </html>

    使用的EL表达式也要和action类的属性名称一致

    action类代码

    public class LoginAction extends ActionSupport {
    
        private String username;//用户名-必须与页面请求的对应表单name值相同
    
        private String password;//密码-必须与页面请求的对应表单name值相同
    
        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;
        }
    
    
        @Override
        public String execute() throws Exception {
            if (username.equals("admin") && password.equals("123456")) {
                return SUCCESS;
            } else {
                return LOGIN;
            }
        }
    }

    必须要设置属性的get,set方法

    2、使用JavaBean方式接收

    请求页面

    <form action="JavaBean.action" method="post">
        <table>
            <tr>
                <td>用户名:</td><td><input type="text" name="user.loginName"></td>
            </tr>
            <tr>
                <td>密码:</td><td><input type="password" name="user.password"></td>
            </tr>
            <tr>
                <td colspan="2" style="text-align: center"><input type="submit" value="登录"></td>
            </tr>
        </table>
    </form>

    aciton配置

            <action name="JavaBean" class="UserAction">
                <result name="success">/WEB-INF/jsp/success1.jsp</result>
                <result name="login">/index1.jsp</result>
            </action>

    JavaBean代码

    public class User {
        private String loginName;
    
        private String password;
    
        public String getLoginName() {
            return loginName;
        }
    
        public void setLoginName(String loginName) {
            this.loginName = loginName;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }

    action类代码

    public class UserAction extends ActionSupport {
        private User user;//JavaBean对象-提交页面的user.loginname表示此属性名及此对象的内部属性名
    
        @Override
        public String execute() throws Exception {
            System.out.println(this.user.getLoginName() + "|" + this.user.getPassword());
            if ("admin".equals(user.getLoginName()) && "123456".equals(user.getPassword())) {
                return SUCCESS;
            } else {
                return LOGIN;
            }
        }
    
        //必须设置get和set方法
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    }

    请求成功页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>登录成功</title>
    </head>
    <body>
    <h1>${user.loginName}登录成功JavaBean!</h1>
    </body>
    </html>

    3、使用ModelDriven方式接收参数

    请求页面

    <form action="ModelDriven.action" method="post">
        <table>
            <tr>
                <td>用户名:</td><td><input type="text" name="loginName"></td>
            </tr>
            <tr>
                <td>密码:</td><td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td colspan="2" style="text-align: center"><input type="submit" value="登录"></td>
            </tr>
        </table>
    </form>

    使用ModelDriven可以直接使用javabean的属性名称

    action配置

            <action name="ModelDriven" class="ModelDrivenAction">
                <result name="success">/WEB-INF/jsp/success2.jsp</result>
                <result name="login">/index2.jsp</result>
            </action>

    action类代码(JavaBean代码同上略)

    public class ModelDrivenAction extends ActionSupport implements ModelDriven<User> {
        private User user;
    
        @Override
        public User getModel() {
            //先支持此方法赋值,ModelDriven是通过getModel方法获取action中JavaBean对象,然后将用户提交数据赋值到此对象内
            //必须手动创建javabean对象,不需要设置get,set放过
            user = new User();
            user.setLoginName("测试");
            return user;
        }
    
        @Override
        public String execute() throws Exception {
            System.out.println(this.user.getLoginName() + "|" + this.user.getPassword());
            if ("admin".equals(user.getLoginName()) && "123456".equals(user.getPassword())) {
                return SUCCESS;
            } else {
                return LOGIN;
            }
        }
    }

    请求成功页面及输出结果

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>登录成功</title>
    </head>
    <body>
    <h1>${loginName}登录成功ModelDriven!</h1>
    </body>
    </html>

    二、action的method属性

    1、一个acton可以配置多个方法,此时可以通过配置action的method属性来调用action类的不同方法

    action配置

            <action name="UserAdd" class="UserAction" method="addUser">
                <result>/index1.jsp</result>
            </action>
    
            <action name="UserDel" class="UserAction" method="delUser">
                <result>/index1.jsp</result>
            </action>

    action类

    public class UserAction extends ActionSupport {
        public String addUser(){
            System.out.println("addUser");
            return SUCCESS;
        }
    
        public String delUser(){
            System.out.println("delUser");
            return SUCCESS;
        }
    }

    请求页面

    <form action="UserAdd.action" method="post">
        <input type="submit" value="登录">
    </form>
    <form action="UserDel.action" method="post">
        <input type="submit" value="登录">
    </form>

    2、动态方法调用

    动态调用需要设置struts2的参数

    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

    如果是struts2.5的版本还需要设置global-allowed-methods

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    <struts>
        <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
    
        <package name="default" namespace="/" extends="struts-default">
            <global-allowed-methods>regex:.*</global-allowed-methods>
    
            <action name="User" class="UserAction">
                <result>/index1.jsp</result>
            </action>
        </package>
    </struts>

    请求页面

    <form action="User!addUser.action" method="post">
        <input type="submit" value="添加">
    </form>
    <form action="User!delUser.action" method="post">
        <input type="submit" value="删除">
    </form>

    action类同上略

    三、使用通配符配置action

    请求页面

    <form action="User_addUser.action" method="post">
        <input type="submit" value="添加">
    </form>
    <form action="User_delUser.action" method="post">
        <input type="submit" value="删除">
    </form>
    <form action="User_other.action" method="post">
        <input type="submit" value="删除">
    </form>

    action配置

            <!--优先完全匹配,找不到才回去通配符匹配-->
            <action name="User_addUser" class="UserAction">
                <result>/index1.jsp</result>
            </action>
    
            <action name="User_*" class="UserAction" method="{1}">
                <result>/index1.jsp</result>
            </action>

     

  • 相关阅读:
    免费素材:推荐最新的免费图标字体Sosa
    如何选择Javascript模板引擎(javascript template engine)?
    名片设计最佳实践和技巧分享
    帮助你生成翻页效果的jQuery插件 bookblock
    网页网站收集
    main xml信息
    c# winrar 打包
    c# 压缩文件
    前端工程师
    fash 3D 游戏
  • 原文地址:https://www.cnblogs.com/grasp/p/11162947.html
Copyright © 2011-2022 走看看