,使用纯Servlet技术实现网站登陆功能,要求链接数据库,创建一个User表。User表包括id、用户名,密码,昵称,用户创建日期,性别,年龄这些字段,并使用cookie技术实现三天免登陆功能。要求有用户密码登陆错误提示,以及用户名和密码格式检验,验证码,并有友好的HTML界面
时间: 2024-05-10 09:17:08 浏览: 103
实现网站登陆功能,需要以下几个步骤:
1. 链接数据库,创建User表,包括id、用户名,密码,昵称,用户创建日期,性别,年龄这些字段。
2. 创建一个登录页面,包括用户名和密码输入框,验证码输入框,以及记住密码的勾选框和登录按钮。
3. 实现用户名和密码格式检验,确保输入的用户名和密码符合规范,例如长度限制,字符限制等等。
4. 实现验证码,可以通过生成随机数,或者使用第三方库来实现。
5. 实现三天免登陆功能,可以使用cookie技术,将用户名和密码保存在cookie中,并设置过期时间为三天。
6. 实现用户密码登陆错误提示,如果用户输入的密码错误,需要给予友好的提示,告诉用户错误的原因。
7. 实现友好的HTML界面,可以通过CSS样式表来美化界面,让用户使用起来更加舒适。
下面是一个使用纯Servlet技术实现网站登陆功能的示例代码:
```java
@WebServlet(urlPatterns = { "/login" })
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/mydatabase";
private static final String USER = "root";
private static final String PASS = "root";
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Connection conn = null;
PreparedStatement stmt = null;
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String rememberMe = request.getParameter("rememberMe");
String captcha = request.getParameter("captcha");
HttpSession session = request.getSession();
String captchaCode = (String) session.getAttribute("captchaCode");
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
String sql = "SELECT * FROM user WHERE username=? AND password=?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
String nickname = rs.getString("nickname");
session.setAttribute("username", username);
session.setAttribute("nickname", nickname);
if ("on".equals(rememberMe)) {
Cookie cookie1 = new Cookie("username", username);
cookie1.setMaxAge(60 * 60 * 24 * 3);
response.addCookie(cookie1);
Cookie cookie2 = new Cookie("password", password);
cookie2.setMaxAge(60 * 60 * 24 * 3);
response.addCookie(cookie2);
}
response.sendRedirect("index.jsp");
} else {
if (captcha.equals(captchaCode)) {
out.println("<script>alert('用户名或密码错误,请重新输入!')</script>");
out.println("<meta http-equiv='refresh' content='0;url=login.jsp'>");
} else {
out.println("<script>alert('验证码错误,请重新输入!')</script>");
out.println("<meta http-equiv='refresh' content='0;url=login.jsp'>");
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在上述代码中,我们先获取用户输入的用户名、密码、记住密码和验证码,然后从数据库中查询是否存在该用户,如果存在,则将用户名和昵称保存在session中,并根据用户是否选择了记住密码选项,来保存用户名和密码的cookie,同时重定向到主页;如果不存在,则根据验证码是否正确给予相应的提示信息。需要注意的是,在数据库中,我们需要先创建一个user表,并添加相应的字段。同时,在JSP页面中,我们需要注意对输入框和按钮的样式进行美化,让页面更加友好。
阅读全文