You could do couple of things in terms of design to address these.
To start with you could cache data.
You could make interactions with database less chatty. You could highlight these type of decisions/optimizations that you have done
You could try to do some parts of the processing asynchronously. Example the page does some heavy updates, these updates can be written to a JMS queue, a MDB can then process these
You could do some multithreading although this is not recommended in
J2EE environment as you would want the
thread life cycles to be managed by container. In case of getting data in one call you could break it, retrieve data by spawning multiple threads & then merge data & return it.
You could highlight these as design decisions taken to address NFR. This information could also be provided in relevant sequence diagrams.