你的位置:首页 > Java教程

[Java教程]Struts2学习笔记(六)——Action处理请求参数


在struts2框架中关于Action处理请求参数有两种方案(三个方式),表单属性的名称应该和在Action类中定义的成员属性或者在JavaBean中定义的成员属性名称一样:

1、属性驱动

  1)直接在Action类中定义成员属性来接收请求参数 (将Action当成javaBean),在Action中还需要定义成员属性的setter方法。

表单信息:

1 <form action="${pageContext.servletContext.contextPath}/testAction.action">2   name:<input type="text" name="name"><br>3   password:<input type="password" name="password"><br>4   <input type="submit" value="提交">5 </form>

Action类:

 1 public class TestAction { 2   private String name; 3   private String password; 4    5   public String getName() { 6     return name; 7   } 8  9   public void setName(String name) {10     this.name = name;11   }12 13   public String getPassword() {14     return password;15   }16 17   public void setPassword(String password) {18     this.password = password;19   }20 21   public String execute() {22     System.out.println("name: " + name);23     System.out.println("password: " + password);24     return "success";25   }26 }

前台输入信息:

后台显示结果:

  2)直接将javaBean做为Action的属性,在页面上必须使用ognl表达式来描述组件的name属性

1 username:<input type="text" name="user.username"><br>

JavaBean:

 1 public class Person { 2   private String name; 3   private String password; 4  5   public String getName() { 6     return name; 7   } 8   public void setName(String name) { 9     this.name = name;10   }11   public String getPassword() {12     return password;13   }14   public void setPassword(String password) {15     this.password = password;16   }17 }

表单信息:

1 <form action="${pageContext.servletContext.contextPath}/testAction.action">2   name:<input type="text" name="person.name"><br>3   password:<input type="password" name="person.password"><br>4   <input type="submit" value="提交">5 </form>

Action:

 1 public class TestAction { 2   private Person person; 3    4   public Person getPerson() { 5     return person; 6   } 7  8   public void setPerson(Person person) { 9     this.person = person;10   }11 12   public String execute() {13     System.out.println("name: " + person.getName());14     System.out.println("password: " + person.getPassword());15     return "success";16   }17 }

前台输入信息:

后台显示结果:

这种方式是通过name="params"的拦截器实现参数封装的。

1 <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

2、模型驱动

模型驱动处理请求参数的步骤为:

步骤:

  • 1.Action必须实现ModelDriven接口
  • 2.重写getModel()方法,返回一个javaBean对象.
  • 3.实例化一个javaBean对象.

JavaBean:

 1 public class Person { 2   private String name; 3   private String password; 4   public String getName() { 5     return name; 6   } 7   public void setName(String name) { 8     this.name = name; 9   }10   public String getPassword() {11     return password;12   }13   public void setPassword(String password) {14     this.password = password;15   }16 }

表单信息:

1 <form action="${pageContext.servletContext.contextPath}/testAction.action">2   name:<input type="text" name="name"><br>3   password:<input type="password" name="password"><br>4   <input type="submit" value="提交">5 </form>

Action:

 1 public class TestAction implements ModelDriven { 2   private Person person = new Person(); 3    4   public Person getPerson() { 5     return person; 6   } 7  8   public void setPerson(Person person) { 9     this.person = person;10   }11 12   public String execute() {13     System.out.println("name: " + person.getName());14     System.out.println("password: " + person.getPassword());15     return "success";16   }17 18   @Override19   public Object getModel() {20     return person;21   }22 }

前台输入信息:

后台显示结果:

4、封装数据到Collection或数组

JavaBean:

 1 public class Person { 2   private String name; 3   private String password; 4   public String getName() { 5     return name; 6   } 7   public void setName(String name) { 8     this.name = name; 9   }10   public String getPassword() {11     return password;12   }13   public void setPassword(String password) {14     this.password = password;15   }16 }

表单信息:

