zoukankan      html  css  js  c++  java
  • Struts2---动态action以及应用

    为了处理各种逻辑业务,根据execute方法来判断请求哪种业务,然后将请求转发到对应的业务处理上,

    通过动态请求action对象中的方法,实现某个单一的业务逻辑处理。

    动态action的应用

    //创建action对象,添加add和update方法
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UserAction extends ActionSupport {
    
        private static final long serialVersionUID = 1L;
     private String info;
    
        public String add() throws  Exception{
            info = "添加信息";
            return "add";
        }
        public String update() throws Exception{
            info = "更新信息";
            return "update";
        }
    
        public String getInfo() {
            return info;
        }
    
        public void setInfo(String info) {
            this.info = info;
        }
    }
    
    //Struts.xml配置:
     <!--声明包 -->
    <package name="myPackage" extends="struts-default">
    <action name="userAction" class="com.lyq.action.UserAction">
    <result name="add">user_add.jsp</result>
    <result name="update">user_update.jsp</result>
    </action>
    </package>
    
    
    //user_add.jsp页面
    <s:property value="info"/>
    //user_update.jsp页面
    <s:property value="info"/>
    
    
    //通过两个超链接请求
       <a href="userAction!add">    添加</a>
         <a href="userAction!update">更新</a>

    域模型DomainMModel

    可以将一些属性封装成为一个实体对象,需要保存信息,直接就可以吧一个实体对象传过去

    //user类
    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中应用的User对象
    import com.opensymphony.xwork2.ActionSupport;
    public class DomainModel extends ActionSupport {
        private User user;
    
        @Override
        public String execute() throws Exception {
            System.out.println(this.user.getLoginName() + "|" + this.user.getPassword());
            if ("admin".equals(user.getLoginName())) {
                return SUCCESS;
            } else {
                return "error";
            }
        }
    
        public User getUser() {
            return user;
        }
    
        public void setUser(User user) {
            this.user = user;
        }
    }
    
    
     <%--javaBean接收/域模型DomainModel--%>
         <form action="javaBean"  method="post">
             输入姓名<input type="text" name="user.loginName" id="">
             <input type="password" name="user.password">
             <input type="submit" value="提交">
         </form>

    !--用域模型配置信息-->
    <package name="myPackage" extends="struts-default">
    <action name="javaBean" class="com.lyq.action.DomainModel">
    <result >user_add.jsp</result>
    <result name="error">user_update.jsp</result>
    </action>
    </package>

    驱动模型ModelDriven

    在域模型中需要对指定参数名称为user.name方式,还是不方便,Struts2提供了不需要这样指定就直接对实体对象参数值,这就是ModelDrien

    可以看出属性可以不指对象

     映射的jsp

    add页面

    update页面

  • 相关阅读:
    面向对象三大特性?
    final finally finalize区别?
    LeetCode122-买卖股票的最佳时机2(贪心算法)
    LeetCode119-杨辉三角2(题目有Bug,动态规划)
    九度OJ 1051:数字阶梯求和 (大数运算)
    九度OJ 1050:完数 (数字特性)
    九度OJ 1049:字符串去特定字符 (基础题)
    九度OJ 1048:判断三角形类型 (基础题)
    九度OJ 1047:素数判定 (素数)
    九度OJ 1046:求最大值 (基础题)
  • 原文地址:https://www.cnblogs.com/gun-a/p/10561715.html
Copyright © 2011-2022 走看看