美文网首页
Action接受请求参数( 三种方式)

Action接受请求参数( 三种方式)

作者: PHOME_M | 来源:发表于2016-06-14 14:22 被阅读0次

    Struts2作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中。Struts2提供了非常强大的类型转换机制用于请求数据到model对象的封装。

    一、方式一

    1)Action本身作为model对象,通过成员setter封装。用Action动作类作为模型对象。

    public class userAction extends ActionSupport {
       private String username;
       private String password;
       public String regist()
     {
        if("pjm".equals(username) && "123".equals(password))
        {
           return SUCCESS;
        }else
        {
           return "login";
        }
     }
     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;
     }
    }
    

    2)创建独立的Model对象,页面通过ognl封装(动作类和模型分开,推荐使用)
    a.模型

    public class Person implements Serializable{
     // 属性和form表单中的字段名一致
     private String username;
     private String password;
     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 toString() {
      return "Person [username=" + username + ", password=" + password + "]";
     }
    }
    

    b.动作

    public class PersonAction extends ActionSupport {
     // 动作和模型分开
     private Person person;
     public Person getPerson() {
      System.out.println("getter");
      return person;
     }
     public void setPerson(Person person) {
      System.out.println("setter");
      this.person = person;
     }
     public String regist()
     {
      if("pjm".equals(person.getUsername()) && "123".equals(person.getPassword()))
      {
       return SUCCESS;
      }else
      {
       return "login";
      }
     }
    }
    

    c.配置文件

    <package name="re2" extends="struts-default" namespace="/person">
      <action name="regist" class="com.pangu.action.PersonAction" method="regist">
       <result name="success">/success.jsp</result>
       <result name="login">/success.jsp</result>
      </action>
     </package>
    

    d.表单页面

    <form action="${pageContext.request.contextPath}/person/regist.action" method="post">
          用户名: <input type="text" name="person.username"/><br/>
          密码: <input type="password" name="person.password"/><br/>
          <input type="submit" value="登陆"/>
     </form>
    

    3)使用modelDriven接口,对请求数据进行封装(模型驱动:ModelDriven)
    注:该功能是由一个叫做modelDriven的拦截器完成的。
    a. 模型和方式二一样
    b.动作

    // 实现ModelDriven接口
    public class CustomerAction extends ActionSupport implements ModelDriven<Customer>{
    
     private Customer customer = new Customer();  // 这里必须初始化
     public Customer getCustomer() {
      return customer;
     }
     public void setCustomer(Customer customer) {
      this.customer = customer;
     }
     public String regist()
     {
      System.out.println(customer);
      if("pjm".equals(customer.getUsername()) && "123".equals(customer.getPassword()))
      {
       return SUCCESS;
      }else
      {
       return "login";
      }
     }
     @Override
     public Customer getModel() {
      // TODO Auto-generated method stub
      return customer;
     }
    }
    

    c、配置文件

    <package name="re3" extends="struts-default" namespace="/customer">
      <action name="regist" class="com.pangu.action.CustomerAction" method="regist">
       <result name="success">/success.jsp</result>
       <result name="login">/success.jsp</result>
      </action>
     </package>
    

    d 、表单页面

    <form action="${pageContext.request.contextPath}/customer/regist.action" method="post">
      用户名: <input type="text" name="username"/><br/>
      密码: <input type="password" name="password"/><br/>
      <input type="submit" value="登陆"/>
     </form>
    

    相关文章

      网友评论

          本文标题:Action接受请求参数( 三种方式)

          本文链接:https://www.haomeiwen.com/subject/skkudttx.html