代码:
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; } }
代码:
<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags"prefix="s"%> <html> <head> <title>My JSP‘login.jsp.jsp‘ starting page</title> </head> <body> <s:form action="/hello/login" method="post"> <s:textfield name="name" label="用户名" /> <s:password name="pass" label="密码" /> <s:submit /> </s:form> </body> </html>
代码:
<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags"prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN"> <html> <head> <title>My JSP ‘index.jsp‘ starting page</title> </head> <body> <s:property value="name"/> </body> </html>
代码:
<?xml version="1.0"encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="hello" namespace="/hello"extends="struts-default"> <action name="login" class="action.LoginAction"method="Login"> <result name="success"> /index.jsp </result> <result name="input">/login.jsp</result> </action> </package> </struts>
代码:
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; } }
代码
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;
}
}
替换成如下
<s:textfieldname="user.name" label="用户名" /> <s:passwordname="user.pass" label="密码" />
<s:passwordname="user.pass" label="密码" />
替换如下
<s:property value="user.name"/>
其余不变
运行效果及方法 同上
修改如下
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<String, User> users; public String Login() { // map if(users.get("one").getName().equals("csdn")&& users.get("one").getPass().equals("csdn")){ returnSUCCESS; } return INPUT; } public Map<String, User> getUsers() { return users; } public void setUsers(Map<String, User>users) { this.users = users; } }
修改如下
<!-- 这是 map --> <s:textfield name="users[‘one‘].name" label="用户名" /> <s:password name="users[‘one‘].pass" label="密码" />
<!-- map 泛型 --> <s:property value="users[‘one‘].name"/>
效果及运行访问方式同上
修改如下
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<User> userss; publicString Login() { //list if(userss.get(0).getName().equals("csdn")&& userss.get(0).getPass().equals("csdn")){return SUCCESS; } return INPUT; } public List<User> getUserss() { return userss; } public void setUserss(List<User> userss){ this.userss = userss; } }
修改如下
<!--list 的 --> <s:textfield name="userss[0].name" label="用户名"/> <s:password name="userss[0].pass" label="密码"/>
修改如下
<!-- list --> <s:property value="userss[0].name"/>
效果及运行方式同上
Map:Map<String,User>users
List:List users:指定集合类型,ActionName-conversion.properties,Element_<ListPropName>=<ElementType>,
Map类型:需要同时指定key和value
¤ Key_<MapPropName>=<KeyType>
¤ Element_<MapPropName>=<ValueType>
在action 类的 目录下 配置properties 文件
此案例 命名为LoginAction-conversion.properties
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; } }
<!-- 无泛型的 list --> <s:textfield name="usersss[0].name"label="用户名"/> <s:password name="usersss[0].pass"label="密码"/>
代码修改如下
<!-- 无泛型的 list --> <s:property value="usersss[0].name"/>
修改如下
Element_usersss=model.User
效果图及运行方式同上
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; } }
修改如下
<!-- 这是 map 无泛型 --> <s:textfield name="userssss[‘one‘].name" label="用户名" /> <s:password name="userssss[‘one‘].pass" label="密码" />
修改如下:
<!-- map 无泛型 --> <s:property value="userssss[‘one‘].name"/>
Key_userssss=java.lang.String Element_userssss=model.User
String的属性可以接收格式为abc,xyz的请求参数值,我们必须定义类型转换器,否则struts2无法自动完成类型转换。
package util; import java.util.Map; import model.User; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; public classLoginConverter extends DefaultTypeConverter { @Override public ObjectconvertValue(Map<String, Object> 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; } }
代码:
<!-- 自定义字符串类型 --> <s:textfield name="userInfo" label="用户信息" />
代码:
<!-- 自定义类型 --> <s:property value="userInfo.name"/>
修改配置
指定类型
userInfo=util.LoginConverter
以上内容为个人总结,若有个别遗漏错误望大家给予改正。
大家有一些好的想法或意见,可以相互探讨。
QQ:897982714
struts2入门教程二(接收参数),布布扣,bubuko.com
原文:http://blog.csdn.net/wang9258/article/details/20371711