Я изучаю сервлеты Java и пытаюсь написать программу, которая просит пользователя ввести имя, и перечисляет все строки с соответствующим именем в db. Моя проблема заключается в том, что я сохраняю заданное пользователем значение в методе setter класса bean из моего класса контроллера. Однако я не могу получить его из класса dao. Не получая никаких исключений или ошибок, код не дает никаких результатов. Любая помощь будет оценена по достоинству.Поиск в базе данных с использованием сервлета и jsps
Controller Класс:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
SearchDataHolder sch = new SearchDataHolder();
String fname = (String) request.getParameter("fname");
String lname = (String) request.getParameter("lname");
String email = (String) request.getParameter("email");
sch.setFname(request.getParameter("fname"));
sch.setLname((String) request.getParameter("lname"));
sch.setEmail((String) request.getParameter("email"));
if (((fname).isEmpty()) && ((lname).isEmpty()) && (((email).isEmpty()))) {
response.sendRedirect("BlankError.jsp");
return;
} else {
RequestDispatcher rd = request
.getRequestDispatcher("SearchList.jsp");
rd.forward(request, response);
return;
}
Dao Класс:
Connection con = ConnectionUtils.createConnection();
PreparedStatement ps;
List<SearchDataHolder> users = new ArrayList<SearchDataHolder>();
SearchDataHolder sdh = new SearchDataHolder();
String firstName = sdh.getFname();
String lastName = sdh.getLname();
String email = sdh.getEmail();
try {
String userList = "select * from Personal_Info where Fname='"
+ firstName + "' or Lname='" + lastName + "' or Email='"
+ email + "'";
ps = con.prepareStatement(userList);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
sdh.setFname((String) rs.getString("Fname"));
sdh.setLname((String) rs.getString("Lname"));
sdh.setMname((String) rs.getString("Mname"));
sdh.setSex(rs.getString("Sex"));
sdh.setDob((String) rs.getString("Date"));
sdh.setEmail((String) rs.getString("Email"));
sdh.setPtype((String) rs.getString("PhoneType"));
sdh.setPhone((String) rs.getString("Phone"));
sdh.setStreet((String) rs.getString("Street"));
sdh.setCity((String) rs.getString("City"));
sdh.setCity((String) rs.getString("State"));
sdh.setZip((String) rs.getString("ZipCOde"));
sdh.setCountry((String) rs.getString("Country"));
users.add(sdh);
}
} catch (SQLException e) {
e.printStackTrace();
}
return users;
Я вижу кучу звонков setter на 'sch', но ничего, что выглядит как вызов' execute'. Кроме того, ваш 'DAO', вероятно, не может вызвать' SearchDataHolder sdh = new SearchDataHolder(); 'и получить переданные значения. –
Не могли бы вы объяснить, что вы подразумеваете под вызовом execute. – user3681240
Какой метод указан в вашем DAO? –