gpt4 book ai didi

java - 使用 servlet 和 jsp 进行数据库搜索

转载 作者:行者123 更新时间:2023-11-30 00:11:17 24 4
gpt4 key购买 nike

我正在学习java servlet,并尝试编写一个程序,要求用户输入名称,并列出数据库中具有匹配名称的所有行。我的问题是,我将用户给定的值存储在 Controller 类的 bean 类的 setter 方法中。但是,我无法从 dao 类中检索它。没有收到任何异常或错误,代码不会产生任何结果。任何帮助将不胜感激。

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;
}

道类:

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;

最佳答案

我猜您正在尝试应用“模型 2”模式,以便在不同的层中隔离 3 个不同的组件。

其中一个是放置处理用户请求的代码(称为 Controller )并构建其他不同的组件,即Bean/ DTO 放置涉及的数据通常是响应。最后是一个 jsp 存档(view),您可以在其中放置如何使用先前加载的 Bean 编写响应。

允许分离 View 和 Controller 的关键抽象bean,并且知道在哪里放置bean以便使其对 ControllerView 均可见。在你的例子中,我看到你正在使用一个 Controller ,即构建一个 Bean,我猜你忘记将该 bean 传递给 view,然后使用它bean 位于一些 scriplet 标签中。

在你的 Controller 内应该有这样一行:

request.setAttribute("nameOfTheBeanToUseInsideTheJSPScriptlet",bean)

稍后在 jsp 上(在您的例子中是“SearchList.jsp”),您可能会添加如下内容:

<%
Bean bean = request.getAttribute("nameOfTheBeanToUseInsideTheJSPScriptlet");
out.print(bean.getAValue());
%>

这是模型 2 的基础,即复合模式(由其他模式组成的模式),毕竟,它是用于制作 java Web 应用程序的所有不同的更复杂框架的底层基础( Spring MVC、Struts 以及其他所有已知框架都放置在这个组件之上,因为它只是用于构建 Web 应用程序的 JSEE 规范的一部分)。

我建议阅读“Head First Servlets and JSP, 2nd Edition”这本书,它非常适合开始使用普通的 servlet、jsp 和作为 bean 服务的普通类。

我想这是开始制作一些令人惊叹的 servlet 所需的非常基本的信息!继续练习!

您好!

希望它能有所帮助!

关于java - 使用 servlet 和 jsp 进行数据库搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24028314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com