下载地址:http://www.askyear.com/download.jsp?id=f63bffbfff6b4411b072de66c282a5c5
本示例程序可直接在eclipse下运行
本示例共有两个类和两个jsp文件:
用户类:User.java("帐号", "昵称", "密码", "邮箱", "类型", "状态", "注册时间")
用户业务逻辑操作服务类:UserS.java
注册用户列表页:userList.jsp
用户注册编辑页:userEdit.jsp
建表脚本:db.sql
步骤1:建表
db.sql包含mssql和mysql两种建表SQL语句,如下:
/*mssql*/
CREATE TABLE [sys_user] (
[member] [varchar] (32) NOT NULL ,
[name] [varchar] (30) NOT NULL ,
[password] [varchar] (64) NOT NULL ,
[email] [varchar] (50) NOT NULL ,
[type] [varchar] (20) NULL ,
[useable] [bit] NULL ,
[createTime] [datetime] NULL ,
CONSTRAINT [PK_sys_user] PRIMARY KEY CLUSTERED
(
[member]
) ON [PRIMARY]
) ON [PRIMARY]
GO
/*mysql*/
create table sys_user(
member varchar(32) not null,
name varchar(30) not null,
email varchar(100) not null,
type varchar(30),
password varchar(16),
useable bool,
createTime datetime);
步骤2:配置数据库连接
askyear数据库连接配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- jdbc表示默认的数据库连接 -->
<root cacheId="jdbc">
<Jdbc>
<url>jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=Cursor;DatabaseName=gru</url>
<driver>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver>
<user>sa</user>
<password></password>
<min>1</min>
<step>2</step>
<max>50</max>
<showSql>true</showSql>
</Jdbc>
</root>
您可能需要修改DatabaseName,user和password。
步骤3:运行
http://localhost:8080/demo1_user
运行后可在控制台看到如下日志输出:
2009-12-28 22:14:44 [INFO] - Askyear:新增数据库连接2条[共2条][jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=Cursor;DatabaseName=gru:sa:]
2009-12-28 22:14:44 [INFO] - | select count(*) from sys_user where 1=1
2009-12-28 22:14:44 [INFO] - Askyear:归还数据库连接1条[共2条,可用2条][jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=Cursor;DatabaseName=gru:sa:]
2009-12-28 22:14:44 [INFO] - | select top 10 member,name,password,email,type,useable,createtime from sys_user where 1=1
2009-12-28 22:14:44 [INFO] - Askyear:归还数据库连接1条[共2条,可用2条][jdbc:microsoft:sqlserver://localhost:1433;SelectMethod=Cursor;DatabaseName=gru:sa:]
附:User.java
package com.askyear.demo.bean;
import java.util.Date;
import com.askyear.db.ATable;
import com.askyear.db.key.String32Key;
/**
* 用户
*
* @author askyear.com
*
*/
public class User extends ATable {
public static final String USER_SESSION = "user";
private static final long serialVersionUID = -8942196092377147945L;
private String member;
private String name;
private String password;
private String email;
private String type;
private Boolean useable;
private Date createTime;
public User() {
this.initSelf();
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMember() {
return member;
}
public void setMember(String member) {
this.member = member;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Boolean getUseable() {
return useable;
}
public void setUseable(Boolean useable) {
this.useable = useable;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public void buildKeyIfNull() {
if (this.member == null || this.member.length() == 0) {
this.member = String32Key.getKeyValue();
}
if (this.useable == null)
this.useable = true;
if (this.createTime == null)
this.createTime = new Date();
}
public Object getPropertyValue(int index) {
switch (index) {
case 0:
return member;
case 1:
return name;
case 2:
return password;
case 3:
return email;
case 4:
return type;
case 5:
return useable;
case 6:
return createTime;
default:
throw new ArrayIndexOutOfBoundsException("访问越界:" + index);
}
}
public void initSelf() {
this.setTableName("sys_user");
this.setTableChinaName("系统用户");
key = new int[] { 0 };
property = new String[] { "member", "name", "password", "email", "type", "useable", "createTime" };
field = new String[] { "member", "name", "password", "email", "type", "useable", "createTime" };
propertyName = new String[] { "帐号", "昵称", "密码", "邮箱", "类型", "状态", "注册时间" };
}
public void setPropertyValue(int index, Object value) {
switch (index) {
case 0:
this.member = parseString(value);
break;
case 1:
this.name = parseString(value);
break;
case 2:
this.password = parseString(value);
break;
case 3:
this.email = parseString(value);
break;
case 4:
this.type = parseString(value);
break;
case 5:
this.useable = parseBoolean(value);
break;
case 6:
this.createTime = parseDate(value);
break;
default:
throw new ArrayIndexOutOfBoundsException("访问越界:" + index);
}
}
}
UserS.java
package com.askyear.demo.server;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.PageContext;
import com.askyear.demo.bean.User;
import com.askyear.html.ParameterBean;
import com.askyear.server.AServer;
/**
* 用户
*
* @author askyear.com
*
*/
public class UserS extends AServer {
public void server(PageContext pageContext) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
User user = new User();
// 从request读取参数值到user
ParameterBean p = ParameterBean.newInstance(request, user, getPrefix(request));
int count = 0;
if (p.doAdd()) {
count = this.add(user);
} else if (p.doUpdate()) {
// 判断member,name,email不能为空
if (p.isNotEmpty(new int[] { 0, 1, 3 }, pageContext)) {
User table = new User();
table.setMember(user.getMember());
count = this.loadByKey(table);
if (count > 0) {
// 用户存在
table.setName(user.getName());
table.setEmail(user.getEmail());
table.setType(user.getType());
count = this.update(table);
}
}
} else if (p.doDelete()) {
count = this.delete(user);
}
if (count <= 0) {
// 操作失败
this.setUnForward(request);
}
}
}
userEdit.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.askyear.com/tld/askyear.tld" prefix="a"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户编辑</title>
<script type="text/javascript">
function post_form(opration){
form1.domethod.value=opration;
form1.submit();
}
</script>
</head>
<body>
<a:action prefix="user_" forward="userList.jsp" doClass="com.askyear.demo.server.UserS"></a:action>
<!-- { "帐号", "昵称", "密码", "邮箱", "类型", "状态", "注册时间" } -->
<form name="form1" method="post" action="userEdit.jsp">
<input type="hidden" name="domethod"/>
<c:if test="${not empty param.user_member}"><input type="hidden" name="user_member" value="${param.user_member}"/></c:if>
<a:tableBean readOnly="true" id="user" prefix="user_" keyValue="${param.user_member}" tableClass="com.askyear.demo.bean.User"></a:tableBean>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td>昵称</td><td><input name="user_name" value="${user.name}"/></td>
</tr>
<tr>
<td>邮箱</td><td><input name="user_email" value="${user.email}"/></td>
</tr>
<tr>
<td>密码</td><td><input type="password" name="user_password"/></td>
</tr>
<tr><td colspan="2">
<input type="button" value="保存" οnclick="post_form('${empty param.user_member?"add":"update"}');"/>
<input type="button" value="返回列表" οnclick="window.open('userList.jsp','_self');"/>
</td></tr>
</table>
</form>
</body>
</html>
userList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.askyear.com/tld/askyear.tld" prefix="a"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户列表</title>
<style type="text/css">
.pageBar {text-align: right;}
.pageBar a,span{margin-left: 10px;}
</style>
</head>
<body>
<a:tableBeanList id="userList" tableClass="com.askyear.demo.bean.User" fromTable="true" countTotalRows="true" pageIndex="" pageSize="10" readOnly="true"></a:tableBeanList>
<!-- { "帐号", "昵称", "密码", "邮箱", "类型", "状态", "注册时间" } -->
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td>帐号</td><td>昵称</td><td>状态</td><td>注册时间</td>
</tr>
<c:forEach var="user" items="${userList}">
<tr>
<td><a href="userEdit.jsp?user_member=${user.member}">${user.member}</a></td>
<td>${user.name}</td>
<td>${true eq user.useable?"启用":"停用"}</td>
<td>${user.createTime}</td>
</tr>
</c:forEach>
<tr><td colspan="4">
<div class="pageBar">10条/页<a:pagination id="" href="userList.jsp?t=1" total="${total_rows_userList}" pageSize="10"></a:pagination> 共${total_rows_userList}条</div>
</td></tr>
</table>
<p><input type="button" value="添加用户" οnclick="window.open('userEdit.jsp','_self');"/></p>
</body>
</html>
来源:http://www.askyear.com