ModelDriven接口
在开发中常常使用GET方法向服务器查询数据,使用POST方法向服务器提交数据。
当使用POST的方法提交数据时,如果数据量较大,在获取数据时,可能会造成代码的臃肿,而Struts2框架为我们提供了一个ModelDriven接口,对于实现了该接口的Action来说,只需定义了相应的Model,Struts2框架就会自动把用户提交的HTTP信息赋予相应的Model,需要注意的是,在Action中的Model对象必须实例化。
示例如下:
(1)创建一个名为UserInfo的Model :
publicclass UserInfo { private String name; //姓名 privateintage;//年龄 private String address;//住址 private String phoneNumber;//电话 private String email;//邮箱 public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } publicint getAge() { returnage; } publicvoid setAge(intage) { this.age = age; } public String getAddress() { returnaddress; } publicvoid setAddress(String address) { this.address = address; } public String getPhoneNumber() { returnphoneNumber; } publicvoid setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getEmail() { returnemail; } publicvoid setEmail(String email) { this.email = email; } @Override public String toString() { return"[name="+name+",age="+age+",address="+address+",phoneNumber="+phoneNumber+",email="+email+"]"; } } |
(2)创建一个实现了ModelDriven接口的Action类:
publicclass UserInfoAction implements ModelDriven { private UserInfo user=new UserInfo(); private String message; public String add(){ return"success"; } public UserInfo getUser() { returnuser; } publicvoid setUser(UserInfo user) { this.user = user; } public String getMessage() { returnmessage; } publicvoid setMessage(String message) { this.message = message; } @Override public Object getModel() { returnuser; } } |
(3)在Struts.xml中添加action:
<action name="userInfo" class="com.chen.action.UserInfoAction" method="add"> <result name="success">/userInfo/showUserInfo.jsp</result> </action> |
(4)编写提交信息的前端界面的核心代码:
<form action="${pageContext.request.contextPath}/userInfo.action"> 姓名:<input type="text" name="name"><br> 年龄:<input type="text" name="age"><br> 住址:<input type="text" name="address"><br> 电话:<input type="text" name="phoneNumber"><br> 邮箱:<input type="text" name="email"><br> <input type="submit" value="submit"> <input type="reset" value="reset"><br> </form> |
(5)显示Model详细信息界面的核心代码:
<body> ${user.name}<br> ${user.age}<br> ${user.address}<br> ${user.phoneNumber}<br> ${user.email}<br> </body> |