基于struts2实现用户注册和登录功能 1. 完成用户注册和登录两项业务 2. 注册信息保存到数据库 3. 基于Struts实现注册和登录功能 4. 用JDBC完成数据库相关操作
时间: 2023-11-27 11:54:37 浏览: 168
首先,我们需要创建一个数据库,包含一个用户表,用于存储用户的注册信息。用户表包含以下字段:id(主键自增)、username、password、email。
接下来,我们需要在Struts2中创建两个Action类,一个用于处理用户注册,另一个用于处理用户登录。
1. 用户注册功能
首先,我们需要在注册页面中创建表单,用于输入用户的注册信息。表单中包含以下字段:用户名、密码、确认密码、邮箱。表单提交后,Struts2会将表单数据封装成一个User对象,并传递给RegisterAction类。
在RegisterAction类中,我们需要使用JDBC连接数据库,并将用户的注册信息保存到用户表中。如果保存成功,则跳转到登录页面;否则,返回注册页面并提示用户注册失败。
2. 用户登录功能
用户登录页面包含表单,用于输入用户名和密码。表单提交后,Struts2会将表单数据封装成一个User对象,并传递给LoginAction类。
在LoginAction类中,我们需要使用JDBC连接数据库,查询用户表中是否存在该用户,并验证密码是否正确。如果验证通过,则跳转到主页;否则,返回登录页面并提示用户登录失败。
下面是具体实现代码:
1. RegisterAction类
```java
public class RegisterAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute() throws Exception {
// 连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
// 插入用户信息
String sql = "insert into user(username, password, email) values(?, ?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setString(3, user.getEmail());
int result = ps.executeUpdate();
// 关闭连接
ps.close();
conn.close();
// 如果保存成功,则跳转到登录页面;否则,返回注册页面并提示用户注册失败
if (result > 0) {
return "success";
} else {
addActionError("注册失败,请重试!");
return "input";
}
}
public void validate() {
// 验证用户名是否为空
if (StringUtils.isEmpty(user.getUsername())) {
addFieldError("user.username", "用户名不能为空!");
}
// 验证密码是否为空
if (StringUtils.isEmpty(user.getPassword())) {
addFieldError("user.password", "密码不能为空!");
}
// 验证邮箱是否为空
if (StringUtils.isEmpty(user.getEmail())) {
addFieldError("user.email", "邮箱不能为空!");
}
}
}
```
2. LoginAction类
```java
public class LoginAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String execute() throws Exception {
// 连接数据库
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
// 查询用户信息
String sql = "select * from user where username = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, user.getUsername());
ResultSet rs = ps.executeQuery();
// 验证用户名和密码是否正确
if (rs.next() && rs.getString("password").equals(user.getPassword())) {
// 关闭连接
rs.close();
ps.close();
conn.close();
// 如果验证通过,则跳转到主页
return "success";
} else {
addActionError("用户名或密码错误,请重试!");
// 关闭连接
rs.close();
ps.close();
conn.close();
// 如果验证失败,则返回登录页面并提示用户登录失败
return "input";
}
}
public void validate() {
// 验证用户名是否为空
if (StringUtils.isEmpty(user.getUsername())) {
addFieldError("user.username", "用户名不能为空!");
}
// 验证密码是否为空
if (StringUtils.isEmpty(user.getPassword())) {
addFieldError("user.password", "密码不能为空!");
}
}
}
```
3. struts.xml配置文件
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="register" class="com.example.action.RegisterAction">
<result name="input">/register.jsp</result>
<result name="success">/login.jsp</result>
</action>
<action name="login" class="com.example.action.LoginAction">
<result name="input">/login.jsp</result>
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
```
4. register.jsp页面
```html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<h1>用户注册</h1>
<s:form action="register" method="post">
<s:textfield label="用户名" name="user.username" />
<s:password label="密码" name="user.password" />
<s:password label="确认密码" name="confirmPassword" />
<s:textfield label="邮箱" name="user.email" />
<s:submit value="注册" />
</s:form>
</body>
</html>
```
5. login.jsp页面
```html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<h1>用户登录</h1>
<s:form action="login" method="post">
<s:textfield label="用户名" name="user.username" />
<s:password label="密码" name="user.password" />
<s:submit value="登录" />
</s:form>
</body>
</html>
```
以上就是基于Struts2实现用户注册和登录功能的全部代码。
阅读全文