Struts2配置的Param如何调用?_Struts2

<package name="land" namespace="/" extends="struts-default"> 
  <action name="UserLand" class="com.UserLandAction">
   <param name="userName"></param>
   <param name="password"></param>
   <result name="success">/manage/index.jsp</result>
   <result name="error">/userLand.jsp</result>
  </action>
 </package>

以上Struts2 配置文件里的
<param name="userName"></param>
<param name="password"></param>

和在Action里写
 
        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;
 }
问题1:两者有什么区别?
问题2:如有采用配置文件的方式,在Action中如何调用配置的变量?
答:

1、页面传参与配置传参的区别:
如果页面Form表单的参数在Action类中有相应的setter方法,则会优先取页面Form表单传过来的值,如果页面没有该属性同名的参数,则会从配置文件中取同名的参数值作为它的默认值
2、Action中调用配置的变量,只需要该参数的setter方法即可,不需手动写代码,Struts2默认会同名赋值。
例:jsp页面
<form name="fm"   action="paramTest.action"  method="post">
      <input type="text" name="username" value="wjlvivid">
      <input type="text" name="password" value="123456">
      <input type="submit" value="提交">
</form>
Action类  ParamTestAction.java
private String username;
private String password;
//相应的setter、getter方法.....
public String paramTest(){
       System.out.println("username:"+username+"  password:"+password);
        return "success";
}

配置文件:
<action name="paramTest" class="com.sino.ParamTestAction" method="paramTest">
       <param name="username">wjl</param>
       <param name="password">000000</param>
       <result name="success">/menu/menu.jsp</result>
      </action>
请求一下该action,可发现输出的值为:
username:wjlvivid  password:123456
如果把<input type="text" name="password" value="123456">去掉,则输出 配置的参数值
username:wjlvivid password:000000
<param>的作用就是为Action中的某些属性赋一个默认值,通常这样做的如配置路径、文件名之类的....