(1)在MySQL中创建用户表,保存用户名和密码信息; (2)创建登录页面,加入JavaScript代码实现创建XMLHttpRequest对象的创建,并利用该对象向服务器发送POST请求。 (3)编写Servlet程序,访问数据库以验证用户名和密码是否合法,如果是合法用户,返回“欢迎XXX”的提示信息,否则显示“用户名或密码错误!”的提示信息。
时间: 2024-03-21 14:40:44 浏览: 66
好的,下面是该问题的解答:
1. 首先在MySQL中创建用户表。可以使用以下SQL语句:
```sql
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
```
该表包含三个字段:id、username和password,其中id为主键,自增长。
2. 创建登录页面,并加入JavaScript代码实现创建XMLHttpRequest对象和向服务器发送POST请求。可以使用以下代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<script>
function login() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var xhr = new XMLHttpRequest();
xhr.open("POST", "login", true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var response = xhr.responseText;
if (response == "success") {
window.location.href = "welcome.jsp";
} else {
alert("Username or password incorrect!");
}
}
};
xhr.send("username=" + username + "&password=" + password);
}
</script>
</head>
<body>
<form>
<label>Username:</label>
<input type="text" id="username"><br>
<label>Password:</label>
<input type="password" id="password"><br>
<button type="button" onclick="login()">Login</button>
</form>
</body>
</html>
```
该代码中,当用户点击登录按钮时,会调用login()函数。该函数首先获取用户名和密码,然后创建XMLHttpRequest对象,并向服务器发送POST请求,将用户名和密码作为参数。当服务器返回响应时,会根据响应内容跳转到欢迎页面或者弹出提示框。
3. 编写Servlet程序,访问数据库以验证用户名和密码是否合法。可以使用以下代码:
```java
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
stmt = conn.prepareStatement("SELECT * FROM user WHERE username=? AND password=?");
stmt.setString(1, username);
stmt.setString(2, password);
rs = stmt.executeQuery();
if (rs.next()) {
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.print("success");
out.flush();
} else {
response.sendError(HttpServletResponse.SC_FORBIDDEN);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
```
该代码中,当接收到来自客户端的POST请求时,首先从请求参数中获取用户名和密码。然后连接MySQL数据库,查询user表中是否存在该用户名和密码。如果存在,则返回“success”的响应内容,否则返回HTTP 403 Forbidden错误。注意需要在Web应用程序的WebContent/WEB-INF/lib目录下添加MySQL JDBC驱动程序的jar包。
阅读全文