写一个包含调用java后端接口的登录页面 全面完善的代码
时间: 2024-03-07 10:46:41 浏览: 15
以下是一个包含调用Java后端接口的登录页面的全面完善的代码,包括前端HTML、CSS和JavaScript代码,以及后端Java代码。
HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>Login</h1>
<form id="login-form">
<div>
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
</div>
<div>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<button type="submit" id="login-btn">Login</button>
</div>
</form>
</div>
<script src="script.js"></script>
</body>
</html>
```
CSS代码:
```css
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #f4f4f4;
}
.container {
width: 500px;
margin: 50px auto;
background-color: #fff;
border-radius: 10px;
padding: 20px;
}
h1 {
text-align: center;
}
form {
display: flex;
flex-direction: column;
align-items: center;
}
label {
margin-right: 10px;
}
input[type="text"], input[type="password"], button[type="submit"] {
width: 100%;
margin-bottom: 10px;
padding: 10px;
border-radius: 5px;
border: none;
}
button[type="submit"] {
background-color: #4CAF50;
color: #fff;
cursor: pointer;
}
button[type="submit"]:hover {
background-color: #3e8e41;
}
```
JavaScript代码:
```javascript
const loginForm = document.getElementById('login-form');
const loginBtn = document.getElementById('login-btn');
loginForm.addEventListener('submit', (e) => {
e.preventDefault();
const username = document.getElementById('username').value;
const password = document.getElementById('password').value;
fetch('/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ username, password })
})
.then(response => response.json())
.then(data => {
if (data.success) {
window.location.href = '/dashboard';
} else {
alert(data.message);
}
})
.catch(error => {
console.error(error);
alert('An error occurred. Please try again later.');
});
});
```
Java代码:
```java
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (isValidUser(username, password)) {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write("{\"success\": true}");
} else {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write("{\"success\": false, \"message\": \"Invalid username or password.\"}");
}
}
private boolean isValidUser(String username, String password) {
// TODO: check username and password against database or other authentication mechanism
return true;
}
}
```
以上代码实现了一个简单的登录页面,包含了调用Java后端接口的功能。用户在登录页面输入用户名和密码后,前端JavaScript代码将用户名和密码发送到后端Java代码,后端Java代码根据用户名和密码验证用户身份,返回验证结果给前端JavaScript代码,前端JavaScript代码根据返回结果跳转到相应页面或显示错误信息。在实际开发中,还需要考虑到用户会话管理、密码加密、跨站请求伪造(CSRF)防护等安全问题。