摘要:代碼展示出于演示我只構(gòu)造了只有個(gè)的,不過(guò)重點(diǎn)不在數(shù)量。以及在中最重點(diǎn)的用反射操作一些總結(jié)方法在對(duì)操作的時(shí)候應(yīng)該用利用的方法獲取到的是所以還要遍歷一次構(gòu)造一個(gè)類的動(dòng)態(tài)加載生成的確強(qiáng)大,以后會(huì)注意發(fā)掘更多的用途
為什么想這么做?
? 在用傳統(tǒng)Servlet做WEB項(xiàng)目的時(shí)候,涉及到構(gòu)造一個(gè)field極多的Bean的業(yè)務(wù),并且各個(gè)field類型不同,盡管在SpringMVC擁有屬性綁定的特性,可如果不使用框架,該如何簡(jiǎn)化這個(gè)操作呢?
怎么做?? 首先想到的是用一個(gè)Map將各個(gè)屬性put進(jìn)去,然后遍歷這個(gè)Map利用反射構(gòu)造屬性。
代碼展示? 出于演示我只構(gòu)造了只有3個(gè)field的Bean,不過(guò)重點(diǎn)不在數(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中最重點(diǎn)的用反射操作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()方法在對(duì)“ . ” 操作的時(shí)候應(yīng)該用“.”
利用request的getParameterMap()方法獲取到的是Map
map ,所以還要遍歷一次map構(gòu)造一個(gè)Map map 類的動(dòng)態(tài)加載生成的確強(qiáng)大,以后會(huì)注意發(fā)掘更多的用途
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/69422.html
摘要:是目前最流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。協(xié)議,是一個(gè)無(wú)狀態(tài)協(xié)議,即所有的狀態(tài)都保存在服務(wù)器端。而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化。具體說(shuō),就是協(xié)議里面,四個(gè)表示操作方式的動(dòng)詞。 一、SpringMVC概述 Spring為展現(xiàn)層提供的基于MVC設(shè)計(jì)理念的優(yōu)秀的Web框架,是目前最主流的MVC框架之一 Spring3.0之后全面超越Struts2,成為最優(yōu)秀的MVC框架 S...
摘要:從使用到原理學(xué)習(xí)線程池關(guān)于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實(shí)現(xiàn)在軟件開(kāi)發(fā)中,分散于應(yīng)用中多出的功能被稱為橫切關(guān)注點(diǎn)如事務(wù)安全緩存等。 Java 程序媛手把手教你設(shè)計(jì)模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經(jīng)風(fēng)雨慢慢變老,回首走過(guò)的點(diǎn)點(diǎn)滴滴,依然清楚的記得當(dāng)初愛(ài)情萌芽的模樣…… Java 進(jìn)階面試問(wèn)題列表 -...
摘要:哪吒社區(qū)技能樹(shù)打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁(yè)左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無(wú)意間聽(tīng)到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹(shù)打卡?【打卡貼 day2...
摘要:注解,以明確指出該類是配置的信息源注解會(huì)告知掃描指定的包來(lái)初始化這能夠確保我們聲明的能夠被發(fā)現(xiàn)。注解加載配置文件禁用特定的自動(dòng)配置注解等價(jià)于以默認(rèn)屬性使用,和。使用這個(gè)注釋將警告信息去掉。 @ConditionalOnBean 配置了某個(gè)特定Bean@ConditionalOnMissingBean 沒(méi)有配置特定的Bean@ConditionalOnClass Classpath里有指...
閱讀 2673·2021-11-11 16:54
閱讀 3671·2021-08-16 10:46
閱讀 3451·2019-08-30 14:18
閱讀 3045·2019-08-30 14:01
閱讀 2731·2019-08-29 14:15
閱讀 2016·2019-08-29 11:31
閱讀 3093·2019-08-29 11:05
閱讀 2597·2019-08-26 11:54