gpt4 book ai didi

java - 从数据库中搜索java servlet

转载 作者:行者123 更新时间:2023-12-02 05:18:29 24 4
gpt4 key购买 nike

我正在尝试创建一个可以添加、删除和搜索客户的 servlet,现在我被搜索方法困住了,我不确定为什么我的方法不起作用,但这是我迄今为止创建的代码。我使用 DAO 模式通过以下方法按姓名过滤客户:

public List<Customers> filterCustomer(String name)
{
List<Customers> customers = new ArrayList<Customers>();

try{
st = getConnection().createStatement();
rs = st.executeQuery("SELECT * from customer where first_name like '%" + name + "%'"
+ "and surname like '%" + name+ "%'");
while(rs.next())
{
Customers customer = new Customers();
customer.setId(rs.getInt(1));
customer.setFirst_name(rs.getString(2));
customer.setSurname(rs.getString(3));
customer.setCode(rs.getString(4));

customers.add(customer);


}

首先在 servlet 中,我创建客户列表来打印它们,但如果 searchString 参数不为空,那么我想创建与 searchString 匹配的这些客户的新列表。这是我创建的 servlet 部分:

out.print("<form method=\"get\" action =\"" + request.getContextPath() +"/Search\" >"
+ "<input id='searchStringBox' name='searchString'/>"
+ "<input type='submit' value='Filtreeri'>");
CustomerDao dao = new CustomerDao();
List<Customers> customers;
customers = dao.getAllCustomers();
String name = request.getParameter("searchString");
if(name != null)

customers = dao.filterCustomer(name);

out.println("<table id='listTable' class='listTable>'" +
"<thead><tr><th scope='col'>Nimi</th><th scope='col'>Perekonnanimi</th>"
+"<th scope='col'>Kood</th><th scope='col'></th></tr></thead>");

for(Customers customer : customers)
{
String value3 = String.valueOf(customer.getId());
request.setAttribute("value3",value3);
customer.getId();
out.println(
"<tbody><tr> "
+ "<td>"+ customer.getFirst_name()+" "+"</td>"
+ "<td>"+ customer.getSurname()+" "+"</td>"
+ "<td>"+ customer.getCode()+" " +"</td>"
+ " "+"<td><a href='"+request.getContextPath()+"/Search?id="+value3+"'>Delete</a></td></tr>"
);

最佳答案

您正在搜索名字和姓氏之间有共同字符串的客户。例如,如果您搜索“摩西”,您只会找到类似以下的人:

Moses Moses
Moses Mosesson
Moses O'Moses

...等等。它不会找到“Moses Malone”或“Jenny Moses”。

原因是你的条件是AND而不是OR。因此它会检查名字和姓氏是否都像“%Moses%”。

将查询更改为:

"SELECT * from customer where first_name  like '%" + name + "%'"
+ "OR surname like '%" + name+ "%'"

确保此功能有效后,请阅读 SQL Injection and how to prevent it 。切勿使用来自外部世界(使用您的 servlet 的人或黑客)的参数,而不检查它们是否存在潜在的 SQL 注入(inject)。

关于java - 从数据库中搜索java servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26702873/

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