Java 准备用于处理数据库条目的JSP页面

Java 准备用于处理数据库条目的JSP页面,java,jsp,Java,Jsp,我正在尝试创建一个页面,您可以在其中搜索数据库中的gig,如果您按enter键,它将显示所有gig,并且在每个gig之后都有编辑和删除按钮,我将在其中添加正确的功能 到目前为止,我正在使用打印输出进行测试,我正在按下该按钮,并查看ID字段是否正确传输。如果我搜索特定的gig,然后在结果上单击其中一个按钮,它会显示正确的编辑3,删除2 例如,这取决于它是哪一个gig。但是,当整个页面显示所有的gig时,我按下任何gig上的一个按钮,我总是打印EDIT 1,DELETE 1,所以无论我点击哪个,它总

我正在尝试创建一个页面,您可以在其中搜索数据库中的gig,如果您按enter键,它将显示所有gig,并且在每个gig之后都有编辑和删除按钮,我将在其中添加正确的功能

到目前为止,我正在使用打印输出进行测试,我正在按下该按钮,并查看ID字段是否正确传输。如果我搜索特定的gig,然后在结果上单击其中一个按钮,它会显示正确的编辑3,删除2
例如,这取决于它是哪一个gig。但是,当整个页面显示所有的gig时,我按下任何gig上的一个按钮,我总是打印EDIT 1,DELETE 1,所以无论我点击哪个,它总是将ID设置为1

    <%
if(request.getAttribute("gigs")==null){
    response.sendRedirect("searchGig");
    return;
}
%>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page import="bean.Gig"%>
<jsp:useBean id="gigs" type="java.util.ArrayList<Gig>" scope="request" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Gigplanner</title>
<link href="gigplanner.css" rel="stylesheet">
</head>
<body>


<form id="msform" action="searchGig" method="post">
  <!-- progressbar -->
  <ul id="progressbar">
    <li><a href="index.jsp">Front Page</a></li>
    <li><a href="addGig.jsp">Add Gig</a></li>
    <li class="active"><a href="searchGig.jsp">Search Gigs</a></li>
    <li><a href="settings.php">Settings</a></li>
  </ul>


<fieldset>
Search Gig: 
<input type="text" name="hakusana" value="" >
<input type="submit" class="show-button" value="Search" >
<br>
<div class="showgig">

<%

for(int i=0;i<gigs.size();i++){
        out.print("<table>");

        out.print("<tr><td>Title:");
        out.print("<td>" +(gigs.get(i).getTitle()+ "</td>"));

        out.print("<tr><td>Venue:");
        out.print("<td>" +(gigs.get(i).getVenue()+ "</td>"));

        out.print("<tr><td>Date:");
        out.print("<td>" +(gigs.get(i).getDate()+ "</td>"));

        out.print("<tr><td>Time:");
        out.print("<td>" +(gigs.get(i).getTime()+ "</td>"));

        out.print("<tr><td>Country:");
        out.print("<td>" +(gigs.get(i).getCountry()+ "</td>"));

        out.print("<tr><td>Address:");
        out.print("<td>" +(gigs.get(i).getAddress()+ "</td>"));

        out.print("<tr><td>Postcode:");
        out.print("<td>" +(gigs.get(i).getPostcode()+ "</td>"));

        out.print("<tr><td>City:");
        out.print("<td>" +(gigs.get(i).getCity()+ "</td>"));

        out.print("<tr><td>Description:");
        out.print("<td>" +(gigs.get(i).getDescription()+ "</td>"));

      out.print("<input type='hidden' name='id' value="+(gigs.get(i).getId()+">"));  
      out.print("<tr><td><input type='submit' name='act' class='show-button' value='edit'></td>");
      out.print("<td><input type='submit' name='act' class='show-button' value='delete'></td>");

        out.print("</tr></table><br>"); 
  }

String act = request.getParameter("act");
String id = request.getParameter("id");
if (act == null) {
    //no button has been selected
} else if (act.equals("delete")) {
    //delete button was pressed
    out.print("DELETE " + Long.valueOf(id));


} else if (act.equals("edit")) {
    //edit button was pressed
    out.print("EDIT " + Long.valueOf(id));
    } else {
    //something else
}


%>
</div>
  </fieldset>
  </form>
  <br />


</body>
</html>

计划者
搜索栏:

请求对象的
getParameter()
方法依赖于html元素的名称,而html元素的名称可能是许多html元素所共有的

在您的例子中,该方法获取与该名称关联的第一个元素,而不考虑其他元素

当您搜索特定的gig时,页面上可能只有一个元素,因此无法获得错误的ID,而当所有元素都在页面上时,您无法获得预期的结果


您应该使用
getParameterValues()
,然后找到一种方法来检索您感兴趣的特定值(例如,通过使用与每个gig关联的复选框,每个gig都具有相同的名称属性,但值不同)或者为每个gig创建一个
表单
元素。

您应该避免使用所有这些out.print。Jsp是一种视图技术。重构你的代码,使之像html一样,也许你的错误会自行纠正。