国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用反射及循環(huán)構(gòu)造Bean的一次實(shí)踐(仿springMVC數(shù)據(jù)綁定)

CatalpaFlat / 881人閱讀

摘要:代碼展示出于演示我只構(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();
            Map map=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

相關(guān)文章

  • SpringMVC學(xué)習(xí)筆記

    摘要:是目前最流行的一種互聯(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...

    roundstones 評(píng)論0 收藏0
  • Java深入-框架技巧

    摘要:從使用到原理學(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)題列表 -...

    chengtao1633 評(píng)論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強(qiáng))

    摘要:哪吒社區(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...

    Scorpion 評(píng)論0 收藏0
  • Spring 各種注解備注

    摘要:注解,以明確指出該類是配置的信息源注解會(huì)告知掃描指定的包來(lái)初始化這能夠確保我們聲明的能夠被發(fā)現(xiàn)。注解加載配置文件禁用特定的自動(dòng)配置注解等價(jià)于以默認(rèn)屬性使用,和。使用這個(gè)注釋將警告信息去掉。 @ConditionalOnBean 配置了某個(gè)特定Bean@ConditionalOnMissingBean 沒(méi)有配置特定的Bean@ConditionalOnClass Classpath里有指...

    hosition 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<