使用JSP实现简单的用户登录注册页面示例代码解析
时间: 2024-01-24 12:03:54 浏览: 23
好的,下面是一个使用 JSP 实现简单的用户登录注册页面的示例代码及解析:
1. 登录页面代码(login.jsp):
```html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<h3>用户登录</h3>
<form action="${pageContext.request.contextPath}/login" method="post">
用户名:<input type="text" name="username" /><br />
密码:<input type="password" name="password" /><br />
<input type="submit" value="登录" />
</form>
</body>
</html>
```
这是一个简单的登录页面,其中:
- `${pageContext.request.contextPath}` 是 JSP 内置对象 `pageContext` 的一个属性,用于获取当前应用的根路径;
- `action` 属性指定了登录表单提交的地址,这里是 `/login`,对应下面的 `LoginServlet`。
2. 登录功能实现(LoginServlet.java):
```java
package com.example.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class LoginServlet
*/
@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 {
request.getRequestDispatcher("login.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if ("admin".equals(username) && "123456".equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
response.sendRedirect(request.getContextPath() + "/welcome.jsp");
} else {
request.setAttribute("msg", "用户名或密码错误!");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
```
这是一个简单的登录功能实现,其中:
- `doGet` 方法用于显示登录页面,直接转发到 `login.jsp`;
- `doPost` 方法用于处理登录表单提交,获取用户名和密码,如果用户名和密码正确,将用户名保存到 Session 中,然后重定向到 `welcome.jsp`,否则将错误信息保存到 request 中,然后转发回 `login.jsp`。
3. 注册页面代码(register.jsp):
```html
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<h3>用户注册</h3>
<form action="${pageContext.request.contextPath}/register" method="post">
用户名:<input type="text" name="username" /><br />
密码:<input type="password" name="password" /><br />
确认密码:<input type="password" name="confirmPassword" /><br />
<input type="submit" value="注册" />
</form>
</body>
</html>
```
这是一个简单的注册页面,其中:
- `action` 属性指定了注册表单提交的地址,这里是 `/register`,对应下面的 `RegisterServlet`。
4. 注册功能实现(RegisterServlet.java):
```java
package com.example.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class RegisterServlet
*/
@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 {
request.getRequestDispatcher("register.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String confirmPassword = request.getParameter("confirmPassword");
if (!password.equals(confirmPassword)) {
request.setAttribute("msg", "两次输入的密码不一致!");
request.getRequestDispatcher("register.jsp").forward(request, response);
return;
}
// TODO: 将用户名和密码保存到数据库中
response.sendRedirect(request.getContextPath() + "/login.jsp");
}
}
```
这是一个简单的注册功能实现,其中:
- `doGet` 方法用于显示注册页面,直接转发到 `register.jsp`;
- `doPost` 方法用于处理注册表单提交,获取用户名、密码和确认密码,如果密码和确认密码不一致,将错误信息保存到 request 中,然后转发回 `register.jsp`,否则将用户名和密码保存到数据库中,然后重定向到 `login.jsp`。
以上就是一个简单的使用 JSP 实现用户登录注册页面的示例代码及解析。