java web从零单排第八期《struts2》与JavaBean的结合使用

发布时间:2016-12-10 11:27:18 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"java web从零单排第八期《struts2》与JavaBean的结合使用",主要涉及到java web从零单排第八期《struts2》与JavaBean的结合使用方面的内容,对于java web从零单排第八期《struts2》与JavaBean的结合使用感兴趣的同学可以参考一下。

在上一节介绍的例子中,Login.java里有username和password两个属性,并且有set和get方法,如果JSP中表单的数量较大,会导致一种现象,set和get方法大量的存在于action中,如果我们把这些属性封装在一个JavaBean中,通过struts2框架,会更清晰明了。   1.新建一个登陆实体类,LoginInfo.java package bean; public class LoginInfo { private String username; 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; } private String password; } 2.控制层Login.java package controller; import bean.LoginInfo; import com.opensymphony.xwork2.ActionSupport; public class Login extends ActionSupport{ private LoginInfo logininfo; public LoginInfo getLogininfo() { return logininfo; } public void setLogininfo(LoginInfo logininfo) { this.logininfo = logininfo; } @Override public void validate() { // TODO Auto-generated method stub super.validate(); if("".equals(this.logininfo.getUsername())) { this.addFieldError("logininfo.username", "用户名不能为空"); } if("".equals(this.logininfo.getPassword())) { this.addFieldError("logininfo.password", "密码不能为空"); } } public String execute() { if(this.logininfo.getUsername().equals("hello")&&this.logininfo.getPassword().equals("struts2")) { return SUCCESS; } else { return ERROR; } } } 声明了一个LoginInfo类型的变量,并设置了set和get方法。其中this.addFieldError("logininfo.username", "用户名不能为空");username也要改成logininfo.username。 3.jsp代码: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> <s:form action="login.action" method="post" name="login"> <s:textfield name="logininfo.username" label="账号"></s:textfield> <br/> <s:textfield name="logininfo.password" label="密码"></s:textfield> <br/> <s:submit value="提交"></s:submit> </s:form> </body> </html> 其中name属性值有了变化都加上了logininfo,这样会自动封装到LoginInfo实体的属性中,如果名称不一致就不会完成自动封装,同学可以亲自试一试。 4.struts.xml文件没有变化,运行程序即可   5.尽管程序运行正确,但有一点,即: private LoginInfo logininfo;   我们并没有为LoginInfo创建对象,正常创建对象应该如下: private LoginInfo logininfo = new LoginInfo(); 这里其实用到java反射机制,如果对象为空,自动在底层通过反射机制实例化一个对象,然后调用其set方法。

上一篇:QT 多线程程序设计
下一篇:【LoadRunner】查看脚本请求日志和服务器返回值方法

相关文章

相关评论