前后端分离
- 前端:vue3,vite,pinia
- 后端:原生servlet,mybaties,数据库MySQL
l 用户账户:包括注册、登录、个人信息管理,以及密码找回功能。
l 课程浏览:能够按照乐器种类、难度级别、教师等条件筛选和搜索课程。
l 课程学习:查看所选课程的教学视频,可以随时暂停、快进和后退,还能查看视频下方的文字说明和相关资料。
l 课程评价:可以对课程内容和教师进行评价,还能查看其他学生的评价。
l 用户管理:查看和管理学生的用户信息,可以封禁违规用户。
l 课程管理:更改所有课程的信息。
相关代码如下
@WebServlet(value = "/login")
public class UserLogin extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json;charset=UTF-8");
// 从请求体中获取输入流
InputStream inputStream = req.getInputStream();
// 使用 JsonReader 解析输入流中的 JSON 数据
JsonReader jsonReader = Json.createReader(new InputStreamReader(inputStream));
JsonObject jsonObject = jsonReader.readObject();
jsonReader.close();
// 获取 JSON 数据中的 username 和 password 字段值
String username = jsonObject.getString("username");
String password = jsonObject.getString("password");
// 获取 SqlSession 实例
SqlSession sqlSession = MyBatisUtil.getSqlSession();
// 创建 UserDao 对象
UserDao userDao = new UserDao(sqlSession);
try {
// 调用 UserMapper 的方法进行验证
boolean isValidLogin = userDao.validateLogin(username, password);
// 构建响应 JSON
JsonObjectBuilder responseBuilder = Json.createObjectBuilder();
if (isValidLogin) {
// 登录成功
User userObject = userDao.getUserByUsername(username);
JSONObject userJson = new JSONObject();
userJson.put("username", userObject.getUsername());
userJson.put("Email", userObject.getEmail());
userJson.put("avatar", userObject.getAvatar());
userJson.put("status", userObject.getStatus());
userJson.put("role", userObject.getRole());
if (userObject.getUsername() == null || userObject.getUsername() == "") {
return;
}
// 生成 JWT Token
String token = JwtUtils.generateJwt(userObject.getUsername(), 3600000L);
System.out.println("login-g-token:" + userObject.getUsername() + "---" + token);
//设置响应json的内容
responseBuilder.add("message", "login success");
responseBuilder.add("token", token);
responseBuilder.add("user", userJson.toJSONString());
JsonObject responseJson = responseBuilder.build();
// 设置响应内容为 JSON
resp.setContentType("application/json;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print(responseJson);
out.flush();
} else {
// 登录失败
//设置响应json的内容
responseBuilder.add("message", "login fail");
JsonObject responseJson = responseBuilder.build();
// 设置响应内容为 JSON
resp.setContentType("application/json;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print(responseJson);
out.flush();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
相关代码如下
@WebServlet("/FindPassword")
public class UserFindPassword extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/plain;charset=UTF-8");
// 获取注册表单参数
// 从请求体中获取输入流
InputStream inputStream = req.getInputStream();
// 使用 JsonReader 解析输入流中的 JSON 数据
JsonReader jsonReader = Json.createReader(new InputStreamReader(inputStream));
JsonObject jsonObject = jsonReader.readObject();
jsonReader.close();
// 获取 JSON 数据中的 username 和 Verification_code 和 newPassword 字段值
String Email = jsonObject.getString("Email");
// 获取 SqlSession 实例
SqlSession sqlSession = MyBatisUtil.getSqlSession();
// 创建 UserDao 对象
UserDao userDao = new UserDao(sqlSession);
User user=userDao.getUserByEmail(Email);
//校验邮箱的有效性
if(user!=null){
String recipientEmail = Email;
String subject = "您的验证码为";
// 生成临时验证码,并存储到内存中,然后发送
String code= VerificationCodeGenerator.generateNumericCode(6);
MemoryCodeStorage.saveCode(Email,code);
EmailSender.sendEmail(recipientEmail,subject,code);
JsonObjectBuilder responseBuilder = Json.createObjectBuilder();
responseBuilder.add("message", "sentCode success");
JsonObject responseJson = responseBuilder.build();
// 设置响应内容为 JSON
resp.setContentType("application/json;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print(responseJson);
out.flush();
}
else {
JsonObjectBuilder responseBuilder = Json.createObjectBuilder();
responseBuilder.add("message", "username error");
JsonObject responseJson = responseBuilder.build();
// 设置响应内容为 JSON
resp.setContentType("application/json;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print(responseJson);
out.flush();
}
}
}
更多代码请查看源代码