我想在jsp中建立一个bean对象并对它赋值,然后在servlet中获得这个bean的对象,现在出现这样的问题:
在jsp中使用:<jsp:useBean id="sendmailbean" scope="request" class="WebBean.MailBean" >
<jsp:setProperty name="sendmailbean" property="*" />
</jsp:useBean>
<FORM name="form1" method="POST" action="Send">
</FORM>
Send是servlet的url
在servlet中用: MailBean smb = (MailBean) request.getAttribute("sendmailbean");
获得的smb是null
为什么呢?request的有效期已经过了吗?如果改成下面这样:
在jsp中使用:<jsp:useBean id="sendmailbean" scope="session" class="WebBean.MailBean" >
<jsp:setProperty name="sendmailbean" property="*" />
</jsp:useBean>
<FORM name="form1" method="POST" action="Send">
</FORM>
在servlet中用:HttpSession mysession = request.getSession();
               MailBean smb = (MailBean) mysession.getAttribute("sendmailbean");
这次获得smb虽然不是null了,可是,用bean的get方法取得的bean属性值都是null。烦请各位高手指点一二阿~!

解决方案 »

  1.   

    设计上本生就有很大的问题。
    1.数据对象bean 不要出现在页面中创建.
    就算创建了也不要保存在page,session中,page保存的数据是很临时的,session是有时间延时的,都不好。
    2.bean 的创建应该在servlet中。
      

  2.   

    我主要是想用
    <jsp:setProperty name="sendmailbean" property="*" />给bean中的属性赋值,而且在servlet中使用bean也算是bean和servlet结合使用吗?
    我是刚开始学习,有很多都不懂,麻烦大虾能讲明白些吗?
      

  3.   

    你这不是jsp + servlet + javabean架构。你可以在servlet中使用request.getPraameter()方法获取JSP页面传递过来的表单值。然后再把这个值存入bean的setxxx()方法。这才是典型的jsp + servlet + javabean架构。你刚才使用的request.getAttribute()方法是传递对象的,所以你应该使用request.getParameter来接受JSP页面传递过来的参数值。给你举个简要代码的例子:
    JSP页面表单: <form mothed="post" action="send">
                  <input type="text" name="textfield">
                  </form>javaBean (bean.java):定义两个方法setxxx()、getxxx()servlet( send.java ) :  具体继承什么接口等servlet的固定格式我就不写了
               
                   //获取JSP页面表单传递过来的值
                   String xxx = (String)request.getParameter("textfield");
                   //创建一个javaBean的对象
                   bean bean = new bean();                     
                   //将传递过来的表单值存储在javaBean中
                   bean.setxxx("xxx");OVER!
      

  4.   

    用多了struts一下子还被楼主搞蒙了,楼上说的很详细了。
      

  5.   

    谢谢
    多问一句:
    <jsp:useBean id="sendmailbean" scope="request" class="WebBean.MailBean" >
    <jsp:setProperty name="sendmailbean" property="*" />
    </jsp:useBean>
    是只用在jsp+javaBean里的嘛?
      

  6.   

    liurunze兄所举实例可谓明白,但我看后还是在想另外一个问题,bean是在用户的jsp页面里使用的,那用户怎么得到bean呢?也就说,serverlet 与jsp怎么共享bean?
      

  7.   

    想学习一下,为什么不能共享这个bean对象
      

  8.   

    1.你创建的sendmailbean对象的作用域在当前的Request域中,而不是通过FORM提交的Request.所以你在Servlet中的无法找到这个对象,当你把对象的作用域该为Session后,当然就可以访问该对象了。
    2.你访问该页面的Request并不存在你需要的参数,所以sendmailbean的Get方法返回null,可以这样试试,假如该页面叫A.jsp,你这样访问:a.jsp?mailto=aaa&mailfrom=bbb,试一下,在servlet中是否可以使用Get方法。
    3.如果你使用ide,在你当前页面应该有个警告,“sendmailbean没有被访问”
    3.我没有试验,如果说错了,就当我是胡说的!