摘要:代碼展示出于演示我只構(gòu)造了只有個的,不過重點不在數(shù)量。以及在中最重點的用反射操作一些總結(jié)方法在對操作的時候應(yīng)該用利用的方法獲取到的是所以還要遍歷一次構(gòu)造一個類的動態(tài)加載生成的確強大,以后會注意發(fā)掘更多的用途
為什么想這么做?
? 在用傳統(tǒng)Servlet做WEB項目的時候,涉及到構(gòu)造一個field極多的Bean的業(yè)務(wù),并且各個field類型不同,盡管在SpringMVC擁有屬性綁定的特性,可如果不使用框架,該如何簡化這個操作呢?
怎么做?? 首先想到的是用一個Map將各個屬性put進去,然后遍歷這個Map利用反射構(gòu)造屬性。
代碼展示? 出于演示我只構(gòu)造了只有3個field的Bean,不過重點不在數(shù)量。
? Person.java
public class Person { private String name; private Integer price; private String love; public String getName() { return name; } @Override public String toString() { return "Person{" + "name="" + name + """ + ", price=" + price + ", love="" + love + """ + "}"; } public void setName(String name) { System.out.println("----------------------------"); this.name = name; } public int getPrice() { return price; } public void setPrice(Integer price) { this.price = price; } public String getLove() { return love; } public void setLove(String love) { this.love = love; } }
以及在Servlet中最重點的用反射操作Bean
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class Bean extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { Map maps= req.getParameterMap(); Mapmap=new HashMap (); Iterator iterator=maps.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry entry= (Map.Entry) iterator.next(); String key= (String) entry.getKey(); map.put(key,req.getParameter(key)); } Person person= (Person) build(Person.class,map); System.out.println(person); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } public static Object build(Class clz,Map fieldMap) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException { Field[] fields=clz.getDeclaredFields(); Object obj=clz.newInstance(); Object value=null; for (int i=0;i 一些總結(jié) String.split()方法在對“ . ” 操作的時候應(yīng)該用“.”
利用request的getParameterMap()方法獲取到的是Map
map ,所以還要遍歷一次map構(gòu)造一個Map map 類的動態(tài)加載生成的確強大,以后會注意發(fā)掘更多的用途
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69422.html
摘要:是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。協(xié)議,是一個無狀態(tài)協(xié)議,即所有的狀態(tài)都保存在服務(wù)器端。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化。具體說,就是協(xié)議里面,四個表示操作方式的動詞。 一、SpringMVC概述 Spring為展現(xiàn)層提供的基于MVC設(shè)計理念的優(yōu)秀的Web框架,是目前最主流的MVC框架之一 Spring3.0之后全面超越Struts2,成為最優(yōu)秀的MVC框架 S...
摘要:從使用到原理學(xué)習(xí)線程池關(guān)于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實現(xiàn)在軟件開發(fā)中,分散于應(yīng)用中多出的功能被稱為橫切關(guān)注點如事務(wù)安全緩存等。 Java 程序媛手把手教你設(shè)計模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經(jīng)風(fēng)雨慢慢變老,回首走過的點點滴滴,依然清楚的記得當(dāng)初愛情萌芽的模樣…… Java 進階面試問題列表 -...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
摘要:注解,以明確指出該類是配置的信息源注解會告知掃描指定的包來初始化這能夠確保我們聲明的能夠被發(fā)現(xiàn)。注解加載配置文件禁用特定的自動配置注解等價于以默認(rèn)屬性使用,和。使用這個注釋將警告信息去掉。 @ConditionalOnBean 配置了某個特定Bean@ConditionalOnMissingBean 沒有配置特定的Bean@ConditionalOnClass Classpath里有指...
閱讀 2677·2021-11-11 16:54
閱讀 3679·2021-08-16 10:46
閱讀 3456·2019-08-30 14:18
閱讀 3051·2019-08-30 14:01
閱讀 2735·2019-08-29 14:15
閱讀 2025·2019-08-29 11:31
閱讀 3099·2019-08-29 11:05
閱讀 2602·2019-08-26 11:54