如何在jsp servlet中使用表单bean

时间:2015-02-06 07:35:14

标签: java jsp servlets

我没有使用任何MVC ..但我希望在我的JSP Servlets应用程序中获得相同的功能。

我有一些jsp,其中包含一些日期,字符串,数字......等文本字段。我创建了一个表单bean类,其中包含jsp中的文本字段名称以及下面的getter和setter ..

JSP(已编辑)

   <form name="myForm" action="myAction" method="post">

      <jsp:useBean id="jspBean" class="com.package.my.BeanClass" scope="request" />
       <jsp:setProperty prperty="*" name="jspBean" />
    //Below some text fields and date fileds 
     <table>
       <tr>
          <td>
               UserName :
           </td>
           <td>
               <input type="text" value="${myBean.userName}" name="userName"/>
          </td>

        </tr>
          <td>
               PassWord :
           </td>
           <td>
               <input type="text" value="${myBean.passWord}" name="passWord"/>
          </td>

        </tr>
          <td>
               Date : 
           </td>
           <td>
               <input type="text" value="${myBean.date}" name="date"/>
             // This text field is with JQUery Date picker
          </td>

        </tr>
        <tr>
         <td>
           <input type="submit" value="login"  />
          </td
        </tr>
     </table>
   </form>   

在我的servlet中

   // I Can get those text fields as Parameters i.e

       req.getParameter("userName")

    //And I cant get that bean Object `jspBean`
    // I am trying to get that as below
      sysout(req.getAttribute("jspBean"));//It prints null   

     // So I create a plain bean object and I am setting the data here 
        MyBean bean = new MyBean();
         // bean.setUserName();
          // I am setting all these fields whaterver needed
        req.setAttribute("myBean",bean);  

问题

1)我可以从Servlet获取bean对象及其数据JSP usinf EL我可以做..我想要的是我想发送表单数据(全部)字段)作为BeanObject而不是参数..我无法实现,

如何实现这一点..请帮忙

提前致谢./

2 个答案:

答案 0 :(得分:0)

您可能想要指定范围。

<jsp:useBean id="beanId" class="MyBeanClass" scope="request" />

然后在Servlet中:

MyBeanClass counter = (MyBeanClass)request.getAttribute("beanId");

此外,要使用${beanId.getField1()},您必须在JSP中将表达式语言设置为true。有关使用表达式语言,请参阅this link

答案 1 :(得分:0)

问题是,在你的jsp中没有你的html表单与java bean绑定。

<input type="text" value="${myBean.userName}" name="userName"/>

因此,在servlet中,您无法从请求属性中获取值。使用简单的JSP和servlet,这是不可能完成的。

您可能使用Spring MVC框架来实现此目的,您可以使用spring表单绑定java bean。或者你可以选择struts框架。

如果您仍想使用servlet,那么可以在servlet中使用此方法来使用请求构建java bean。

public MyBean valueOf(HttpServletRequest req) {
  MyBean bean = new MyBean();
  bean.setUserName(req.getParameter("userName"));
  bean.setPassword(req.getParameter("passWord"));
  ...
  return bean;
}

P.S。这是一个解决方法,而不是使用java bean绑定表单