基于struts2和hibernate的登录和注册功能——完整实例
时间: 2023-11-17 15:04:20 浏览: 58
以下是一个基于 Struts2 和 Hibernate 的登录和注册的完整实例。
首先,需要创建一个名为 `User` 的 JavaBean 类,用于表示用户信息:
```java
public class User {
private int id;
private String username;
private String password;
// getters and setters
}
```
接下来,需要配置 Hibernate 的 `SessionFactory`,以便在操作数据库时使用。可以在 `hibernate.cfg.xml` 文件中进行配置:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:mysql://localhost:3306/test?useSSL=false</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<mapping class="com.example.User"/>
</session-factory>
</hibernate-configuration>
```
接着,需要创建一个名为 `UserDao` 的类,用于操作数据库。在该类中,需要使用 Hibernate 的 API 进行增删改查操作:
```java
public class UserDao {
private SessionFactory sessionFactory;
public UserDao() {
Configuration configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
}
public void addUser(User user) {
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(user);
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
}
public User getUserByUsername(String username) {
Session session = sessionFactory.openSession();
Transaction tx = null;
User user = null;
try {
tx = session.beginTransaction();
Query query = session.createQuery("from User where username = :username");
query.setString("username", username);
user = (User) query.uniqueResult();
tx.commit();
} catch (HibernateException e) {
if (tx != null) {
tx.rollback();
}
e.printStackTrace();
} finally {
session.close();
}
return user;
}
}
```
然后,需要创建一个名为 `UserAction` 的类,用于处理用户登录和注册的请求。在该类中,需要使用 Struts2 的 API 进行请求处理:
```java
public class UserAction extends ActionSupport {
private User user;
private String confirmPassword;
private UserDao userDao = new UserDao();
public String login() {
User savedUser = userDao.getUserByUsername(user.getUsername());
if (savedUser == null || !savedUser.getPassword().equals(user.getPassword())) {
addActionError("Invalid username or password!");
return INPUT;
}
return SUCCESS;
}
public String register() {
if (!user.getPassword().equals(confirmPassword)) {
addActionError("Passwords don't match!");
return INPUT;
}
User savedUser = userDao.getUserByUsername(user.getUsername());
if (savedUser != null) {
addActionError("Username already exists!");
return INPUT;
}
userDao.addUser(user);
return SUCCESS;
}
// getters and setters
}
```
最后,需要在 `struts.xml` 文件中进行配置,以便 Struts2 能够正确地处理请求:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"/>
<package name="default" extends="struts-default">
<action name="login" class="com.example.UserAction" method="login">
<result name="success">/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
<action name="register" class="com.example.UserAction" method="register">
<result name="success">/success.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>
</struts>
```
其中,`success.jsp` 是登录或注册成功后显示的页面,`login.jsp` 和 `register.jsp` 分别是登录和注册的页面。
这样,基于 Struts2 和 Hibernate 的登录和注册功能的完整实例就完成了。