在HttpServlet的继承类中调用javaBean时为null?谢谢大虾们。jsp中:
<jsp:useBean id="jhlUser" class="package.classname" scope="request">
</jsp:useBean>
<jsp:setProperty name="jhlUser" property="userName" param="username"/>
.........web.xml中
<servlet>
  <servlet-name>jdl</servlet-name>
  <servlet-class>package.classname</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>jdl</servlet-name>
  <url-pattern>/jdl.do</url-pattern>
</servlet-mapping>HttpServlet的继承类中
public class Jdl extends HttpServlet
  public void doPost(HttpServletRequest request,HttpServletResponse response)
throws IOException,ServletException{
    JhlUser jhlUser = new JhlUser();   // 这个地方怎么写才能调用jsp中表单提交的那个javaBean
    System.out.println(jhlUser.getUserName());
  }
}

解决方案 »

  1.   

    userName应该不是通过实例那个javaBean来获取的楼主可以在网页中  右键  查看源代码,看一下生成的html代码中的域叫什么名字然后直接在servlet中request.getParameter("userName");来获取
      

  2.   

    HttpServlet的继承类中 
    public class Jdl extends HttpServlet 
      public void doPost(HttpServletRequest request,HttpServletResponse response) 
    throws IOException,ServletException{ 
        JhlUser jhlUser = new JhlUser();  // 这个地方怎么写才能调用jsp中表单提交的那个javaBean 
        System.out.println(jhlUser.getUserName()); 
      } 
    }你这样看看
    JhlUser jhlUser = request.getAttribute("jhlUser");
      

  3.   


    <jsp:useBean id="jhlUser" class="package.classname" scope="request"
    </jsp:useBean> 
    <jsp:setProperty name="jhlUser" property="userName" param="username"/> 既然已经在request域当中了,你就可以直接在
    servlet当中,用request.getAttribute("jhlUser");
      

  4.   

    scope="request"
      

  5.   

    应该由提交页面的actionForm提供吧,
    没有的话,在servlet中使用
    request.setAttribute("jhlUser",jhlUser );
    试试
      

  6.   

    你的javaBean是后台的还是界面的啊
    如果是界面封装的话,在界面上写request.setAttribute("jhlUser",jhlUser ); 
    然后在servlet中request.getAttribute("jhlUser",jhlUser ); 就能接到了
    如果你不想吧其它方法写到servlet中,你可以通过参数方法调用
      

  7.   

        HttpServlet的继承类中 
         public class Jdl extends HttpServlet 
        public void doPost(HttpServletRequest request,HttpServletResponse response) 
        throws IOException,ServletException{ 
           JhlUser jhlUser = new JhlUser();  // 这个地方怎么写才能调用jsp中表单提交的那个javaBean 
           System.out.println(jhlUser.getUserName()); 
        } 
       }
       首先说,你刚刚new了一个JhlUser的对象,在内存中只是给它分配了一块空间,并没有给它的成员变量赋值,所以它是null的,servlet中应该没有把javabean的引用给接受过来(我也是新手,个人意见,参考哈),你必须通过request.getParameter()方法从JSP页面提交过来的form中读取相应的属性值,赋值给javabean对象
      
      

  8.   

    谢谢各位,我在doPost()中试过了JhlUser jhlUser = (JhlUser) request.getAttribute("jhlUser");
    但jhlUser是空的,但我在jsp中已经写了
    <jsp:useBean id="jhlUser" class="package.classname" scope="request"> 
    </jsp:useBean> 
    <jsp:setProperty name="jhlUser" property="userName" param="username"/> 
      

  9.   

    我知道用request.getParameter()方法可以把表单的值取出来,但我不想一个一个的把值取出来(觉得麻烦),所以我想用javabean来获得整个表单的内容,然后我只取来一个实例就可以了,但取不到。6楼的朋友的方法我也试过了,一样没有反应,谢谢。
      

  10.   

    我感觉你的问题可能出在这:
    1.按你给的代码你确实用jsp:useBean实例化了一个javaBean,但这个bean的scope是request
    所以当你的jsp页面被执行并返回客户端结果以后,也就是一个request执行完之后,bean被
    销毁了2.生成的jsp页面有个表单,你通过这个表单将一个form提交给了你的Action,这这个Action
    中你试图访问那个你在jsp页面中设置的bean,这时候那个bean早就没有了,因为他是上一个
    request创建的我猜的没有错的话,你只是想用提交的表单数据自动给bean赋值,实现
    <jsp:setProperty name="jhlUser" property="*"/>所提供的功能。
    那样的话,我以前的做法是自己写反射程序,不知道有没有更好的办法
      

  11.   

    在jsp页面中
    <jsp:useBean id="jhlUser" class="com.info.JhlUser" scope="session"/>
    <jsp:setProperty name="jhlUser" property="username" param="username"/>在HttpServlet中
    HttpSession hs = request.getSession();
    JhlUser jhlUser = (JhlUser)hs.getAttribute("jhlUser"); 
    System.out.println(jhlUser.getUsername());   //显示结果是null我的问题是为什么我去不到值?,我用request.getParamter()的方法可以取到。
    用JhlUser jhlUser = new JhlUser();的方法我试过了,也不行。
    请知道的朋友提点一下小弟。(我就想知道用jsp自行机制后,在servlet中怎么得到表单的值)
      

  12.   

    关键是,你的jsp如何转到servlet的?1 表单提交,那么很不幸,你无法拿到,因为scope为request, 如果你想用,那么改成session,然后用session.getAttribute就可以拿到了2 是jsp:forward或者 jsp:include的方式,直接用 request.getAttribute就能拿到。
      

  13.   

    我是提交表单,但我的scope是session呀,还是拿不到呀.