jsp + servlet 提交表单封装??

小小的夏 发布于 2013/01/27 23:33
阅读 1K+
收藏 1

jsp+ servlet  

jsp 提交表单时,表单有很多字段(XXX,XXX...),

servlet 接收的时候不想一个个request.getAttribute("XXX")获取,

有没有什么简便的 封装成一个对象(new   getter...  setter...),

jsp 提交的时候是一个对象(new),就像struts那些框架一样简便的.

servlet接收一个对象(new),等用到是从对象取就可以了.

加载中
0
布谷鸟
布谷鸟

首先反射一个实体类,得到该类的字段数组

Fielsd[] fields = Class.forName("实体类路径").getFields();

然后使用request.getParameterMap()方法遍历post过来的参数和值,并在过程中匹配到fields中的字段(参照API获取字段的名称、反射赋值及取值,过程做一遍便知)

最后,赋值完成的对象即是你需要的,封装好的,包含页面传递过来值的实体对象

华兹格
华兹格
+1
0
逝水fox
逝水fox

通过Apache Commons BeanUtils将请求参数直接封装给一个Bean

可以用BeanUtils和Request做关键字Google一下。实际的原理如楼上。

0
Apaul
Apaul

提交的值是key-value形式的,用map封装也不错,方法如下

public Hashtable getFormData(ServletRequest request) {
    Hashtable hFormData = new Hashtable();
    
    System.out.println("<Roam> Getting Form's Data");
    
    // Retrieve the parameters from the HttpServletRequest...
    Enumeration eFormDataKeys = request.getParameterNames();
    
    if (eFormDataKeys != null) {
      
      while (eFormDataKeys.hasMoreElements()) {
        String sCurrentKey = (String) eFormDataKeys.nextElement();
        
        String[] sUserValues = request.getParameterValues(sCurrentKey);
        
        if (sUserValues != null) {
          StringBuffer buffer = new StringBuffer(sUserValues[0]);
          
          if (sUserValues.length == 1) {
            hFormData.put(sCurrentKey, sUserValues[0]);
//System.out.println( sCurrentKey + " : " + sUserValues[0] );
          } else {
            
            for (int i = 1; i < sUserValues.length; i++){
              buffer.append(", ").append(sUserValues[i]);
            }
//System.out.println( sCurrentKey + " : " + buffer.toString() );
            
            hFormData.put(sCurrentKey, sUserValues);
          }
        }
      }
    }
    
    return hFormData;
  }

返回顶部
顶部