jsp实现下拉选择框多种源码
### JSP 实现下拉选择框的多种源码解析 #### 概述 在Web开发中,下拉选择框(Dropdown List)是非常常见的一个UI组件,用于为用户提供多个选项进行选择。本文档将通过两个具体示例来详细介绍如何在JSP页面中实现下拉选择框,并结合JavaBean与JDBC技术完成数据的动态加载。 #### 示例一:JSP页面中的静态下拉选择框 ##### 代码片段 ```jsp <select name="prpLassistFeeAuditStatus"> <option value="0" <%=prpLassistFeeDto1.getAuditStatus().equals("0")?"selected":""%>></option> <option value="1" <%=prpLassistFeeDto1.getAuditStatus().equals("1")?"selected":""%>>ɾ</option> <option value="2" <%=prpLassistFeeDto1.getAuditStatus().equals("2")?"selected":""%>></option> <option value="3" <%=prpLassistFeeDto1.getAuditStatus().equals("3")?"selected":""%>>ϸ</option> </select> ``` ##### 解析 该示例展示了如何在JSP页面中创建一个带有四个选项的下拉选择框。每个`<option>`元素代表一个选项,其`value`属性定义了该选项的值。值得注意的是,每个`<option>`标签后都跟着一段JSP表达式,用来判断当前选项是否为选中状态。 - **语法解释**: - `<option value="0"...>`:定义了一个值为“0”的选项。 - `value="0"`:设置该选项的值为“0”。 - `<%=prpLassistFeeDto1.getAuditStatus().equals("0")?"selected":""%>`:这部分是一个条件表达式,如果`prpLassistFeeDto1.getAuditStatus()`的返回值等于“0”,则`"selected"`被添加到`<option>`标签中,表示该选项被选中;否则不添加任何内容。 - **动态效果实现**: - 通过JSP表达式动态设置`selected`属性,使得当前用户提交表单时的审计状态作为默认选中项。 - **应用场景**: - 常见于表单中的状态选择,如审核状态的选择。 #### 示例二:结合JavaBean与JDBC实现动态下拉选择框 ##### JavaBean + JDBC 实现 ```java public List<EmCustHorExpensesList> getEmCustHorExpensesList(int owner) { List<EmCustHorExpensesList> arrayPage = new ArrayList<EmCustHorExpensesList>(); Session session = super.getSession(); Connection conn = session.connection(); try { String sql = "SELECT a.id, b.custName, a.status, a.custHor, a.auditTime, a.total, " + "(SELECT SUM(custHor) FROM EM_CustHorExpenses WHERE owner = a.owner " + "AND YEAR(createTime) = YEAR(a.createTime) AND MONTH(createTime) = MONTH(a.createTime) AND createTime <= a.createTime) AS csum, " + "0.05 * (SELECT SUM(totalAmount) FROM DM_DeliveryOrder WHERE company = a.owner AND DATEDIFF(MM, createTime, a.createTime) BETWEEN 1 AND 3) / 3 AS nsum " + "FROM EM_CustHorExpenses a LEFT JOIN BS_Customer b ON a.customer = b.id " + "LEFT JOIN SM_Staff c ON a.auditPeople = c.id " + "WHERE a.owner = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setInt(1, owner); ResultSet rs = stmt.executeQuery(); while (rs.next()) { EmCustHorExpensesList e = new EmCustHorExpensesList(); int id = rs.getInt(1); String custName = rs.getString(2); String status = rs.getString(3); Double custDetail = rs.getDouble(4); java.sql.Date auditTime = rs.getDate(5); Double total = rs.getDouble(6); Double custHor = rs.getDouble(7); Double inTotal = rs.getDouble(8); e.setId(id); e.setCustName(custName); e.setStatus(status); e.setCustDetail(custDetail); e.setAuditTime(auditTime); e.setTotal(total); e.setCustHor(custHor); e.setInTotal(inTotal); arrayPage.add(e); } } catch (Exception e) { System.err.println("Cannot connect to database server"); } finally { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block } } return arrayPage; } ``` ##### 解析 此示例展示了一个JavaBean方法,用于从数据库中获取客户相关的数据,并封装到`EmCustHorExpensesList`对象列表中。 - **功能说明**: - 该方法接收一个`owner`参数,根据这个参数查询数据库中的相关信息。 - 使用JDBC执行SQL语句,其中包含多个子查询和复杂的JOIN操作,用以获取更全面的数据信息。 - 结果集(`ResultSet`)中的每一行数据都会被封装成一个`EmCustHorExpensesList`对象并加入到列表中。 - **应用场景**: - 适用于需要从数据库动态获取数据并展示在下拉选择框中的场景,例如根据用户身份动态展示可选择的客户列表等。 - **注意事项**: - 数据库连接、SQL语句的编写和异常处理都需要特别注意,确保代码的安全性和稳定性。 - 在实际应用中,可以考虑使用ORM框架(如Hibernate)代替原始的JDBC操作,简化代码并提高效率。 #### 总结 本文通过两个具体示例介绍了如何在JSP页面中实现下拉选择框的功能。第一个示例是静态的实现方式,适合初学者快速上手。第二个示例则通过结合JavaBean和JDBC实现了动态数据加载,适用于更复杂的应用场景。这两种方式各有优劣,开发者可以根据具体需求灵活选择。
<select name="prpLassistFeeAuditStatus">
<option value="0" <%=prpLassistFeeDto1.getAuditStatus().equals("0") ? "selected" : ""%>>定损交互</option>
<option value="1" <%=prpLassistFeeDto1.getAuditStatus().equals("1") ? "selected" : ""%>>删除</option>
<option value="2" <%=prpLassistFeeDto1.getAuditStatus().equals("2") ? "selected" : ""%>>需修改</option>
<option value="3" <%=prpLassistFeeDto1.getAuditStatus().equals("3") ? "selected" : ""%>>合格</option>
</select>
------------------------------------------------------
第二种JAVABEAN+JDBC实现
public List<EmCustHorExpensesList> getEmCustHorExpensesList(int owner){
List<EmCustHorExpensesList> arrayPage = new ArrayList<EmCustHorExpensesList>();
Session session = super.getSession();
Connection conn = session.connection();
try{
String sql = "select a.id,b.custName,a.status,a.custHor,a.auditTime,a.total,"
+"(select sum(custHor) from EM_CustHorExpenses where owner = a.owner "
+" and year(createTime) = year(a.createTime) and month(createTime) = month(a.createTime) and createTime <= a.createTime) as csum,"
+"0.05*(select sum(totalAmount) from DM_DeliveryOrder where company = a.owner and datediff(mm,createTime,a.createTime) between 1 and 3)/3 as nsum"
+" from EM_CustHorExpenses a left join BS_Customer b on a.customer = b.id "
+" left join SM_Staff c on a.auditPeople = c.id "
+" where a.owner =?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setInt(1,owner);
ResultSet rs = stmt.executeQuery();
while(rs.next()){
EmCustHorExpensesList e=new EmCustHorExpensesList();
int id = rs.getInt(1);
String custName = rs.getString(2);
- 糖糖糖糖糖甜2014-12-23很好!很实用!很解决问题!
- u0107125722013-05-18不错的,很实用
- sui21212013-03-12下了没用 不过谢谢你分享
- PengLen2013-07-02jsp实现的级联,不错!!!
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助