Good strat's to aim for holding a line at forests/chokepoints, with one line of infantry and two lines of cannons behind them
Have a two small cooridoors near the edges of your line to funnel infantry on the front line
Whenever one infanatry gets killed, shuffle the rest of your infantry to fill the gap, then use bring a reinforcement up from the cooridor to patch up the final gap
Because the cannons and supporting infantry boost the probability in your favor, the time it takes for the opponent to kill one of your units is is much higher than your ability to build and send reinforcements, especially against the AI because they don't coordinate attacks at all
Just slow push, snipe cannons when possible, and push the opposing line to where they can't reinforce their cities as you siege them