用Javaweb完成登录注册
时间: 2024-05-27 09:10:52 浏览: 12
以下是一个简单的JavaWeb登录注册示例:
1. 创建数据库表
首先,我们需要创建一个MySQL数据库,然后在其中创建两个表:user和login_history。
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`email` varchar(50) DEFAULT NULL,
`phone` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `login_history` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`login_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `FK_login_history_user` (`user_id`),
CONSTRAINT `FK_login_history_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. 创建JavaBean类
我们需要创建一个JavaBean类来表示用户对象。这个类应该包含以下属性:id、username、password、email和phone。
public class User {
private int id;
private String username;
private String password;
private String email;
private String phone;
// getters and setters
}
3. 创建DAO类
我们需要创建一个DAO类来处理数据库操作,包括插入、更新和查询用户信息等。
public class UserDao {
// JDBC连接相关的代码
// 添加用户
public void addUser(User user) {
// 写入数据库表
}
// 根据用户名查询用户
public User getUserByUsername(String username) {
// 从数据库表中查询用户
}
// 根据用户ID查询登录历史记录
public List<LoginHistory> getLoginHistoryByUserId(int userId) {
// 从数据库表中查询登录历史记录
}
}
4. 创建Servlet类
我们需要创建一个Servlet类来处理用户的登录和注册请求。在这个类中,我们需要使用DAO类来处理数据库操作,并将结果返回给用户。
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private UserDao userDao;
public void init() throws ServletException {
userDao = new UserDao();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = userDao.getUserByUsername(username);
if (user != null && user.getPassword().equals(password)) {
// 登录成功
HttpSession session = request.getSession();
session.setAttribute("user", user);
// 记录登录历史
LoginHistoryDao loginHistoryDao = new LoginHistoryDao();
LoginHistory loginHistory = new LoginHistory();
loginHistory.setUserId(user.getId());
loginHistory.setLoginTime(new Date());
loginHistoryDao.addLoginHistory(loginHistory);
response.sendRedirect("home.jsp");
} else {
// 登录失败
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
private UserDao userDao;
public void init() throws ServletException {
userDao = new UserDao();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
String phone = request.getParameter("phone");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setEmail(email);
user.setPhone(phone);
userDao.addUser(user);
response.sendRedirect("login.jsp");
}
}
5. 创建JSP页面
最后,我们需要创建一些JSP页面来呈现登录和注册表单,并显示用户的登录历史记录等信息。
login.jsp:
<html>
<head>
<title>登录</title>
</head>
<body>
<h1>登录</h1>
<% if (request.getAttribute("error") != null) { %>
<p style="color:red;"><%= request.getAttribute("error") %></p>
<% } %>
<form method="post" action="login">
<label>用户名:</label>
<input type="text" name="username" /><br>
<label>密码:</label>
<input type="password" name="password" /><br>
<input type="submit" value="登录" />
</form>
<p>还没有账户?<a href="register.jsp">注册</a></p>
</body>
</html>
register.jsp:
<html>
<head>
<title>注册</title>
</head>
<body>
<h1>注册</h1>
<form method="post" action="register">
<label>用户名:</label>
<input type="text" name="username" /><br>
<label>密码:</label>
<input type="password" name="password" /><br>
<label>邮箱:</label>
<input type="text" name="email" /><br>
<label>电话:</label>
<input type="text" name="phone" /><br>
<input type="submit" value="注册" />
</form>
<p>已有账户?<a href="login.jsp">登录</a></p>
</body>
</html>
home.jsp:
<html>
<head>
<title>欢迎</title>
</head>
<body>
<h1>欢迎</h1>
<% User user = (User) request.getSession().getAttribute("user"); %>
<p>用户名: <%= user.getUsername() %> </p>
<p>邮箱: <%= user.getEmail() %> </p>
<p>电话: <%= user.getPhone() %> </p>
<h2>登录历史</h2>
<table>
<tr>
<th>ID</th>
<th>登录时间</th>
</tr>
<% List<LoginHistory> loginHistoryList = loginHistoryDao.getLoginHistoryByUserId(user.getId()); %>
<% for (LoginHistory loginHistory : loginHistoryList) { %>
<tr>
<td> <%= loginHistory.getId() %> </td>
<td> <%= loginHistory.getLoginTime() %> </td>
</tr>
<% } %>
</table>
<p><a href="logout.jsp">退出</a></p>
</body>
</html>
以上就是一个简单的JavaWeb登录注册示例。当然,这只是示例,实际开发中还需要进行更多的安全性和可靠性方面的处理。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)