想了很多办法还是没解决这个问题,
jsp页面中关键代码:
<jsp:useBean id="sql" scope="application" class="com.wsy.Sqluser"/>//这句想去掉,希望所有jsp请求是servlet处理,不直接调用javabean。
<form action="../MyTest"  method="post">      //跳转方式
List list=(List) request.getAttribute("bm");      //引用值
System.out.println(list);<select name="bumen" id="bumen" style="width:140px;">       //javabean引用下拉菜单可以实现
        <option >请选择部门</option>              
     <%
     List list=(List) request.getAttribute("bm");           //试着引用一下servlet里面的值,结果是null
     System.out.println(list);     for(int i=0;i<sql.bumenchaxun(sql1).size();i++)          //javabean实现效果成功
     { 
     %> 
            <option  value=<%=i%>><%=sql.bumenchaxun(sql1).get(i)%></option>
        <%}%>
         </select>    <input type="submit" value="确定">
servlet关键代码:
String sql1="select bumenname from bumen where 1=1";                           //查询的语句
try {
List<String> list =sqluser.bumenchaxun(sql1);    //这个方法的返回值也是list
System.out.println(list);                        //跳转以后有结果
request.setAttribute("bm", list);

} catch (SQLException e1) {
e1.printStackTrace();
}javabean中相关方法:
public List<String> bumenchaxun(String sql) throws SQLException
{
}
运行结果为:
null
实现的目的,登陆界面包括账号、密码和部门,其中部门必须通过数据库查询,现在是直接调用javabean实现的,我希望能通过servlet,就是jsp请求-servlet调用javabean、处理、传参-jsp赋值给下拉菜单,两个jsp为同一页面。

解决方案 »

  1.   

    首先要确定你的页面是否是通过servlet跳转过来的,你这个登陆页面是直接访问的jsp页面吧?
      

  2.   


    这本身是一个登陆页面,这个下拉框无跳转动作,只有等账号密码输入完成以后,才用跳转动作,现在难就难在,我无跳转却要从servlet里面去取值,结果取的是空值,我在问处理逻辑
      

  3.   

    设置一个默认的值
    if( list !=null){
    //你原来的处理
    }else{
    //默认结果,也就是给list赋值
    }
      

  4.   

    你可以在一个空页面里写js跳转脚本,执行servlet
      

  5.   

    问题搞定了,是逻辑错误,我应该先进入servlet里面获取到list然后在用带参数的跳转到jsp登录页面上!不应该在jsp的登陆页面上纠结!!