First of all, keep in mind that port forwarding works only if the server allows it - as this is a security relevant setting, it can be disabled at the server administrator's discretion.
 Furthermore, please find details about these options in OpenSSH's man pages:
  This connects via jump-server to app-server, uses your origin box's ssh-agent's keys to login to app-server, and establishes a tunnel from 127.0.0.1:8443 to app-server:443 (app-server is in this case 'localhost'). Accessing 127.0.0.1:8443 will yield whatever would be returned when accessing app-server:443.
 ssh -A -L 8443:localhost:443 -J user@jump-server user@app-server 
 This does the same, but leaves out the jump-server, fitting the second scenario you listed:
 ssh -L 8443:localhost:443 user@app-server 
 If this seems a little clumsy, having to specify ports to forward explicitly, try this:
 ssh -D 5050 -J user@jump-server,user@second-jump-server user@app-server ssh -D 5050 -J user@jump-server user@app-server ssh -D 5050 user@app-server 
 -D 5050 makes ssh start a SOCKS5 proxy that listens on localhost:5050 and forwards all traffic to the final destination host, app-server, in the examples given. The traffic is forwarded as if it was sent from app-server, DNS lookups can be passed on as well. For this to work, you need to set up your browser to use the SOCKS5 proxy.
 Adding -N will keep ssh from spawning a shell after login an will keep open the connection (and block) until CTRL+C is pressed or the connection is otherwise terminated.
 Update: All commands are supposed to be run from your workstation.
 If you lack SSH access to the app-server, try this:
 (1) ssh -L 8443:app-server:443 user@jump-server (2) ssh -D 5050 user@jump-server 
 with (1) you need to access https://localhost:8443, with (2) and a properly configured browser surf to https://app-server/.