javaEE之-----------类反射直接封装前台传过来的参数

在JavaEE  WEB中,我们收集form表单传过来的数据,通常是采用值对象的方式,一一去获取,封装,然后将值对象传到后台进行使用。

如:

<span style="font-size:18px;">                String name=request.getParameter("name");
		String pwd=request.getParameter("pwd");
		String id =request.getParameter("id");
		User user =new User();
		user.setUid(id);
		user.setName(name);
		user.setPwd(pwd);</span>

每次都这样很麻烦,现在我们有了新的技术

采用这两个包就可以实现。

<span style="font-size:18px;">	public void login(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		Map<String, String[]> map=req.getParameterMap();
		User user = BeanUtils.populate(User.class, map);
		System.out.println(user);</span>

在servlet中我们就只需要调用一下就可以做到,User值对象中,我们前台有的参数就能set,没有的也可以不用理会。

但是我们采用这个需要注意:前台页面代码<input type="text" name="name"/>这个参数一定要对上,和值对象中的要一致,不然会不成功,因为在类反射中,我们都是得到变量名,再去调用set+变量名一个大写进行设置的。

<span style="font-size:18px;">public class BeanUtils {
	public static <T>T populate(T t,Map<String,String[]> map){
		try{
			org.apache.commons.beanutils.BeanUtils.populate(t,map);
			return t;
		}catch(Exception e){
			throw new RuntimeException(e.getMessage(),e);
		}
	}
	public static <T>T populate(Class<T> cls,Map<String,String[]> map){
		try{
			T t = cls.newInstance();
			return populate(t, map);
		}catch(Exception e){
			throw new RuntimeException(e.getMessage(),e);
		}
	}</span>

上面用到了两个包,只需要将这个相应的参数传过来,我们就可以进行相应的封装(其实用到的就是类反射)

两个包下载地址

时间: 2024-10-12 16:02:00

javaEE之-----------类反射直接封装前台传过来的参数的相关文章

前台传参到后台出现中文乱码问题

方法一:在xml文件中添加字符集过滤 SpringEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true SpringEncodingFilter /* 方法二:在代码中转换格式 key为前台传过来的参数 String str = new String(key.getBytes("iso-8859-1"),"UTF-8&quo

如何利用缓存机制实现JAVA类反射性能提升30倍

一次性能提高30倍的JAVA类反射性能优化实践 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第4期-支付结算部支付研发团队高级工程师陶红<JAVA类反射技术&优化> 分享者:宜信支付结算部支付研发团队高级工程师陶红 原文首发于宜信支付结算技术团队公号:野指针 在实际工作中的一些特定应用场景下,JAVA类反射是经常用到.必不可少的技术,在项目研发过程中,我们也遇到了不得不运用JAVA类反射技术的业务需求,并且不可避免地面临这个技术固有的性能瓶颈问题. 通过近两年的研究.尝

Java 类反射机制分析

一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 在Java中的反射机制,被称为Reflection.(大家看到这个单词,第一个想法应该就是去开发文档中搜一下了.)它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法.Reflection机制

Ajax从前台传json串给springmvc接收的一些坑

加班是为了不加班. 从前台传了两个参数过去,包装成: {"user":{"name":"asd","age":22}} springmvc形参这样: public void test(@RequestBody User user){ ...... } 接收不到,属性总是显示为空,后来这样 {"name":"asd","age":22} 解决问题.看来User类中没有其

类 反射

# 对象 = 类名() # 过程: # 类名() 首先 会创造出一个对象,创建了一个self变量 # 调用init方法,类名括号里的参数会被这里接收 # 执行init方法 # 返回self # 对象能做的事: # 查看属性 # 调用方法 # __dict__ 对于对象的增删改查操作都可以通过字典的语法进行 # 类名能做的事: # 实例化 # 调用方法 : 只不过要自己传递self参数 # 调用类中的属性,也就是调用静态属性 # __dict__ 对于类中的名字只能看 不能操作 # @proper

springMVC接收前台传的日期

当前台传数据给spring的control时,如果后台方法的参数或参数对象的对应属性是基本类型或者string类型时,前台值自动的注入到后台方法参数或对象属性中.如果方法参数或对象属性不是基本类型或string,比如是date类型,则不能直接赋值. 解决方法有一下三种: 一.使用注解 1.在springmvc配置文件中开启注解<mvc:annotation-driven /> 2.在参数或对象属性上添加注解 如:如果是date类型可以添加@DateTimeFormat(pattern = &q

ffmpeg学习4--ffmpeg类的简单封装,包含解码和定时录像功能

ffmpeg学习4--ffmpeg类的简单封装,包含解码和定时录像功能 参考网上的资料,简单封装了一下ffmpeg,这里记录一下,其它传感器编码及项目中用到的已经抽离,这里只包含解码和录像部分.这只是个玩具级别的测试.完整测试代码下载:代码下载 ffmpegDeCode.h #pragma once #include "stdafx.h" #include<iostream> using namespace std; extern char *VideoPath; exte

js上传文件带参数,并且,返回给前台文件路径,解析上传的xml文件,存储到数据库中

ajaxfileupload.js jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '&qu

java高级值类反射

 类反射 类反射,这是属于java高级的技术了,如果把这个学好了,那么你的java学习之路就上了一个台阶了. 一.什么是类反射? 1.JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调           用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制. 2.反射(Reflection)是Java程序开发语言的特征之一,它允许运行中的Java程序对自身进行检查, 也称自审,并能直接操作