6.3打卡

第一阶段全部代码
• 所花时间:2
• 代码行数:479
• 博客容量:1
• 代码如下:

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

@WebServlet(name = "LoginServlet", value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        String userId = request.getParameter("userId");
        String password = request.getParameter("password");

        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/party", "root", "1234");

            String sql = "SELECT * FROM user WHERE user_id = ? AND password = ?";
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setInt(1, Integer.parseInt(userId));
            statement.setString(2, password);
            ResultSet resultSet = statement.executeQuery();

            if (resultSet.next()) {
                // 用户验证成功,将用户ID写入session
                HttpSession session = request.getSession();
                session.setAttribute("userId", userId);

                // 设置cookie保存用户名和密码,以便下次自动登录
                // 注意:在实际应用中,自动登录需要更严格的安全措施
                response.addCookie(new Cookie("userId", userId));
                response.addCookie(new Cookie("password", password));

                // 重定向到动物识别页面
                response.sendRedirect("animal.jsp");
            } else {
                // 用户验证失败,返回登录界面,并给出错误提示
                response.sendRedirect("index.jsp?loginError=true");
            }

            // 关闭连接
            resultSet.close();
            statement.close();
            conn.close();
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
            // 处理异常情况
            response.sendRedirect("index.jsp?loginError=true");
        }
    }
}
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.MultipartConfig;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.*;

import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@WebServlet(name = "PublishPostServlet", value = "/PublishPostServlet")
@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2,    // 2 MB
        maxFileSize = 1024 * 1024 * 10,        // 10 MB
        maxRequestSize = 1024 * 1024 * 50)    // 50 MB
public class PublishPostServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        // 获取表单数据
        String title = request.getParameter("title");
        String content = request.getParameter("content");
        Part filePart = request.getPart("file");
        if (filePart == null) {
            // 如果没有上传图片,则返回发布失败的提示
            PrintWriter out = response.getWriter();
            out.println("<script type=\"text/javascript\">");
            out.println("alert('帖子发布失败,请选择上传图片!');");
            out.println("window.location.href='animal.jsp';");
            out.println("</script>");
            return;
        }

        // 获取上传文件名和文件输入流
        String fileName = filePart.getSubmittedFileName();
        InputStream fileContent = filePart.getInputStream();

        // 获取当前日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentDate = sdf.format(new Date());
        HttpSession session = request.getSession();
        String userIdStr = (String) session.getAttribute("userId");
        int userId = Integer.parseInt(userIdStr);



        // 连接数据库并插入数据
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/party?useUnicode=true&characterEncoding=UTF-8", "root", "1234");

            // 准备插入数据的 SQL 语句
            String sql = "INSERT INTO post (title, content, image, user_id, publish_date, likes) VALUES (?, ?, ?, ?, ?, ?)";
            PreparedStatement statement = conn.prepareStatement(sql);

            // 将数据填充到 SQL 语句中
            statement.setString(1, title);
            statement.setString(2, content);
            statement.setBlob(3, fileContent); // 设置图片数据
            statement.setInt(4, userId); // 假设用户ID为1000
            statement.setString(5, currentDate);
            statement.setInt(6, 0); // 默认点赞数为0

            // 执行 SQL 语句
            int rowsAffected = statement.executeUpdate();

            // 关闭连接
            conn.close();

            // 根据执行结果返回相应的提示信息
            if (rowsAffected > 0) {
                // 发布成功时通过弹窗提示
                PrintWriter out = response.getWriter();
                out.println("<script type=\"text/javascript\">");
                out.println("alert('帖子发布成功!');");
                out.println("window.location.href='animal.jsp';"); // 发布成功后返回到动物识别页面
                out.println("</script>");
            } else {
                // 发布失败时通过弹窗提示
                PrintWriter out = response.getWriter();
                out.println("<script type=\"text/javascript\">");
                out.println("alert('帖子发布失败,请稍后重试!');");
                out.println("window.location.href='animal.jsp';"); // 发布失败后返回到动物识别页面
                out.println("</script>");
            }
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();

            // 发布失败时通过弹窗提示
            PrintWriter out = response.getWriter();
            out.println("<script type=\"text/javascript\">");
            out.println("alert('帖子发布失败,请稍后重试!');");
            out.println("window.location.href='animal.jsp';"); // 发布失败后返回到动物识别页面
            out.println("</script>");
        }
    }
}
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.MultipartConfig;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import jakarta.servlet.http.Part;

@WebServlet(name = "RegisterServlet", value = "/RegisterServlet")
@MultipartConfig(fileSizeThreshold = 1024 * 1024 * 2,    // 2 MB
        maxFileSize = 1024 * 1024 * 10,        // 10 MB
        maxRequestSize = 1024 * 1024 * 50)    // 50 MB
public class RegisterServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");

        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String introduction = request.getParameter("introduction");
        Part avatarPart = request.getPart("avatar");

        InputStream avatarStream = null;

        // 获取数据库连接
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/party", "root", "1234")) {
            // 插入用户信息
            String insertQuery = "INSERT INTO user (username, password, avatar, introduction) VALUES (?, ?, ?, ?)";
            try (PreparedStatement statement = connection.prepareStatement(insertQuery, PreparedStatement.RETURN_GENERATED_KEYS)) {
                statement.setString(1, username);
                statement.setString(2, password);
                statement.setString(4, introduction);

                // 设置头像参数
                if (avatarPart != null && avatarPart.getSize() > 0) {
                    avatarStream = avatarPart.getInputStream();
                    statement.setBlob(3, avatarStream);
                } else {
                    statement.setNull(3, java.sql.Types.BLOB);
                }

                int rowsAffected = statement.executeUpdate();
                if (rowsAffected > 0) {
                    // 注册成功
                    // 获取生成的用户 ID
                    try (ResultSet generatedKeys = statement.getGeneratedKeys()) {
                        if (generatedKeys.next()) {
                            int userId = generatedKeys.getInt(1);
                            // 注册成功后将用户ID保存到 session 中
                            HttpSession session = request.getSession();
                            session.setAttribute("userId", userId);
                            // 弹窗提示用户ID
                            PrintWriter out = response.getWriter();
                            out.println("<script type=\"text/javascript\">");
                            out.println("alert('注册成功,您的用户ID是:" + userId + "');");
                            out.println("window.location.href='animal.jsp';");
                            out.println("</script>");
                            return;
                        }
                    }
                }
            }
        } catch (SQLException e) {
            // 注册失败
            e.printStackTrace();
        } finally {
            if (avatarStream != null) {
                avatarStream.close();
            }
        }

        // 注册失败后的处理
        PrintWriter out = response.getWriter();
        out.println("<script type=\"text/javascript\">");
        out.println("alert('注册失败,请稍后重试!');");
        out.println("window.location.href='register.jsp';");
        out.println("</script>");
    }
}
posted @ 2024-06-03 10:56  aallofitisst  阅读(12)  评论(0)    收藏  举报