本文实例为大家分享了struts2和hibernate实现登录和注册功能,供大家参考,具体内容如下
1、该项目使用MySQL数据库,数据库名为test,表名info,如图所示:
2、配置web.xml(Struts2使用)
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* index.jsp
3、编写视图组件(JSP页面)
(1)登录页面login.jsp
(2)登陆成功页面success.jsp
Insert title here
|
欢迎 |
(3)注册页面register.jsp
Insert title here
4、业务控制器Action
(1)登录页面对应的业务控制器LoginAction.java
其中,重写valiadate()方法,进行手工验证
package loginRegisterAction;
import java.util.List;
import loginRegisterDao.LoginRegisterInfo;
import PO.UserInfoPO;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String userName;
private String password;
private String message="error";
private List list;
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;
}
public void validate(){
if(this.getUserName()==null||this.getUserName().length()==0){
addFieldError("userName", "用户名不能为空!");
}else{
LoginRegisterInfo info= new LoginRegisterInfo();
list=info.queryInfo("userName", this.getUserName());
if(list.size()==0){
addFieldError("userName", "该用户尚未注册");
}else{
UserInfoPO ui=new UserInfoPO();
for(int i=0;i
(2)注册页面对应的业务控制器RegisterAction.java
package loginRegisterAction;
import java.util.List;
import loginRegisterDao.LoginRegisterInfo;
import PO.UserInfoPO;
import com.opensymphony.xwork2.ActionSupport;
public class RegisterAction extends ActionSupport {
private String userName;
private String password1;
private String password2;
private String mess=ERROR; //ERROR等同于"error"
private List list;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword1() {
return password1;
}
public void setPassword1(String password1) {
this.password1 = password1;
}
public String getPassword2() {
return password2;
}
public void setPassword2(String password2) {
this.password2 = password2;
}
public void validate(){
if(this.getUserName()==null||this.getUserName().length()==0){
addFieldError("userName", "用户名不能为空!");
}else{
LoginRegisterInfo info= new LoginRegisterInfo();
list=info.queryInfo("userName", this.getUserName());
UserInfoPO ui=new UserInfoPO();
for(int i=0;i
5、在struts.xml中配置Action
/login.jsp /register.jsp /register.jsp /success.jsp /login.jsp /login.jsp
6、Hibernate的配置文件
使用Hibernate需要通过Hibernate的配置文件加载数据库驱动以及与数据建立连接,配置文件为hibernate.cfg.xml
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8 root org.hibernate.dialect.MySQL5Dialect
7、加载上面Hibernate配置文件的类(HIbernateSessionFactory.java)
package addHibernateFile;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
private SessionFactory sessionFactory;
public HibernateSessionFactory(){
}
public SessionFactory config(){
try{
Configuration configuration= new Configuration();
Configuration configure=configuration.configure("hibernate.cfg.xml");
return configure.buildSessionFactory();
}catch(Exception e){
e.getMessage();
return null;
}
}
public Session getSession(){
sessionFactory=config();
return sessionFactory.openSession();
}
}
8、PO对象以及对应的映射文件(在同一个包下)
(1)PO对象的类UserInfoPO.Java
package PO;
/*
* PO对象(持久化对象)的类,与数据库相对应
*/
public class UserInfoPO {
private int id;
private String userName;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
}
(2) PO对应的映射文件UserInfoPO.hbm.xml
9、完成登录和注册业务功能
将登录和注册业务功能封装到类LoginRegisterInfo(JavaBean)中
数据库操作类LoginRegisterInfo.java:
package loginRegisterDao;
/*
* 登录和注册业务功能,封装到这个JavaBean
*/
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import PO.UserInfoPO;
import addHibernateFile.HibernateSessionFactory;
public class LoginRegisterInfo {
private Session session;
private Transaction transaction;
private Query query;
HibernateSessionFactory getSession;
public LoginRegisterInfo(){
}
public String saveInfo(UserInfoPO info){
String mess="error";
getSession=new HibernateSessionFactory();
session=getSession.getSession();
try{
transaction=session.beginTransaction();
session.save(info);
transaction.commit();
mess="success";
return mess;
}catch(Exception e){
message("RegisterInfo.error:"+e);
e.printStackTrace();
return null;
}
}
public List queryInfo(String type,Object value){
getSession=new HibernateSessionFactory();
session=getSession.getSession();
try{
String hqlsql="from UserInfoPO as u where u.userName=?";
query=session.createQuery(hqlsql);
query.setParameter(0, value);
List list=query.list();
transaction=session.beginTransaction();
transaction.commit();
return list;
}catch(Exception e){
message("LoginRegisterInfo类中有异常,异常为::"+e);
e.printStackTrace();
return null;
}
}
public void message(String mess){
int type=JOptionPane.YES_NO_OPTION;
String title="提示信息";
JOptionPane.showMessageDialog(null, mess,title,type);
}
}
创造与魔法九游版本
创造与魔法九游版采用了极致创新的魔幻游戏玩法感受,游戏具备最
疯狂医院达什医生中文版(Crazy Hospital)
疯狂医院达什医生最新版是一款医院模拟经营类游戏,逼真的场景画
宝宝庄园官方版
宝宝庄园官方版是一款超级经典好玩的模拟经营类型的手游,这个游
桃源记官方正版
桃源记是一款休闲娱乐类的水墨手绘风格打造的模拟经营手游。玩家
长途巴士模拟器手机版
长途巴士模拟器汉化版是一款十分比真好玩的大巴车模拟驾驶运营类