写这篇文章的时候,其实已经学了spring了,但这两个星期由于感情、身体、辞职等等一大堆的烦恼问题,到现在还没做ssh的整合练习,= =!所以还是先把之前写的 struts + hibernate 的例子发上来。
例子实现了简单的用户注册,流程是 1. 前台填写用户名、密码和email。2.后台判断信息的合法性,并判断是否是第一个注册的用户,如果是,则注册成管理员,否则注册成普通会员。
首先建个数据库和生成数据表,找开myeclipse,新建一个 web project,项目命名为User,使用myeclipse添加struts和hibernate的jar包,在添加hibernate包的时候,会有一个配置hibernate.cfg.xml的窗口,配置完后hibernate.cfg.xml文件大概会有如下相似的代码:
dialect:指定使用的数据库
connection.url:指定数据库url,可以看出我使用的数据库为hbm_user
connection.username:指定数据库用户名,我这里为root
connection.password:指定数据库密码
connection.driver_class:使用的数据库驱动
show_sql:是否在终端显示sql,测试的时间一般打开(true)
hbm2ddl.auto:自动建表,可以打开这个设置来建数据表。
然后,在src文件夹下建立如下图的包结构
com.hefan.action:用来存放action操作
com.hefan.dao:用来存放数据库操作
com.hefan.model:用来存放hibernate的orm
com.hefan.session:用来存放hibernate的session工厂类
com.hefan.util:存放了公共类
在com.hefan.model包下面新建一个User.java文件,新建User类,并增加如下的属性
private Integer id;
private String username;
private String password;
private String email;
和增加这些属性相对应的 setter 、getter,再在这个包下新歌建一个User.hbm.xml文件,文件内容如下:
再在同一个包下新建一个Admin类和Guest类,使这两个类同继承User类,这个例子中的这两个类不需要增加任何属性和方法,
然后在hibernate.cfg.xml文件里映射User.hbm.xml文件,增加如下代码:
<mapping resource="com/hefan/model/User.hbm.xml"/>
在com.hefan.action包里增加一个CreateDBAction.java文件,写入如下代码:
类CreateDBAction的createDB方法创建数据库,并把成功与否的信息保存在request的info变量中,然后定向到info所指向的页面,
打开struts-config.xml文件,在action-mappings下增加一个action
再在index.jsp里面增加如下代码
<jsp:forward page="createDB.do?method=createDB"></jsp:forward>
对createDb.do的请求,根据struts-config.xml里的配置会转发给CreateDBAction类,
method=createDB,指定类中的createDB方法。
运行项目,如果顺利会得到 “数据库创建成功...”的信息提示。
数据表user建立好后,向表中写入用户注册的信息,在com.hefan.dao包下编写User数据库操作类UserDao,
getUserCount()方法返回现有注册用户数量
saveUser(User user) 方法保存用户注册信息
List<User> getUsers() 方法返回所有己注册的用户的信息
在包com.hefan.util下面新建一个类Util,代码如下:
分别用来校验用户名、密码和Email。
在com.hefan.action包里增加一个UserAction类,用来处理用户注册请求,代码如下:
createUser() 方法用来增加用户
listUser() 方法用来列出己注册用户信息
然后在struts配置文件的action-mappings里增加一个action
此action将对user.do的请求转发给com.hefan.action.UserAction类,
在web主目录下新建一个jsp目录,再在此目录下新建一个info.jsp和listUser.jsp文件,info.jsp文件里增加代码:
${requestScope.info}
listUser.jsp文件里增加代码:
用来列出保存在request里的变量users的用户信息,
打开web主目录下的index.jsp文件,将之前的jsp:forward标签删除,因为数据表已经建立好了。
在index.jsp文件里加入用户注册表单,代码如下:
method=createUser 定义了要执行createUser方法。
最后配置hibernate.cfg.xml文件,将hbm2ddl.auto的值改为none,设置不自动建表。
执行项目,写入注册信息:
提交后查看数据库,已经增加了一条用户信息了,myeclipse的Console窗口也打印了两条sql语句
Hibernate: select count(*) as col_0_0_ from user user0_
Hibernate: insert into user (usrename, password, email, type) values (?, ?, ?, 'admin')
再一次注册一个新用户,myeclipse的Console窗口打印了如下两条sql语句
Hibernate: select count(*) as col_0_0_ from user user0_
Hibernate: insert into user (usrename, password, email, type) values (?, ?, ?, 'guest')
正如开始所想的那样,第一次注册的设置为系统管理员,否则设置为普通用用户,
执行完后使用phpmyadmin查看数据库,如下图:
,此程序存在很多缺陷,这里只做简单的介绍 struts 和hibernate使用方法