struts2--使用域模型完成注册的简单实例

来源:互联网 发布:高通编译linux 编辑:程序博客网 时间:2024/05/22 10:56

struts2--使用域模型完成注册的简单实例

1.新建一个Web Project,命名为struts-register
2.引入struts的支持
3.新建register.jsp页面
<span style="font-size:18px;"><html>  <body>   <form action="register.action">   username:<input name="user.username"><br>   sex:<input name="user.sex"><br>   age:<input name="user.age"><br>   birth:<input name="user.birth"><br>   bool:<input name="user.bool"><br>   hobby:<input name="user.hobby" type="checkbox" value="music">music   <input type="checkbox" name="user.hobby" value="sports">sports   <input type="checkbox" name="user.hobby" value="games">games<br>   pet name:<input name="user.pet.petName"><br>   <input type="submit" value="register">   </form>  </body></html></span>
<span style="font-size:18px;">4.配置struts.xml文件</span>
<span style="font-size:18px;"></span><pre name="code" class="html"><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts><package name="register" namespace="/" extends="struts-default"><action name="register" class="com.etc.action.RegisterAction"><result>/success.jsp</result></action></package></struts>
5.新建com.etc.vo包,包下新建User.java
<span style="font-size:18px;"></span><pre name="code" class="java">package com.etc.vo;import java.util.Arrays;import java.util.Date;public class User {private String username;private String sex;private int age;private Date birth;private boolean bool;private String[] hobby;private Pet pet;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}public boolean isBool() {return bool;}public void setBool(boolean bool) {this.bool = bool;}public String[] getHobby() {return hobby;}public void setHobby(String[] hobby) {this.hobby = hobby;}public Pet getPet() {return pet;}public void setPet(Pet pet) {this.pet = pet;}@Overridepublic String toString() {return "User [username=" + username + ", sex=" + sex + ", age=" + age+ ", birth=" + birth + ", bool=" + bool + ", hobby="+ Arrays.toString(hobby) + ", pet=" + pet + "]";}}
6.在com.etc.vo包下新建Pet.java
<span style="font-size:18px;"></span><pre name="code" class="java">package com.etc.vo;public class Pet {private String petName;public String getPetName() {return petName;}public void setPetName(String petName) {this.petName = petName;}@Overridepublic String toString() {return "Pet [petName=" + petName + "]";}}
7.新建com.etc.action包,在包下新建RegisterAction.java
<span style="font-size:18px;"></span><pre name="code" class="java">package com.etc.action;import com.etc.vo.User;import com.opensymphony.xwork2.ActionSupport;public class RegisterAction extends ActionSupport{private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String execute() throws Exception {System.out.println(user);return "success";}}
8.新建success.jsp页面
<span style="font-size:18px;"></span><pre name="code" class="html"><html>  <body>   register success!  </body></html>
9.右键运行,在注册页面输入相应信息
<span style="font-size:18px;">  运行结果:跳转到success.jsp页面,输出register success!</span>
<span style="font-size:18px;">     <span style="white-space:pre"></span>在控制台输出:User [username=zoey, sex=female, age=10, birth=Sat Oct 02 00:00:00 GMT+08:00 2010, bool=true, hobby=[music, sports], pet=Pet [petName=petty]]</span>

注意点:
1)struts中int类型的数据必须要填,虽然不填时不影响运行,但是会报错:ognl.MethodFailedException
2)struts中接收的日期格式只能是yyyy-MM-dd,否则要自己进行转换。
3)上面的例子中,hobby是一个checkbox类型,里面的name属性必须保持一致,而且一定要有value属性,否则得到的结果就是on,而不是我们实际选中的值
4)其中,在User类中又有一个Pet的对象,声明:private Pet pet;一定要在Pet.java中生成toString()方法,才能得到pet的name值,否则得到的一直都是一个地址。
还有在register.jsp页面中,pet name的属性name的值写的是user.pet.name;
5)hobby除了可以是String[]类型,还有是List<String>类型
只要在User.java中:private String[] hobby ----->private List<String> hobby;
重新生成hobby的getter/setter方法,toString方法就可以了。
0 0
原创粉丝点击