Struts2 学习笔记07 接收参数的三种方法

来源:互联网 发布:淘宝纠纷率影响大吗 编辑:程序博客网 时间:2024/05/17 22:27

  讲解一下用Struts2接收参数的三种方法。

  1.用Action的属性接收。



访问http://localhost:8080/Struts2_0700_ActionAttrParamInput/user!add?name=sss&age=10

访问user action的add 方法传入name=sss和age=10.

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" />    <package name="default" namespace="/" extends="struts-default">    <action name="user" class="com.tfj.struts2.action.UserAction" ><result>/addsuccess.jsp</result></action>           </package></struts>
调用com.tfj.struts2.action的UserAction类。

UserAction.java

package com.tfj.struts2.action;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}private int age;public String add(){System.out.println("name="+name);System.out.println("age="+age);return SUCCESS;}}

通过定义两个变量,age,name,实现get和set方法,完成调用。输入的值打印在控制台。


2.用DomainModel接收。

DomainModel是域模型的意思。


struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <constant name="struts.devMode" value="true" />    <package name="default" namespace="/" extends="struts-default">    <action name="user" class="com.tfj.struts2.action.UserAction"><result>/addsuccess.jsp</result></action>           </package></struts>

UserAction.java

package com.tfj.struts2.action;import com.opensymphony.xwork2.ActionSupport;import com.tfj.struts2.user.User;public class UserAction extends ActionSupport{public User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String add(){System.out.println("name="+user.getName());System.out.println("age="+user.getAge());return SUCCESS;}}
User.java

package com.tfj.struts2.user;public class User {public String name;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int age;}

在UserAction只定义一个user,user的属性放在User.java里,user就是一个域模型。在访问中访问http://localhost:8080/Struts2_0800_DomainModelParamInput/user!add?user.name=aaa&user.age=10

用user.name 和user.age来传递参数。

不过有的时候需要传递的参数并不是user的属性,例如在网页注册的时候,我们经常看到密码的建立框和密码的确认框,那么这个时候,确认框里的内容并不是user的参数。这个是后我们就要用到DTO,简单的说先用DTO接受参数,在把需要的参数传递给user建立一个user对象。



3.用ModelDriven来接受参数。

虽然ModelDriven并不常用但是它代表了一种MVC的思想还是很有必要了解一下的。



UserAction.java

package com.tfj.struts2.action;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;import com.tfj.struts2.user.User;public class UserAction extends ActionSupport implements ModelDriven<User>{private User user = new User();public String add(){System.out.println("name="+user.getName());System.out.println("age="+user.getAge());return SUCCESS;}@Overridepublic User getModel() {// TODO Auto-generated method stubreturn user;}}
访问http://localhost:8080/Struts2_0900_ModelDrivenParamInput/user!add?name=aaa&age=10

不需要用user.name。在这个类实现了ModelDriven<User>接口,实现getModel()方法,区别是要自己创建一个user对象。过程如下图。



当需要传递中文时候需要在struts.xml配置<constant name="struts.i18n.encoding" value="GBK"> 就可以了。


原创粉丝点击