请稍等,我将为您详细讲解“Servlet+JavaBean+JSP打造Java Web注册与登录功能”的完整攻略。
1. 实现功能介绍
本次Java Web注册与登录功能实现,主要涉及三个模块:Servlet、JavaBean和JSP。其中Servlet实现用户请求的处理和响应,JavaBean实现数据的封装和处理,而JSP则是负责页面的显示。
具体实现的功能如下:
- 注册功能:输入用户名和密码,将其保存到数据库中,提示注册成功或失败;
- 登录功能:输入用户名和密码,与数据库中的信息进行比对,如果一致则进入主页面,否则提示登录失败;
- 注销功能:用户在主页面中可以选择退出登录,返回登录页面。
2. 实现过程
2.1 数据库准备
首先,我们需要准备一个MySQL数据库,用来存储用户信息。创建一个名为webuser
的数据库,并创建一个user
表,表结构如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
2.2 创建JavaBean
接着,我们需要创建一个JavaBean,用于封装用户信息。我们创建一个名为User
的类,类中包含id
、username
和password
三个属性,以及相应的getter和setter方法。代码示例如下:
public class User {
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.3 创建Servlet
接下来,我们创建一个Servlet,用于处理用户请求,并将数据保存到数据库中。这里我们创建一个名为RegisterServlet
的Servlet,代码示例如下:
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RegisterServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = new User();
user.setUsername(username);
user.setPassword(password);
UserDao userDao = new UserDaoImpl();
boolean result = userDao.addUser(user);
if(result) {
response.sendRedirect("register_success.jsp");
} else {
response.sendRedirect("register_fail.jsp");
}
}
}
上述代码中,我们通过doPost()
方法获取用户注册信息,并将其封装为一个User
对象,然后调用UserDao
接口的addUser()
方法将其存入到数据库中。最后判断操作结果,保存成功则跳转到register_success.jsp
,否则跳转到register_fail.jsp
。
UserDao
接口和实现类的代码如下:
public interface UserDao {
public boolean addUser(User user);
public User getUser(String username);
}
public class UserDaoImpl implements UserDao {
@Override
public boolean addUser(User user) {
Connection conn = null;
PreparedStatement ps = null;
try {
conn = DbUtil.getConnection();
String sql = "INSERT INTO user (username,password) VALUES (?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
int result = ps.executeUpdate();
if(result > 0) {
return true;
}
} catch(Exception e) {
e.printStackTrace();
} finally {
DbUtil.release(conn, ps, null);
}
return false;
}
@Override
public User getUser(String username) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = DbUtil.getConnection();
String sql = "SELECT * FROM user WHERE username=?";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
rs = ps.executeQuery();
if(rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
return user;
}
} catch(Exception e) {
e.printStackTrace();
} finally {
DbUtil.release(conn, ps, rs);
}
return null;
}
}
2.4 创建JSP页面
最后,我们需要创建JSP页面,用于显示页面内容和接收用户输入。这里我们创建三个页面:分别为register.jsp
、register_success.jsp
和register_fail.jsp
。
register.jsp
代码示例如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<h1>用户注册</h1>
<form action="register" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="注册"></td>
</tr>
</table>
</form>
</body>
</html>
register_success.jsp
和register_fail.jsp
比较简单,这里就不贴出代码了。
2.5 实现登录和注销功能
完成上述注册功能后,我们接着实现登录和注销功能。这里我们创建一个名为LoginServlet
的Servlet,用于处理登录请求,代码示例如下:
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
UserDao userDao = new UserDaoImpl();
User user = userDao.getUser(username);
if(user != null && user.getPassword().equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("user", username);
response.sendRedirect("main.jsp");
} else {
response.sendRedirect("login_fail.jsp");
}
}
}
我们通过调用UserDao
接口的getUser()
方法从数据库中获取用户信息,并判断用户名和密码是否匹配。如果匹配成功,则将用户名保存到Session中,跳转到main.jsp
页面。否则跳转到login_fail.jsp
页面。
为了实现注销功能,我们还需要创建一个名为LogoutServlet
的Servlet,代码示例如下:
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LogoutServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.removeAttribute("user");
response.sendRedirect("login.jsp");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
上述代码我们通过调用HttpSession
的removeAttribute()
方法删除Session中的用户信息,然后将页面重定向到login.jsp
。
注:main.jsp
和login.jsp
这两个页面也需要我们自己编写。
2.6 示例
这里提供两个小例子,一个演示了如何注册用户,一个演示了如何登录,详见下方。
示例1:注册用户
- 访问
http://localhost:8080/WebRegister/register.jsp
,进入注册页面; - 在注册页面输入用户名和密码,并点击“注册”按钮;
- 注册成功则跳转到
register_success.jsp
页面,否则跳转到register_fail.jsp
页面。
示例2:用户登录
- 访问
http://localhost:8080/WebRegister/login.jsp
,进入登录页面; - 在登录页面输入用户名和密码,并点击“登录”按钮;
- 如果用户名和密码匹配,则进入
main.jsp
页面,否则跳转到login_fail.jsp
页面; - 在
main.jsp
页面中,用户可以选择退出登录,返回login.jsp
页面。
3. 总结
通过以上步骤实现了Java Web注册与登录功能,我们使用了Servlet、JavaBean和JSP三个模块来完成这个功能,分别负责请求处理、数据封装和页面显示。同时,我们还使用了MySQL作为数据存储方式,并通过JDBC连接数据库。最后,提供了两个小例子来演示这个功能的使用,供读者参考。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Servlet+JavaBean+JSP打造Java Web注册与登录功能 - Python技术站