How to make a player drop an item when hit

Solution 1:

You could have them via command blocks equip a piece of armour with half a hitpoint on it, so when they get hit the armour breaks, this could trigger the "clear" command to remove the item, and then spawn @players feet the item in question

Solution 2:

You can delete the item there holding if they get it, and you can make them drop the item if you know what item there holding. To do this you need a scoreboard objective testing for when they get hit,

/scoreboard objectives add damage stat.damageTaken

Then in command block do,

/testfor @a[score_damage_min=1]

Then a comparator coming out of that into a command block do,

/replaceitem entity @a slot.weapon.mainhand air

Then with a repeater coming out of that into a command block,

/scoreboard players reset @a damage

Though if you know what item there holding add before the scoreboard reset do,

/execute @a[score_damage_min=1] ~ ~ ~ /summon Item ~ ~ ~ {PickupDelay:60s,Item:{id:"minecraft:grass"},Motion:[0.2,0.5,0.2]}

And replace "grass" in minecraft:grass with the item you want dropped.