struts2入门教程二(接收参数)

2014-11-24 02:01:28 · 作者: · 浏览: 0

Struts2接收请求参数

一:采用基本类型接收请求参数

LoginAction.java

代码:

 private String name;
   private String pass;
 
   public String Login() {
 
      if (name.equals("csdn") && pass.equals("csdn")) {
         return SUCCESS;
      }
      return INPUT;
   }
 
   public String getName() {
      return name;
   }
 
   public void setName(String name) {
      this.name = name;
   }
 
   public String getPass() {
      return pass;
   }
 
   public void setPass(String pass) {
      this.pass = pass;
   }
 
}
 

login.jsp

代码:

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags"prefix="s"%>
 


 
 
My JSP'login.jsp.jsp' starting page
 
 

 

   
  
     
         
   
      
   
      
   
   
  


 

index.jsp

代码:

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>
 
<%@ taglib uri="/struts-tags"prefix="s"%>
 
 


 
  
   
   My JSP 'index.jsp' starting page
 
 
 
 
 
  
  
 


Struts.xml

代码:

  


  
 
   
    
     
     
       /index.jsp 
      
     
      /login.jsp
      
     
   
  

  
 


\

登录效果图:

\

二:采用复合类型接收参数

LoginAction.java

代码:

package action;
import model.User;
 
importcom.opensymphony.xwork2.ActionSupport;
 
public class LoginAction extendsActionSupport {
 
         /**
          *
          */
         privatestatic final long serialVersionUID = 1L;
 
         //引用类型---对象
         privateUser user;
        
        
         publicString Login() {
                  
                   if(user.getName().equals("csdn") &&user.getPass().equals("csdn")) {
                            returnSUCCESS;
                   }
                   returnINPUT;
         }
 
         publicUser getUser() {
                   returnuser;
         }
 
         publicvoid setUser(User user) {
                   this.user= user;
         }
}


User.java

代码

package model;

public classUser {

private Stringname;

private Stringpass;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPass() {

return pass;

}

public void setPass(String pass) {

this.pass = pass;

}

}

login.jsp 代码

替换成如下

  
      
  

index.jsp 代码:

替换如下

  

"user.name"/>

其余不变

运行效果及方法 同上

\

三:采用map集合接收参数

LoginAction.java

< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+0N64xMjnz8I8L3A+CjxwPiA8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">package action; import java.util.Map; import model.User; importcom.opensymphony.xwork2.ActionSupport; public class LoginAction extendsActionSupport { /** * */ private static final long serialVersionUID =1L; // 3.map private Map users; public String Login() { // map if(users.get("one").getName().equals("csdn")&& users.get("one").getPass().equals("csdn")){ returnSUCCESS; } return INPUT; } public Map getUsers() { return users; } public void setUsers(Map users) { this.users = users; } }

login.jsp

修改如下


   
		
   
		
   


index.jsp

   
    
   

效果及运行访问方式同上

四:采用list集合接收参数

ListAction.java

修改如下

package action;
 
import java.util.List;
import java.util.Map;
 
import model.User;
 
importcom.opensymphony.xwork2.ActionSupport;
 
public class LoginAction extendsActionSupport {
 
         /**
          *
          */
         privatestatic final long serialVersionUID = 1L;
          // list
          private List
   
     userss;
 
 
         publicString Login() {
 
                   //list
                  
                    if(userss.get(0).getName().equals("csdn")&&
                    userss.get(0).getPass().equals("csdn")){return SUCCESS; }
                  
 
                            return INPUT;
         }
          public List
    
      getUserss() { return userss; } public void setUserss(List
     
       userss){ this.userss = userss; } }
     
    
   


login.jsp

修改如下

   
 
   
      
   


index.jsp

修改如下

   
 
   

效果及运行方式同上

五:采用无泛型的集合接收参数

Map:Map users

List:List users:指定集合类型,ActionName-conversion.properties,Element_ = ,

