diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 5589f15e0e3c82e2d7f2718a980243b17714df03..32b045c43c06dee54250ca6fa0cb6b5d8c778f87 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,16 +4,10 @@
-
-
-
+
-
-
-
-
-
+
@@ -109,7 +103,10 @@
-
+
+
+
+
1677144154839
@@ -125,7 +122,28 @@
1677218578859
-
+
+ 1677421981723
+
+
+
+ 1677421981723
+
+
+ 1677422992336
+
+
+
+ 1677422992336
+
+
+ 1677511214085
+
+
+
+ 1677511214086
+
+
@@ -145,7 +163,10 @@
-
+
+
+
+
diff --git a/src/main/java/cn/zyq/vesionone/dao/UserDAO.java b/src/main/java/cn/zyq/vesionone/dao/UserDAO.java
index 10eb0ee4f1f6e135c3060c565e1c112a93937713..9e4319489073cec883fea17d8abc9d34ca404d04 100644
--- a/src/main/java/cn/zyq/vesionone/dao/UserDAO.java
+++ b/src/main/java/cn/zyq/vesionone/dao/UserDAO.java
@@ -67,4 +67,30 @@ public class UserDAO {
return user;
}
+ public User selectByEmailAndPassword(String email,String password) throws SQLException {
+ User user = null;
+
+ String sql = "SELECT * FROM user WHERE email = ? AND password = ?";
+ // 用try-with-resource的方式自动关闭资源
+ try (Connection connection = getConnection();PreparedStatement preparedStatement = connection.prepareStatement(sql)){
+ // 设置?的值
+ preparedStatement.setString(1,email);
+ preparedStatement.setString(2,password);
+
+ // 执行sql语句
+ ResultSet rs = preparedStatement.executeQuery();
+ // 判断是否有数据
+ if ( rs.next() ){
+ user = new User();
+ user.setUserID(rs.getInt("userID"));
+ user.setUserName(rs.getString("userName"));
+ user.setEmail(rs.getString("email"));
+ user.setPassword(rs.getString("password"));
+
+ }
+ }
+
+ return user;
+ }
+
}
diff --git a/src/main/java/cn/zyq/vesionone/service/UserService.java b/src/main/java/cn/zyq/vesionone/service/UserService.java
index 9390fb085d01cfe8b1a9de6371985b653f321f1a..60ac31580b61b4f350bf72ad60d40991cd8309c0 100644
--- a/src/main/java/cn/zyq/vesionone/service/UserService.java
+++ b/src/main/java/cn/zyq/vesionone/service/UserService.java
@@ -6,4 +6,6 @@ public interface UserService {
public void register(User user);
public User login(String email);
+
+ public User getUserByEmailAndPassword(String email,String password);
}
diff --git a/src/main/java/cn/zyq/vesionone/service/impl/UserServiceImpl.java b/src/main/java/cn/zyq/vesionone/service/impl/UserServiceImpl.java
index 6d7c58f9cc466af19953e25378f79f35e103dee8..0c9ae938ebb13291d83d65f895a65d80d6240465 100644
--- a/src/main/java/cn/zyq/vesionone/service/impl/UserServiceImpl.java
+++ b/src/main/java/cn/zyq/vesionone/service/impl/UserServiceImpl.java
@@ -27,4 +27,15 @@ public class UserServiceImpl implements UserService {
}
return user;
}
+
+ public User getUserByEmailAndPassword(String email,String password){
+ User user = null;
+ try {
+ user = userDAO.selectByEmailAndPassword(email,password);
+ } catch (SQLException e) {
+ throw new RuntimeException(e);
+ }
+ return user;
+ }
+
}
diff --git a/src/main/java/cn/zyq/vesionone/web/LoadUserInfoServlet.java b/src/main/java/cn/zyq/vesionone/web/LoadUserInfoServlet.java
index a5b7cc01d5c2a63503b958865effba3d262a167c..0c5e0378ed638556b4a71256b13c940a69c205c4 100644
--- a/src/main/java/cn/zyq/vesionone/web/LoadUserInfoServlet.java
+++ b/src/main/java/cn/zyq/vesionone/web/LoadUserInfoServlet.java
@@ -18,7 +18,7 @@ public class LoadUserInfoServlet extends HttpServlet {
Object loginUser = session.getAttribute("user");
// 将对象转换成JSON格式
String currentUser = JSON.toJSONString(loginUser);
- System.out.println(currentUser);
+// System.out.println(currentUser); // 测试语句
// 3、响应数据
response.setContentType("text/json;charset=utf-8");
response.getWriter().write(currentUser);
diff --git a/src/main/java/cn/zyq/vesionone/web/LoginServlet.java b/src/main/java/cn/zyq/vesionone/web/LoginServlet.java
index 0392565b58952e41f9c67157807b9dc8b9a59a77..e0baaa42126a2a3ec664ab3b7d32f24fc657d34b 100644
--- a/src/main/java/cn/zyq/vesionone/web/LoginServlet.java
+++ b/src/main/java/cn/zyq/vesionone/web/LoginServlet.java
@@ -19,6 +19,7 @@ public class LoginServlet extends HttpServlet {
String getEmail = request.getParameter("email").trim();
String getPassword = request.getParameter("password").trim();
+ // 数据库查询
User returnUser = userService.login(getEmail);
if ( returnUser != null && getPassword.equals(returnUser.getPassword())){
@@ -28,11 +29,28 @@ public class LoginServlet extends HttpServlet {
HttpSession session = request.getSession();
// 2、存储数据
session.setAttribute("user",returnUser);
-// // 服务器内跳转
-// request.getRequestDispatcher("/List.html").forward(request,response);
- // 重定向
- String contextPath = request.getContextPath();
- response.sendRedirect(contextPath+"/List.html");
+
+ // 记住登录功能
+ String remember = request.getParameter("remember?");
+ // 判断用户是否勾选了记住我,字符串写前面是为了避免出现空指针异常
+ if ( "1".equals(remember) ){
+ // 勾选了,发送Cookie
+ // 1、创建cookie对象
+ Cookie c_email = new Cookie("email",returnUser.getEmail());
+ Cookie c_password = new Cookie("password",returnUser.getPassword());
+ // 设置cookie的存活时间
+ c_email.setMaxAge(60*60*24*1); // 一天
+ c_password.setMaxAge(60*60*24*1);
+ // 2、发送
+ response.addCookie(c_email);
+ response.addCookie(c_password);
+ }
+
+ // 服务器内跳转
+ request.getRequestDispatcher("/List.html").forward(request,response);
+// // 重定向
+// String contextPath = request.getContextPath();
+// response.sendRedirect(contextPath+"/List.html");
}else {
// 密码和邮箱匹配失败,登录失败
// 服务器内跳转到当前界面
diff --git a/src/main/java/cn/zyq/vesionone/web/RememberStatusServlet.java b/src/main/java/cn/zyq/vesionone/web/RememberStatusServlet.java
new file mode 100644
index 0000000000000000000000000000000000000000..3d114d19df52433add98e64b3a9515eb4f4d99f2
--- /dev/null
+++ b/src/main/java/cn/zyq/vesionone/web/RememberStatusServlet.java
@@ -0,0 +1,68 @@
+package cn.zyq.vesionone.web;
+
+import cn.zyq.vesionone.pojo.User;
+import cn.zyq.vesionone.service.UserService;
+import cn.zyq.vesionone.service.impl.UserServiceImpl;
+import com.alibaba.fastjson.JSON;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.*;
+import java.io.IOException;
+
+@WebServlet("/rememberStatusServlet")
+public class RememberStatusServlet extends HttpServlet {
+ private UserService userService= new UserServiceImpl();
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ User user = null;
+
+ String email = "";
+ String password = "";
+
+ // 标志位,标志cookie中是否有邮箱-密码的键值对,2表示全部找到
+ int flag = 0;
+
+ // 获取cookie
+ // 1、获取cookie数组
+ Cookie[] cookies = request.getCookies();
+ // 2、遍历数组
+ for ( Cookie cookie : cookies ){
+ // 表示已经找到所需的数据
+ if ( flag == 2 )
+ break;
+ // 3、获取数据
+ String name = cookie.getName(); // 获取key
+ if ( "email".equals(name) ){
+ String value = cookie.getValue();
+ email = value;
+ flag++;
+ }
+ if ( "password".equals(name) ){
+ String value = cookie.getValue();
+ password = value;
+ flag++;
+ }
+ }
+
+ // 返回数据到客户端
+ if ( flag != 2 ) {
+ // 没找到
+ response.getWriter().write("fail");
+ } else {
+ // 找到了
+ user = userService.getUserByEmailAndPassword(email,password);
+// System.out.println(user.toString());// 测试用
+ String str_user = JSON.toJSONString(user);
+// System.out.println(str_user);// 测试用
+ // 设置响应数据格式
+ response.setContentType("text/json;charset=utf-8");
+ response.getWriter().write(str_user);
+ }
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ this.doGet(request, response);
+ }
+}
diff --git a/src/main/resources/development_process.txt b/src/main/resources/development_process.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b250d79a057a0780219740f4073fd16c7cb89578
--- /dev/null
+++ b/src/main/resources/development_process.txt
@@ -0,0 +1,7 @@
+前端界面 done
+登录功能 done
+注册功能 done
+servlet和静态页面通过session和Ajax进行数据交互 done
+利用cookie实现记住登录功能 done
+完善用户写博客功能 to do
+完善忘记密码功能 to do
diff --git a/src/main/webapp/betterUIForLR.html b/src/main/webapp/betterUIForLR.html
index d6e22b2763a7e3b82d2263326460112abf195911..9153687ecbd8f5a05ba5d84f32e59be365e94fcf 100644
--- a/src/main/webapp/betterUIForLR.html
+++ b/src/main/webapp/betterUIForLR.html
@@ -32,7 +32,10 @@
@@ -56,8 +59,9 @@
-
-
+
+
+
+
+