0

所以我有这个 JSP 搜索功能,如下所示:

<%
String value=request.getParameter("search");
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://instance****.db.xeround.com:*****/mydb", "*****", "*******");
Statement st=conn.createStatement();
ResultSet rs = st.executeQuery("SELECT menu.name, menu.info, menu.price, restaurants.name from menu,"
        + " restaurants where restaurants_restaurantID=RestaurantID AND (menu.name like '%"
        + value
        + "%' "
        + "or menu.info like '%"
        + value
        + "%' or menu.category like '%"
        + value
        + "%' "
        + "or menu.kitchen like '%"
        + value
        + "%' or quick_choose like '%" + value + "%')");

while (rs.next()){ 
    %>
<tr><td>Name:</td><td><input type="text" value="<%=rs.getString("name")%>" > </td></tr>
<tr><td>Info:</td><td><input type="text" value="<%=rs.getString("info")%>" > </td></tr>
<tr><td>Price:</td><td><input type="text" value="<%=rs.getInt("price")%>" > </td></tr>
      <%
}
%>

这正在工作并从数据库中提取我需要的信息,但我现在想做的是以某种方式使结果正确排列,因为每个结果行将只显示一种食物的名称/菜肴描述/价格。我也希望它与一个看起来像这样的顶部标题一起工作:这里

结果显示在标题“餐厅”、“菜式”、“类型”、“价格”下。以便它们在这些标题下正确显示。

然后将每一行用一条线分开。比如在facebook中,当你去搜索一些东西时,结果会被显示出来并被一条细线分割。

与上面的链接相同,并在此处显示: 线

不想看太多的人总结:我基本上希望我的搜索结果像这个网站:Here,在一个标题下,分为不同的列,并有一个分隔每个搜索结果的行。

你们中的任何人都知道 HTML 中任何可能的解决方案吗?或者可以给我任何关于如何进行的建议?我已经尝试了一些替代方案,但我就是想不通。真的会给予任何帮助或指导。非常感谢。

4

1 回答 1

1

你需要html

<table>
  <tr class="head">
    <td>Name:</td>
    <td>Info:</td>
    <td>Price:</td>
  </tr>    
<%
 while (rs.next()){ 
%>
  <tr class="content">
    <td class="name"><%=rs.getString("name")%></td>
    <td class="info"><%=rs.getString("info")%></td>
    <td class="price"><%=rs.getInt("price")%></td>
  </tr>
<%
 }
%>
</table>

和近似的CSS

table {
    border-collapse: collapse;
}
.head td {
    text-align: center;
}
.content td {
    padding: 5px 10px;
    vertical-align: top;
    text-align: left;
    border-bottom: 1px solid #C0C0C0;
    border-bottom-style: dotted;
}
.info {
    background-color: #F1F4F6;
}

但首先,scriptlets 是非常糟糕的做法。其次,在 JSP 中获取数据库连接是头疼的。您的 JSP 页面应该只负责查看。将您的代码替换为单独的 Java 类。否则,当您的代码膨胀时,您的项目将变得不可读且难以维护。

使用JSTL,您可以轻松获得相同的视图:

<c:forEach var="item" items="${requestScope.items}">
   <div id="item_title" class="item_title">
      <a href="${pageContext.request.contextPath}${item.url}">
        <c:out value="${item.title}" />
      </a>
   </div>
   <div id="item_content" class="item_content">
      <c:out value"${item.content}" />
   </div>
<c:forEach>

或者

   <div id="item_title" class="item_title">
      <form name="openItem" action="handlerurl" method="post">
        <input type="hidden" name="itemId" value="${item.id}" />
        <c:out value="${item.title}" />
        <input type="submit" value="read more" />
      </form>
   </div>
于 2013-01-04T14:40:20.860 回答