从数据库、Javaservlet获取数据

从数据库、Javaservlet获取数据,java,servlets,Java,Servlets,大家好,我正在编写Javaservlet,它应该根据哪个用户登录来获取DVD。我有办法 public List<Dvd> getDvdsByUserId(String user_id) throws SQLException { List<Dvd> dvds = new ArrayList<Dvd>(); Connection connection = null; PreparedStatement preparedStatem

大家好,我正在编写Javaservlet,它应该根据哪个用户登录来获取DVD。我有办法

    public List<Dvd> getDvdsByUserId(String user_id) throws SQLException {
    List<Dvd> dvds = new ArrayList<Dvd>();
    Connection connection = null;
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;

    try {
        connection = getConnection();
        preparedStatement = connection.prepareStatement("SELECT * FROM sedivyj_dvd where user_id = ?;");
        preparedStatement.setString(1, user_id);
        resultSet = preparedStatement.executeQuery();

        while (resultSet.next()) {
            Dvd dvd = new Dvd();
            dvd.setId(resultSet.getInt("id"));
            dvd.setUser_id(resultSet.getString("user_id"));
            dvd.setName(resultSet.getString("name"));
            dvd.setBorrower(resultSet.getString("borrower"));
            dvd.setMail(resultSet.getString("mail"));
            dvd.setBorrow_date(resultSet.getString("borrow_date"));
            dvd.setBorrow_until(resultSet.getString("borrow_until"));
            dvds.add(dvd);
        }

    } catch (SQLException e) {
        throw e;
    } finally {
        cleanUp(connection, preparedStatement);
    }

    return dvds;
}
罗金瑟夫莱特酒店

 public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

private UserDao userDao;

@Override
public void init(ServletConfig config) throws ServletException {
    super.init(config);
    DbSettings dbSettings = new DbSettings();

    dbSettings.setServer(config.getServletContext().getInitParameter("dbServer"));
    dbSettings.setPort(Integer.valueOf(config.getServletContext().getInitParameter("dbPort")));
    dbSettings.setUser(config.getServletContext().getInitParameter("dbUser"));
    dbSettings.setPassword(config.getServletContext().getInitParameter("dbPassword"));
    dbSettings.setDatabase(config.getServletContext().getInitParameter("dbDatabase"));

    try {
        this.userDao = new UserDao(dbSettings);
    } catch (ClassNotFoundException e) {
        throw new ServletException("Unable to initialize DB driver", e);
    }
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    try {
        if (getLoggedUser(request, response) != null) {
            response.sendRedirect("/list");
            return;
        }
        RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/login.jsp");
        dispatcher.forward(request, response);
    } catch (Exception e) {
        getServletContext().log("error", e);
    }
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    try {
        if (getLoggedUser(request, response) != null) {
            response.sendRedirect("/list");
            return;
        }
        String nickname = request.getParameter("nickname");
        String password = request.getParameter("password");

        if (nickname != null && password != null) {
            User user = userDao.getByLogin(nickname);
            if (user != null && UserUtil.checkLogin(user, password)) {
                HttpSession session = request.getSession(true);
                Long userId = user.getId();
                session.setAttribute("userId", userId);
                session.setAttribute("loggedUser", user);
                request.getSession().setAttribute("nickname", nickname);

                response.sendRedirect("/list");
            } else {
                request.setAttribute("message", "Login se nepovedl.");
                RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/login.jsp");
                dispatcher.forward(request, response);
            }
        } else {
            response.sendRedirect("/login");
        }
    } catch (Exception e) {
        getServletContext().log("error", e);
    }
}
public User getLoggedUser(HttpServletRequest request, HttpServletResponse response) {
    HttpSession session = request.getSession(true);
    User user = (User) session.getAttribute("loggedUser");
    return user;
}
}

有人有想法吗?

根据我对您的需求的理解,首先验证用户名和密码是否匹配,然后将控件传递给servlet,以便在请求时设置用户ID。然后可以使用request.getParameter()在doGet()方法中获取用户ID方法。

这可以通过多种方式完成。 我认为您使用的是表单,因为在servlet中您调用的是
doget()
。因此,在从表单调用servlet时,也要传递userid,在servlet中,您可以使用
userid=request.getParameter(“user”)

另一种方法是让用户保持会话状态

在登录之后,如果您正在调用任何servlet或jsp页面,那么以这种方式让用户保持会话状态

session.setAttribute("username","username");
在servlet中,您可以使用

session.getAttribute("username");

这一行的意思是如何在servlet的doGet方法中设置登录用户id:dvds=this.dvdDao.getDvdsByUserId(id\u logged\u user);你是如何登录用户的?@JánŠedivý你的意思是说,如果假设用户john已经登录,那么它只会给出john的results@JqueryLearner确切地
session.setAttribute("username","username");
session.getAttribute("username");