从数据库、Javaservlet获取数据
大家好,我正在编写Javaservlet,它应该根据哪个用户登录来获取DVD。我有办法从数据库、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
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");