Map类型:需要同时指定key和value

¤ Key_ =

¤ Element_ =

在action 类的 目录下 配置properties 文件

此案例 命名为LoginAction-conversion.properties

一: list 无泛型

LoginAction.java

packageaction;
 
importjava.util.List;
importjava.util.Map;
 
importmodel.User;
 
importcom.opensymphony.xwork2.ActionSupport;
 
publicclass LoginAction extends ActionSupport {
 
   /**
    *
    */
   private static final long serialVersionUID =1L;
 
    // 无泛型--list
    private List usersss;
 
   public String Login() {
 
      // 无泛型的需要加载 properties 配置文件
 
     
       User user = (User) usersss.get(0); if (((User)
       usersss.get(0)).getName().equals("csdn")&& ((User)
       usersss.get(0)).getPass().equals("csdn")){ return SUCCESS; }
     
      returnINPUT;
   } 
    publicList getUsersss() {
    returnusersss;
    }
  
    publicvoid setUsersss(List usersss) {
    this.usersss = usersss;
    }
}


login.jsp

   
        
   
      
   

index.jsp

代码修改如下

 
   
   
   


LoginAction-conversion.properties 文件

修改如下

Element_usersss=model.User


效果图及运行方式同上

二: map 无泛型

LoginAction.java

package action;
 
import java.util.List;
import java.util.Map;
 
import model.User;
 
importcom.opensymphony.xwork2.ActionSupport;
 
public class LoginAction extendsActionSupport {
 
         /**
          *
          */
         privatestatic final long serialVersionUID = 1L;
 
         //无泛型---map
         privateMap userssss;
 
         publicString Login() {
         //map 无泛型
                   if(((User) userssss.get("one")).getName().equals("csdn")
                                     &&((User) userssss.get("one")).getPass().equals("csdn")) {
                            returnSUCCESS;
                   }
 
                   //无 泛型的 需要加载 properties 配置文件
 
                   returnINPUT;
         }
 
         publicMap getUserssss() {
                   returnuserssss;
         }
 
         publicvoid setUserssss(Map userssss) {
                   this.userssss= userssss;
         }
        
}
 


login.jsp

修改如下

   
      
   
      
   


Index.jsp

修改如下:

   
  
    


LoginAction-conversion.properties 文件

Key_userssss=java.lang.String
Element_userssss=model.User

六: 自定义转换器

String的属性可以接收格式为abc,xyz的请求参数值,我们必须定义类型转换器,否则struts2无法自动完成类型转换。

LoginConverter.java

package util;
 
import java.util.Map;
 
import model.User;
 
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
 
public classLoginConverter extends DefaultTypeConverter {
 
   @Override
   public ObjectconvertValue(Map
   
     context, Object value,
         ClasstoType){
     
      // 当需要将字符串向User类型转换时
            if (toType == User.class) {
                // 
    系统的请求参数是一个字符串数组
                String[]params = (String[]) value;
                // 创建一个User实例
                Useruser = newUser();
                // 只处理请求参数数组第一个数组元素,
                // 并将该字符串以英文逗号分割成两个字符串
                String[]userValues = params[0].split(",");
                // 为User实例赋值
                user.setName(userValues[0]);
                user.setPass(userValues[1]);
                // 返回转换来的User实例
                return user;
            }elseif(toType == String.class) {
                // 将需要转换的值强制类型转换为User实例
               User user = (User) value;
                return "<" + user.getName()+ ","+ user.getPass() + ">";
            }
            return null;
 
   }
 
}
 
   


login.jsp

代码:

   
      
   


Index.jsp

代码:

   
  
   

LoginAction-conversion.properties 文件

修改配置

指定类型

userInfo=util.LoginConverter


以上内容为个人总结,若有个别遗漏错误望大家给予改正。

大家有一些好的想法或意见,可以相互探讨。

QQ:897982714