Servlet中的JavaBean内省[Tomcat]

时间:2009-09-09 11:29:55

标签: jsp servlets jsp-tags javabeans

这个等效的“servlet代码”是什么:

<jsp:useBean id="user" class="beans.UserBean" scope="session"/>
<jsp:setProperty name="user" property="*"/>

Tomcat将其转换为:

beans.UserBean user = null;
synchronized (session) {
    user = (beans.UserBean) _jspx_page_context.getAttribute("user", PageContext.SESSION_SCOPE);
    if (user == null) {
        user = new beans.UserBean();
        _jspx_page_context.setAttribute("user", user, PageContext.SESSION_SCOPE);
    }
}

org.apache.jasper.runtime.JspRuntimeLibrary.introspect(_jspx_page_context.findAttribute("user"), request);

没有其他方法可以轻易做到这一点吗?

1 个答案:

答案 0 :(得分:1)

每个jsp编译器都会产生不同的结果。使用commons beanutils它会看起来像某种

for(Enumeration pnames = request.getParameterNames();pnames.hasMoreElements();) {
  String name = pnames.nextElement();
  BeanUtils.setProperty(bean,name,request.getParameter(name));
}

请注意,它不处理数组和其他特殊情况。

此外,这就是为什么通常使用SpringStrutsWicket等网络框架的原因 - 它只是一个样板代码,您必须编写验证代码反正。