1 <form action="${pageContext.servletContext.contextPath}/testAction.action">2   name1:<input type="text" name="list[0].name"><br>3   password1:<input type="password" name="list[0].password"><hr>4   name2:<input type="text" name="list[1].name"><br>5   password2:<input type="password" name="list[1].password"><br>6   <input type="submit" value="提交">7 </form>

Action:

 1 public class TestAction { 2   private List<Person> list; 3  4   public List<Person> getList() { 5     return list; 6   } 7  8   public void setList(List<Person> list) { 9     this.list = list;10   }11 12   public String execute() {13     System.out.println("name1: " + list.get(0).getName());14     System.out.println("password1: " + list.get(0).getPassword());15     System.out.println("name2: " + list.get(1).getName());16     System.out.println("password2: " + list.get(1).getPassword());17     return "success";18   }19 }

前台输入信息:

后台显示结果:

5、封装数据到Map

JavaBean:

 1 public class Person { 2   private String name; 3   private String password; 4   public String getName() { 5     return name; 6   } 7   public void setName(String name) { 8     this.name = name; 9   }10   public String getPassword() {11     return password;12   }13   public void setPassword(String password) {14     this.password = password;15   }16 }

表单信息:

1 <form action="${pageContext.servletContext.contextPath}/testAction.action">2   name1:<input type="text" name="map['one'].name"><br>3   password1:<input type="password" name="map['one'].password"><hr>4   name2:<input type="text" name="map['two'].name"><br>5   password2:<input type="password" name="map['two'].password"><br>6   <input type="submit" value="提交">7 </form>

Action:

public class TestAction {  private Map<String, Person> map;  public Map<String, Person> getMap() {    return map;  }  public void setMap(Map<String, Person> map) {    this.map = map;  }  public String execute() {    System.out.println("name1: " + map.get("one").getName());    System.out.println("password1: " + map.get("one").getPassword());    System.out.println("name2: " + map.get("two").getName());    System.out.println("password2: " + map.get("two").getPassword());    return "success";  }}

 

前台输入信息:

后台显示结果:




几月去湖北旅游最好去湖北的旅游团价格去湖北旅游必去景点去湖北旅游要多少钱去湖北旅游最佳路线清远田野绿世界禾雀花好看吗?田野绿世界禾雀花最佳观赏期? 佛冈田野绿世界4月有什么花?田野绿世界4月开什么花? 德庆盘龙峡4月赏花攻略?4月去盘龙峡看什么花? 德庆汽车站到盘龙峡怎么坐车?德庆汽车站到盘龙峡坐车方便吗? 2015牛鱼嘴禾雀花开了吗?清远牛鱼嘴禾雀花盛花期是几月? 珠海一棵树农庄野战怎么收费?一棵树农庄能玩真人cs吗? 2015春节珠海去哪里好玩?珠海春节带家人孩子去哪玩? 珠海一棵树农庄有哪些儿童玩的?一棵树农庄适合多大儿童? 丽江街头 那些你拒绝不了的美味 青海马背藏戏 盛装的高原美女 探索长白山十大神秘之美 精描细绘 独一无二的四川特写 港澳通行证办理流程? 从香港买的东西过罗湖海关会查吗? 兑换港币的常识有哪些?兑换港币要注意什么事项? 国庆节去香港好玩吗? 08055U1R2CAT2A Datasheet 08055U1R2CAT2A Datasheet SQCAEA1R8BAJME Datasheet SQCAEA1R8BAJME Datasheet AQ12EA820GAJME\500 Datasheet AQ12EA820GAJME\500 Datasheet 长春跟团去港澳价格 长春跟团去港澳价格 长春跟团去港澳价格 杭州到香港旅游价格 杭州到香港旅游价格 杭州到香港旅游价格 浙江到香港澳门旅游价格 浙江到香港澳门旅游价格 浙江到香港澳门旅游价格