`
qq663135128
  • 浏览: 8818 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

request 参数 bean 的封装

阅读更多

在编程中总要对bean操作,就免不了要封装bean了

 

private 私有变量 get set 方法。。

 

在web操作,总要做  String name=request.getParameter("name") ,

                              User user=new User();

                              user.setUserName(name);

比如还有很多属性,就很麻烦

 

现在很多框架也提供了formbean的功能

 

昨天在给同学写简单的系统没有框架的时候。。就很不爽了。写了好多。。

 

后来忍不下去了。就写了一个自动装载的uti类   

 

使用方法必须要 html里的表单项目的名称要和bean的名称一样

 

UserVo 类

 

public class UserVo implements Serializable {
 private static final long serialVersionUID = 1L;
 private String userName;
 private String password;

 public String getUserName() {
  return userName;
 }

 public void setUserName(String userName) {
  this.userName = userName;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }
}

 

servlet

 

部分代码

 比如我们就从页面封装user类

  

UserVo user=new UserVo();

//封装user                 true 就是打印出参数

ServletUtils.getValuesByRequest(request,user,true);

 

System.out.println(user.getUserName());

System.out.println(user.getPassword());

 

测试就直接输入url拉。。哈哈。没有页面

servlet?userName=abc&password=def

 

上边就有值了。

 

 

还可以把指定的属性不赋值  ,   就不会给User对象的 userName赋值

ServletUtils.getValuesByRequest(request,user,true,new String[]{"userName"});

 

如果html里的name和类的的属性不一样怎么把。。。添加一个map映射

 Map<String,String> map=new HashMap<String,String>();
 map.put("user","userName");
 ServletUtils.getValuesByRequest(request,user,true,null,map);

url变成这样

 servlet?user=abc&password=def

 

 

 

看线ServletUtils类把

 


public class ServletUtils {

 final static String preffix = "set";
 static StringBuffer sb = new StringBuffer();

 /**
  *
  * @author Xi@m MiNg 修改备注:
  *         把request中的值赋给Object对象,也就是把request中的parameter和object属性对应的时候
  *         把object中的属性赋值,使用标准的bean
  * @param  requestObject
  * @param  target 目标bean
  * @param  showDebug 在控制台打印参数
  * @return 封装之后的bean
  * @throws Exception
  */
 @SuppressWarnings("unchecked")
 public static Object getValuesByRequest(HttpServletRequest hsr,
   Object target, boolean showDebug) throws Exception {
  Enumeration<String> keys = hsr.getParameterNames();
  Map<String, String> valueMap = getValuesMap(hsr, keys);
  getObject(valueMap, target, null,null);
  // debug show
  if (showDebug) {
   showDebug(valueMap);
   sb = new StringBuffer();
  }
  return target;
 }


 /**
  *
  * @author Xi@m MiNg
  * @see    把request中的值赋给Object对象,也就是把request中的parameter和object属性对应的时候
  *         把object中的属性赋值,使用标准的bean
  * @param  requestObject
  * @param  target 目标bean
  * @param  unSetProperties 不复制的对象
  * @param  showDebug 在控制台打印参数
  * @return 封装之后的bean
  * @throws Exception
  */
 @SuppressWarnings("unchecked")
 public static Object getValuesByRequest(HttpServletRequest hsr,
   Object object, boolean showDebug, String[] unSetProperties)
   throws Exception {
  Enumeration<String> keys = hsr.getParameterNames();
  Map<String, String> valueMap = getValuesMap(hsr, keys);
  getObject(valueMap, object, unSetProperties,null);

  // debug
  if (showDebug) {
   showDebug(valueMap);
   sb = new StringBuffer();
  }
  return object;
 }

 /**
  *
  * @author Xi@m MiNg
  * @see    把request中的值赋给Object对象,也就是把request中的parameter和object属性对应的时候
  *         把object中的属性赋值,使用标准的bean
  * @param  requestObject
  * @param  target 目标bean
  * @param  unSetProperties 不复制的对象
  * @param  showDebug 在控制台打印参数
  * @return 封装之后的bean
  * @throws Exception
  */
 @SuppressWarnings("unchecked")
 public static Object getValuesByRequest(HttpServletRequest hsr,
   Object object, boolean showDebug, String[] unSetProperties,Map<String,String> proertiesMap)
   throws Exception {
  Enumeration<String> keys = hsr.getParameterNames();
  Map<String, String> valueMap = getValuesMap(hsr, keys);
  getObject(valueMap, object, unSetProperties,proertiesMap);

  // debug
  if (showDebug) {
   showDebug(valueMap);
   sb = new StringBuffer();
  }
  return object;
 }
 
 protected static Map<String, String> getValuesMap(
   HttpServletRequest hsr, Enumeration<String> keys) throws Exception {
  if (keys == null)
   return null;
  Map<String, String> value = new HashMap<String, String>();
  while (keys.hasMoreElements()) {
   String element = keys.nextElement();
   value.put(element, hsr.getParameter(element));
  }
  return value;
 }

 protected static Object getObject(Map<String, String> valueMap,
   Object object, String[] unSetProperties,Map<String,String> proertiesMap) throws Exception {
  List<String> unSet = null;
  if (unSetProperties != null)
   unSet=java.util.Arrays.asList(unSetProperties);
  if (valueMap == null)
   return null;
  for (Iterator<String> iter=valueMap.keySet().iterator();iter.hasNext();) {
   String key = iter.next();
   if (unSet != null && unSet.contains(key)) {
    continue;
   }
   String methodValue = valueMap.get(key);
   if(proertiesMap!=null && proertiesMap.containsKey(key)){
    key=proertiesMap.get(key);
   }
   if (methodValue != null)
    setValue(object, key, methodValue);
  
  }
  return object;
 }

 protected static void setValue(Object obj, String name, String value)
   throws Exception {
  Field field = null;
  try {
   field = obj.getClass().getDeclaredField(name);
  } catch (Exception e) {
   return;
  }
  if (field == null) {
   return;
  }
  Method method = obj.getClass().getDeclaredMethod(
    getSetMethodName(name), field.getType());
  method.invoke(obj, value);
  sb.append(name).append(" - ");
 }

 protected static String getSetMethodName(String methodName) {
  String first = methodName.substring(0, 1);
  String suffex = methodName.substring(1);
  return (preffix + first.toUpperCase() + suffex).toString();
 }
 


 public static void showDebug(Map<String, String> valueMap) {
  for (Iterator<String> iter=valueMap.keySet().iterator();iter.hasNext();) {
   String key = iter.next();
   System.out.println("paramterName : " + key + "  value: "
     + valueMap.get(key));
  }
  System.out.println("theSetValueProperties: " + sb.toString());
 }
}

 

 

 

 

 

 

 

 

分享到:
评论
1 楼 ilywmf 2012-12-28  
不错,谢谢,就是bean为日期类型的得自己搞。

相关推荐

    Android-对OkHttp进行简单的封装基本实现简单的网络post请求进行Gson处理直接返回Bean

    本文将详细讲解如何对OkHttp进行简单的封装,以便于进行网络POST请求,并使用Gson库解析JSON数据,直接返回Java Bean对象。同时,也会涉及多文件上传、参数提交以及文件下载的进度回调。 首先,我们要理解OkHttp的...

    JspServletBean example

    在Web应用中,Bean常被用来封装用户数据并在多个请求间共享。例如,一个用户信息Bean可能包含用户名、密码等属性,并提供对应的get和set方法。 接下来,我们看看如何在Servlet中创建和使用Bean。在Servlet的`doGet`...

    JSF 资源 managed bean 课件

    - **Request Scope**:每个HTTP请求都会创建一个新的Bean实例。 - **Session Scope**:对于每个用户的会话,创建一个Bean实例。 - **Application Scope**:在整个应用范围内共享一个Bean实例。 - **View Scope**:为...

    Bean标签库,用法及实例说明

    `bean:parameter`标签用于获取HTTP请求参数,并将其封装到一个JavaBean中。例如: ```jsp &lt;bean:parameter id="param1" name="param1" /&gt; &lt;bean:parameter id="param2" name="param2" multiple="true" /&gt; // 处理多...

    Spring MVC不能直接接收list类型参数的问题

    ### Spring MVC 无法直接接收 List ...这些方法分别通过调整 jQuery 的序列化设置、创建封装对象以及使用 `@RequestBody` 注解来解决该问题。开发者可以根据实际项目需求选择合适的方法来实现前后端数据的有效交互。

    JAVA bean 技术.JSP

    5. **无参构造器**:每个Java Bean都应该有一个无参数的构造器,以便在没有特定初始化参数的情况下创建对象。 当Java Bean被重新编译后,需要重启服务器才能使改动生效。不过,通过在Tomcat的`server.xml`配置文件...

    JSF参数传递doc

    JSF 提供了多种方法来处理参数传递,包括使用`&lt;f:param&gt;`标签、Managed Bean的属性绑定以及共享Request Beans等。 1. **使用 `&lt;f:param&gt;` 标签传递参数**: 这是最基础的传递参数方式,常用于链接或按钮的点击事件...

    在 JSP/Servlet 中使用 Bean 自动属性填充机制

    在Servlet中,我们可以使用`request.getParameter()`方法获取请求参数,然后通过Bean的setter方法将这些参数值设置到Bean中。在JSP中,我们可以通过以下方式实现自动属性填充: ```jsp *" /&gt; ``` 这里的`...

    00000030_bean-page的用法.rar

    Bean通常指的是JavaBeans,是Java编程语言中的一个设计模式,用于封装数据和业务逻辑。Page则更多地与Web页面的呈现和交互有关。在本篇文章中,我们将深入探讨Bean-page的用法,以及如何在实际项目中有效地利用它们...

    Use-JSP-Bean.zip_site:www.pudn.com

    这里,`&lt;jsp:setProperty&gt;`将请求参数"myParam"的所有属性值映射到Bean的相应属性,而`&lt;jsp:getProperty&gt;`则输出Bean的"myAttribute"属性值。 5. **JSP表达式语言(EL)** 除了使用JSP标签,还可以使用JSP表达式...

    jsp Bean 简单应用

    在 JSP(JavaServer Pages)中,JavaBean 被用来封装业务逻辑,使得页面设计者可以专注于页面展示,而开发者则可以专注于后端处理。本篇文章将详细介绍如何在 JSP 中使用 JavaBean,以及相关的配置过程。 ### 1. ...

    java+bean分页技术

    Java Bean在IT行业中被广泛用于封装业务逻辑和数据,它为Java Server Pages(JSP)提供了数据模型。在本主题“java + bean 分页技术”中,我们将深入探讨如何利用Java Bean实现高效的分页功能,这在处理大量数据时...

    SpringMVCr接收表单bean示例

    `SpringMVC接收表单bean示例`是一个具体的应用场景,它演示了如何使用Spring MVC来优雅地处理前端提交的表单数据,并通过Java Bean进行封装。在这个示例中,结合了Spring MVC与Hibernate,提供了一个完整的后端数据...

    jsp java bean

    **标题:“jsp java bean”** **内容概要:** 本项目是基于JSP和JavaBean技术构建的一个电子商务系统,主要用于实现购书流程,包括用户注册、浏览书籍、选择书籍以及下单购买等功能。JSP(JavaServer Pages)是Java...

    Java JSP and Bean CRUD.zip

    - **Session和Request作用域**:在JSP和Bean之间传递数据时,可能会用到session或request对象来存储和检索Bean实例。 总之,“Java JSP and Bean CRUD.zip”项目提供了学习和实践JSP与Bean结合进行CRUD操作的实例。...

    基于JSP+Servlet+Bean的超市账单管理系统

    在超市账单管理系统中,Servlet充当了控制器的角色,接收JSP发送过来的请求,解析请求参数,调用对应的Bean方法处理业务逻辑,然后将处理结果返回给JSP,最终由JSP展示给用户。Servlet通过`doGet`和`doPost`方法处理...

    HttpClient封装工具

    首先,需要在配置类中定义一个HttpClient实例,配置连接池、超时时间等参数。然后,可以创建一个HTTP请求执行器(例如`CloseableHttpClient`),并将其注入到需要发送HTTP请求的服务中。 3. **创建HttpClient Bean*...

    bean的使用

    在Java Web开发中,Bean是一种常见且重要的组件,主要用于封装数据和业务逻辑。在本例中,我们讨论的是如何在JSP(JavaServer Pages)中使用Bean。JSP是Java Web开发的一种视图技术,它允许我们在HTML页面中嵌入Java...

    Struts标签-bean标签-源代码

    4. `&lt;bean:remove&gt;`:此标签用于从JSP作用域(page, request, session, application)中移除一个JavaBean。 ```jsp &lt;bean:remove name="myBean" scope="session" /&gt; ``` 5. `&lt;bean:message&gt;`:这个标签用于获取...

    一个完整的上传文件bean.rar_bean_上传文件

    "bean"在这里通常指的是Java Bean,它是Java编程中的一个概念,用于封装数据和业务逻辑。本主题涉及的是如何在Windows环境下使用Java Bean实现文件上传的功能。 首先,让我们深入理解Java Bean。Java Bean是一种...

Global site tag (gtag.js) - Google Analytics