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