zoukankan      html  css  js  c++  java
  • Struts2页面数据和Action数据三种基本对应方式

    在Struts2中页面的数据和Action有两种基本对应方式,分别是:属性驱动和模型驱动。

    其中属性驱动又分为:基本类型的属性对应和JavaBean风格的属性对应

    一。属性驱动

    1.基本类型的属性驱动。

    在Action里面设置属性名称和jsp页面设置的属性名称一样就可以了,当然Action里面的属性要有getter、setter方法,或者直接把属性设置成public的(但是一般都不那么做)。

    package com.action;
    
    import com.opensymphony.xwork2.Action;
    
    public class HelloWorldAction implements Action {
        
        private String account;
        private String password;
        private String submitFlag;
        
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            if(account.equals("ironman")&&password.equals("123")){
                return "toWelcome";
            }else{
                return "loginError";
            }
            
        }
        //public 的 getter setter方法。。。
        public String getAccount() {
            return account;
        }
    
        public void setAccount(String account) {
            this.account = account;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public String getSubmitFlag() {
            return submitFlag;
        }
    
        public void setSubmitFlag(String submitFlag) {
            this.submitFlag = submitFlag;
        }
    }

    jsp代码

    <form action="helloworldAction" method="post">
        <input type="hidden" name="submitFlag" value="login"/>
        username:<input type="text" name="account"><br>
        password:<input type="password" name="password"><br>
        <input type="submit" value="submit"/>
        
    </form>

    可以看到那些属性名都是一样的。

    2.JavaBean风格的属性对应。

    首先写一个JavaBean将属性封装起来,并且提供public的setter和getter方法。

    package com.bean;
    
    public class HelloWorld {
        private String account;
        private String password;
        private String submitFlag;
        public String getAccount() {
            return account;
        }
        public void setAccount(String account) {
            this.account = account;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getSubmitFlag() {
            return submitFlag;
        }
        public void setSubmitFlag(String submitFlag) {
            this.submitFlag = submitFlag;
        }
        
    }

    我们现在来看Action的代码会发现少很多,内容也比较清晰,所以平常使用最多的也是这种方法。当然三种方法可以混合使用,但是要避免冲突。

    package com.action;
    
    import com.bean.HelloWorld;
    import com.opensymphony.xwork2.Action;
    
    public class HelloWorldAction implements Action{
        
        private HelloWorld hello = new HelloWorld();
        
        @Override
        public String execute() throws Exception {
            // TODO Auto-generated method stub
            if(hello.getAccount().equals("ironman")&&hello.getPassword().equals("123")){
                return "toWelcome";
            }else{
                return "loginError";
            }
        }
    
        public HelloWorld getHello() {
            return hello;
        }
    
        public void setHello(HelloWorld hello) {
            this.hello = hello;
        }
        
    }

    再来看看jsp中的代码,会有一些不一样。

    <form action="helloworldAction" method="post">
        <input type="hidden" name="hello.submitFlag" value="login"/>
        username:<input type="text" name="hello.account"><br>
        password:<input type="password" name="hello.password"><br>
        <input type="submit" value="submit"/>
        
    </form>

    我们看到,在属性前面要加上了那个对象的名字。

    二。使用模型驱动。

    他的基本实现方式是让Action实现一个ModelDriven接口,这个接口需要我们实现个getModel的方法,这个方法返回的就是Action所使用的数据模型对象。

    主要是在Action里面有变化,只是添加了ModelDriven的实现,另外去掉了对应的getter/setter方法,其他的都没有什么变化。

    package com.action;
    
    import com.bean.HelloWorld;
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ModelDriven;
    
    public class HelloWorldAction implements Action , ModelDriven{
        
        private HelloWorld hello = new HelloWorld();
        
        
        @Override
        public Object getModel() {
            // TODO Auto-generated method stub
            return hello;
        }
    
        @Override
        public String execute() throws Exception  {
            // TODO Auto-generated method stub
            if(hello.getAccount().equals("ironman")&&hello.getPassword().equals("123")){
                return "toWelcome";
            }else{
                return "loginError";
            }
        }
    
    }
  • 相关阅读:
    Maven关于web.xml中Servlet和Servlet映射的问题
    intellij idea的Maven项目运行报程序包找不到的错误
    修改Maven项目默认JDK版本
    刷题15. 3Sum
    刷题11. Container With Most Water
    刷题10. Regular Expression Matching
    刷题5. Longest Palindromic Substring
    刷题4. Median of Two Sorted Arrays
    刷题3. Longest Substring Without Repeating Characters
    刷题2. Add Two Numbers
  • 原文地址:https://www.cnblogs.com/ironmantony/p/3517014.html
Copyright © 2011-2022 走看看