我在我的Web应用程序中使用mvc struts框架。我正在使用scrilets在jsp页面中显示数据库中的动态值,<% %> 这样做是一种不好的做法,但是我遵循了没有scriptlet的方式进行操作的链接,但无法理解太多..我正在使用struts,并且我有动作和bean类,这是我的jsp页面
<% %>
<%@page import="java.sql.ResultSet"%> <%@page import="com.pra.sql.SQLC"%> <%@page import="java.util.ArrayList"%> <%@page contentType="text/html" pageEncoding="UTF-8"%> <table align="left" width="346" border="0"> <tr><td align="center" colspan="2" style="font-size:20px;">Tests We Provide</td></tr> <tr> <th width="194" height="52" align="left" nowrap>Test Name</th> <th width="142" align="left" nowrap>Test Fee</th> </tr> <% String sql = "Select tname,tfee from addtest order by tname"; ResultSet rs = SQLC.getData(sql, null); while (rs.next()) { String testname = rs.getString("tname"); String testfee = rs.getString("tfee"); %> <tr> <td width="194" height="30" nowrap><%=testname%></td> <td width="142" nowrap><%=testfee%></td> </tr> <% } %> </table>
请告诉我如何通过在Formbean中编写代码来显示测试名称和费用,并从bean到jsp逐个检索每个值。.请告诉我如何不使用scriplets即可完成此操作。.逐步感谢您,谢谢: )
将您的数据库读取代码移至动作控制器。它应该从db中读取所需的值,并将其放入请求或模型中。
比使用jstl输出值(在jsp中):
<c:out value="${parameterFromRequest}"/>
定义bean:
public class MyBean { private final String tName; private final String tFee; public MyBean(String tName, String tFee) { this.tName = tName; this.tFee = tFee; } public String getTName() { return tName; } public String getTFee() { return tFee; } }
在动作控制器中创建集合:
String sql = "Select tname,tfee from addtest order by tname"; ResultSet rs = SQLC.getData(sql, null); Collection<MyBean> myBeans = new ArrayList<MyBean>(); while (rs.next()) { String testname = rs.getString("tname"); String testfee = rs.getString("tfee"); myBeans.add(new MyBean(testname, testfee)); } request.setAttribute("myBeans", myBeans);
在jsp中访问:
<c:forEach var="myBean" items="${myBeans}"> Name: <c:out value="${myBean.tName}"/> Fee: <c:out value="${myBean.tFee}"/> </c:forEach>