首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从db,java servlet获取数据

从db,java servlet获取数据
EN

Stack Overflow用户
提问于 2014-01-04 12:16:00
回答 3查看 863关注 0票数 0

嗨,我正在写java servlet,它应该得到DVD取决于哪个用户登录。我有办法

代码语言:javascript
复制
    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;
}

我不知道如何在servlet的doGet方法中设置日志用户id:

代码语言:javascript
复制
dvds = this.dvdDao.getDvdsByUserId();

loginServlet

代码语言:javascript
复制
 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;
}
}

有谁有主意吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-04 12:26:22

代码语言:javascript
复制
Get Logged User Id In Servlet Using Session.

HttpSession session=request.getSession(true); 
session.setAttribute("user", userLoggedId);


Later You can retrieve Session Data :

HttpSession session=request.getSession(true); 
String userId=(String)session.getAttribute("user");
票数 0
EN

Stack Overflow用户

发布于 2014-01-04 12:25:14

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

票数 0
EN

Stack Overflow用户

发布于 2014-01-04 12:31:37

这可以在许多方面做到。我认为您使用表单是因为在servlet中调用doget().So,同时调用表单中的servlet也传递用户in,在servlet中可以使用userid=request.getParameter("user");

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

登录后,如果您正在调用任何servlet或jsp页面,那么将用户保持在这样的会话中。

代码语言:javascript
复制
session.setAttribute("username","username");

在servlet中,您可以使用

代码语言:javascript
复制
session.getAttribute("username");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20920845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档