本文转载自:http://wolfsky2002.blog.163.com/blog/static/10343152010662127155/
目标:查询数据库表userinfo,并用页面进行展示
一、底层代码
1. 创建web service项目,添加NetUI及structs支持
2. 创建用于展示数据的类。添加VO包(view objects)"com.xxzx.vo",添加POJO类(属性与等查数据库的表对应),用于存放显示的数据
命名:建议与表名一致,本例命名为 UserInfo.java,代码如下:
3. 建立与数据库中表的关系。添加db包(存放数据库相关类)"com.xxzx.db",,右击,添加JDBC控件,命名UserInfoDB,然后选择数据源。注意:这里需要首先配置好服务器,参考《全方们体验workshop10.1 - 1》一文,在服务器上配置数据库。这一步,需要启动服务器,需要等待一段时间。
在生成的UserInfoDB.java类中,添加如下查询语句:
@JdbcControl.SQL(statement="{sql: sqlStatement}")
UserInfo getUserById(String sqlStatement) throws SQLException;
4. 添加业务逻辑。添加BO包(bussiness objects)"com.xxzx.bo",右击添加:自定义控件QueryBO。
(1)在QueryBO.java中添加如下接口:
public UserInfo[] getAllRecord()throws Exception;
public UserInfo[] getUserById()throws Exception;
(2)在*Impl.java中添加对接口的实现,:
首先在项目管理界面,右击*Impl.java,“插入/控件...”,选择数据库控件,即UserInfoDB
public class QueryBOImpl implements QueryBO, Serializable {
private static final long serialVersionUID = 1L;
@Control
private UserInfoDB userDB; // 注意,这里UserInfoDB 是接口,不是类,是通过添加控件实现的
public UserInfo[] getAllRecord() throws Exception{
// TODO Auto-generated method stub
String sql="select * from userinfo";
return userDB.getAll(sql);
}
public UserInfo getUserById(String id) throws Exception{
// TODO Auto-generated method stub
String sql="select * from userinfo where id = " + id;
return userDB.getUserById(sql);
}
}
至此,底层代码全部写完,实现了两种查询,下面将数据进行显示,建立页面流。
二、界面相关
1. 在vo包上右击:新建页面流,命名同工程名,如MyDemo,自动生成MyDemoController.java。
2. 进入页面流视图,添加一个展示结果的jsp页面,如MyDemoQueryUser.jsp,遵循一定的命名规则
3. 页面流视图,右击“表单bean”,选择“新建内部类表单Bean”,会在MyDemoController.java中添加一个新的嵌套类,代码如下:
@Jpf.FormBean
public static class NewFormBean implements java.io.Serializable {
private static final long serialVersionUID = 1L;
}
根据需要在表单中展示的数据要求,添加相应的成员变量及相应的setter、getter,方法同POJO类的操作,显示所有人信息的代码如下:
private UserInfo[] users = new UserInfo[]{};
public UserInfo[] getUsers() {
return users;
}
public void setUsers(UserInfo[] users) {
this.users = users;
}
4. 页面流视图,右击“引用的控件”,将前面编写的“QueryBO ”控件添加进来,在MyDemoController.java代码中体现为如下语句:
private QueryBO queryBO;
5. 添加新action,右击“操作”,选择“新建操作...”,各选项参考如下:
操作模板: 基本的方法操作
操作名: getAllRecord (可自行修改)
表单Bean: 选择刚才新建的Form表单
转发至: 选择刚刚新建的JSP文件,如MyDemoQueryUser.jsp
至此,总结一下:从JSP进入action后,应当从数据库读取数据,保存到QueryBOImpl对象的数组里,要将其显示,还需要将其存入到FormBean中,这一步应当就在处理action的函数中处理,添加如下蓝色代码:
@Jpf.Action(forwards = { @Jpf.Forward(name = "success", path = "MyDemoQueryUser.jsp") })
public Forward getAllRecord(
com.xxzx.vo.MyDemo5.MyDemo5Controller.NewFormBean form) {
Forward forward = new Forward("success");
try {
form.setUsers(queryBO.getAllRecord()); // 其实就这一行是核心,try.. catch异常处理可以用快捷键ctrl+1自动生成
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return forward;
}
6. 最后一步,在JSP页面上添加NewUI控件form,将其拖到jsp源码中的</netui:body>之前,也可以是其它需要的地方,会显示如下对话框,选择刚才建立的action,在后续步骤中根据需要选择,完成。