帮忙写个servlet!我想实现的是:下面的search.jsp每个文本框前都有多选框,在servlet页面来判断多选框中对应的文本框值,然后显示不同的内容。比如search.jsp选中姓名和部门,那么在servlet中根据姓名和部门对数据库进行查询,也就是 把姓名和部门的值作为条件来查询,即:select * from show where name='"+name+"' dpt='"+name1+"'search.jsp
<form >
<input type="checkbox" name="check_id" value="people" > 填写你要查询的姓名:<input type="text"  name="name"><br>
<input type="checkbox" name="check_id" value="dpt"> 
填写你要查询的部门:<input type="text"  name="name1"><br>
<input type="checkbox" name="check_id" value="lr"> 
填写你要查询的录入人员:<input type="text"  name="name2"><br>
<input type="checkbox" "check_id" value="belong"> 
填写你要查询的归属人员:<input type="text"  name="name3"><br>
<input type="checkbox" "check_id" value="month""> 
填写你要查询的财务月份:<input type="text"  name="name4"><br>
<input type="checkbox" "check_id" value="type"> 
填写你要查询的费用类型:<input type="text"  name="name5"><br>
<input type="checkbox" "check_id" value="pt"> 
填写你要查询的项目类型:<input type="text"  name="name6"><br>
<input type="checkbox" "check_id" value="pb"> 
填写你要查询的项目归属:<input type="text"  name="name7"><br>
<input type="checkbox" "check_id" value="mp"> 
填写你要查询的费用科目:<input type="text"  name="name8"><br>
<input type="checkbox" "check_id" value="pc"> 
填写你要查询的科目明细:<input type="text"  name="name9"><br>
<input type="submit" value="搜索">
</form>

解决方案 »

  1.   

    前台用checkboxservlet里面用数组得到值String item[]=request.getPeremeterValues("复选框值");遍历数组取出值然后查询语句设置就可以
    OK
      

  2.   

    呵呵 不小的工程啊
    StringBuffer sql="select * from show where ...";
    if(name!=null||!"".equals(name)){
      sql.append(" and ...");
    }
    ....
      

  3.   

    checkbox 控制下一个文件是否为只读就OK了
    在 Servlet 里将request.getParameter(name);……request.getParameter(name9);的值全部以"name="+request.getParameter(name)的方式add到List中
    如:List list=new ArrayList();
    list.add("name="+request.getParameter("name"));
    list.add("dept="+request.getParameter("name1"));
    ......查询语句:StringBuffer sql="select * from show";
    增加查询条件:
    if (list != null && list.size() > 0 ) {
    for (int i = 0; i < conditions.size(); i++) {
    String str = list.get(i);
    if (i == 0) {
    hql.append(" WHERE " + str);
    }else {
    hql.append(" AND " + str);
    }
    }
    }
      

  4.   

    当然要先判断力getParameter("name")不为空且不""时才add到List中
      

  5.   

    有点理解了,但是不同的str怎么显示不同的页面呢?
      

  6.   

    需要不同的显示页面吗?你查询的结果都是 show 表中的所有记录
    将需要显示的列显示出来就行了啊
      

  7.   

    可以在JSP页面就处理完查询条件如在JSP页面中加一个hidden,提交的时候调用一个JS函数,用该hidden存查询条件
    search.jsp 
    <form > 
    <input type="checkbox" name="check_id1" value="people" > 填写你要查询的姓名: <input type="text"  name="name"> <br> 
    <input type="checkbox" name="check_id2" value="dpt"> 
    填写你要查询的部门: <input type="text"  name="name1"> <br> 
    <input type="checkbox" name="check_id" value="lr"> 
    填写你要查询的录入人员: <input type="text"  name="name2"> <br> 
    <input type="checkbox" "check_id" value="belong"> 
    填写你要查询的归属人员: <input type="text"  name="name3"> <br> 
    <input type="checkbox" "check_id" value="month""> 
    填写你要查询的财务月份: <input type="text"  name="name4"> <br> 
    <input type="checkbox" "check_id" value="type"> 
    填写你要查询的费用类型: <input type="text"  name="name5"> <br> 
    <input type="checkbox" "check_id" value="pt"> 
    填写你要查询的项目类型: <input type="text"  name="name6"> <br> 
    <input type="checkbox" "check_id" value="pb"> 
    填写你要查询的项目归属: <input type="text"  name="name7"> <br> 
    <input type="checkbox" "check_id" value="mp"> 
    填写你要查询的费用科目: <input type="text"  name="name8"> <br> 
    <input type="checkbox" "check_id" value="pc"> 
    填写你要查询的科目明细: <input type="text"  name="name9"> <br> 
    <input type="button" onclick="go()" value="搜索"> 
    <input type=hidden name="cond" value=""></form>
    <script>
         function go(){
          if(docunment.all.check_id1.checked){
           cond+=" and name='"+document.all.name.value;
          }
          if(docunment.all.check_id2.checked){
          cond+=" and dpt='"+document.all.dpt.value;      }
          .
          .
          .
        document.all.sql.value=cound;
      }
    </script>
    servlet:
    String sql=".....";
    String cond = request.getParameter("sql");
    sql+=cond;
      

  8.   

    document.all.cound.value=cound; 
      

  9.   

    public List select(String titleKeyWord, Date createDate, Integer isPub, Integer start, Integer length) {
    StringBuffer sql = new StringBuffer(
    "SELECT a.id, e.realName as eName, c.name as cName, a.title, a.createDateTime, a.isPub FROM articles AS a, elements AS e, categorys AS c WHERE a.elem_id=e.id AND a.category_id=c.id ");
    List params = new ArrayList();
    if (StringUtils.isNotBlank(titleKeyWord)) {
    sql.append("AND a.title like ? ");
    params.add("%" + titleKeyWord.trim() + "%");
    }
    if (createDate != null) {
    sql.append("AND TO_DAYS(a.createDateTime)=TO_DAYS(?) ");
    params.add(createDate);
    }
    if (isPub != null) {
    sql.append("AND a.isPub=? ");
    params.add(isPub);
    }
    sql.append("ORDER BY a.id DESC ");
    if (start != null && length != null) {
    sql.append("limit ?,?");
    params.add(start);
    params.add(length);
    }
    log.info("SQL[" + sql.toString() + "] PARAMS[titleKeyWord=" + titleKeyWord + ",createDate=" + createDate + ",isPub=" + isPub + ",start=" + start + ",length=" + length + "]");
    return getJdbcTemplate().queryForList(sql.toString(), params.toArray());
    }