gpt4 book ai didi

java - 如何在Struts中使用servlet在JSP中动态检索SQL记录

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:14 25 4
gpt4 key购买 nike

目前,我正在从jsp本身检索sql记录,例如,当我想查看特定人员的详细信息时,我将在jsp中的文本框中输入他的id,记录将被搜索并显示在jsp本身中。但我实际上想要的是,我想在servlet中搜索记录并通过jsp显示它们。此外,我正在为这个应用程序使用 struts 框架。

下面的代码是 Controller ,我检索了 Controller 中的所有记录并将它们存储在 Collection 对象中。

String driverName = "com.mysql.jdbc.Driver";  
String connectionUrl = "jdbc:mysql://235.4.23.34:3306/";
String dbName = "abc";
String userId = "root";
String password = "ipser";
Connection con = null;
Statement stmt = con.createStatement();
ResultSet rs;

Class.forName(driverName);
con = DriverManager.getConnection(connectionUrl+dbName, userId, password);

String s=" select * from contacts";
rs=stmt.executeQuery(s);
while(rs.next()){

List agentList = new ArrayList();

agentList.add(rs.getString("CUSTOMER_ID"));
agentList.add(rs.getString("VENDOR"));
agentList.add(rs.getString("sector"));
agentList.add(rs.getString("AMOUNT"));
agentList.add(rs.getString("total_AMOUNT"));
agentList.add(rs.getString("STATUS"));
agentList.add(rs.getString("delivery_STATUS"));
}
request.setAttribute("data", agentList);

RequestDispatcher dispatcher = request.getRequestDispatcher("success.jsp");
if (dispatcher != null){
dispatcher.forward(request, response);
}

然后我将集合对象传递给 success.jsp 并使用迭代器迭代集合对象,如下所示

success.jsp:

<table id="tblMain"  align="center"  width="1200" style="border-collapse:collapse;border: 1px dotted grey;;cursor: pointer;"> 
<tr>

<TH bgcolor="#6CBFE8" style="border:1px dotted grey;">CUSTOMER_ID</TH>
<TH bgcolor="#6CBFE8" style="border:1px dotted grey;">VENDOR</TH>
<TH bgcolor="#6CBFE8" style="border:1px dotted grey;">sector</TH>
<TH bgcolor="#6CBFE8" style="border:1px dotted grey;">AMOUNT</TH>
<TH bgcolor="#6CBFE8" style="border:1px dotted grey;">total_AMOUNT</TH>
<TH bgcolor="#6CBFE8" style="border:1px dotted grey;">STATUS</TH>
<TH bgcolor="#6CBFE8" style="border:1px dotted grey;">delivery_STATUS</TH>
</tr>
<tr>
<% List mydata= (List)request.getAttribute("data");

Iterator itr = mydata.iterator();
while (itr.hasNext()) {
Object element = itr.next();%>

<td style="border-right: 1px dotted grey;" align="center" width="15%">
<%=element%></td>
<%}%>
</tr>

</table>

问题是对于单个记录,这工作正常。但对于多于一条记录,所有记录都显示在一行中。我只想在一行中显示一条记录的七个字段。有人可以为我提供解决方案吗?

最佳答案

这是您可以执行的操作。不要将结果集添加到列表中,而是创建一个 POJO 类并创建一个列表,然后迭代该列表,为列表中的每个项目创建一个新标记。

这是您的 Agent.java 的样子

public class Agent {

private String customerId;
private String vendor;
private String sector;
private String amount;
private String totalAmount;
private String status;
private String deliveryStatus;

public String getCustomerId() {

return customerId;
}

public void setCustomerId(String customerId) {

this.customerId = customerId;
}

public String getVendor() {

return vendor;
}

public void setVendor(String vendor) {

this.vendor = vendor;
}

public String getSector() {

return sector;
}

public void setSector(String sector) {

this.sector = sector;
}

public String getAmount() {

return amount;
}

public void setAmount(String amount) {

this.amount = amount;
}

public String getTotalAmount() {

return totalAmount;
}

public void setTotalAmount(String totalAmount) {

this.totalAmount = totalAmount;
}

public String getStatus() {

return status;
}

public void setStatus(String status) {

this.status = status;
}

public String getDeliveryStatus() {

return deliveryStatus;
}

public void setDeliveryStatus(String deliveryStatus) {

this.deliveryStatus = deliveryStatus;
}
}

一旦你有了这个类,那么你需要创建列表和该列表中的所有项目

List<Agent> agentList = new ArrayList<Agent>();

// for every row add the attributes to agent object and then add the agent object to list

for(looping condition) {

Agent currentAgent = new Agent();
currentAgent.setStatus(rs.getString("status"));
...
...
...

agentList.add(currentAgent);
}

现在您已经有了该列表,您可以修改 jsp 代码来执行类似的操作。

<% List mydata= (List)request.getAttribute("data");

Iterator itr = mydata.iterator();
while (itr.hasNext()) {
Agent currentAgent = itr.next();%>
<tr>
<td style="border-right: 1px dotted grey;" align="center" width="15%"> <%=currentAgent.status%></td>
<td style="border-right: 1px dotted grey;" align="center" width="15%"> <%=currentAgent.customerId%></td>
...
...
...
<tr>
<%}%>

这应该将您的数据显示为多行。

关于java - 如何在Struts中使用servlet在JSP中动态检索SQL记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482362/

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