Si può fare; la pagina viene fornita tramite una richiesta GET, il bottone fa effettuare al browser una richiesta GET o una POST (a seconda di come è impostato il form) in cui viene specificato che è stato premuto il pulsante. A seconda della condizione che ti pare il tuo server può poi servire la pagina che preferisce in risposta.
In ogni caso, a meno di non essere in ambito embedded dove ogni byte di memoria è importante, non è una buona idea implementare ex-novo un server HTTP per questo genere di necessità, visto che implementare in maniera completa/corretta il protocollo HTTP (possibilmente senza avere codice pieno di falle di sicurezza) non è banalissimo (e comunque sarebbe reinventare la ruota per l'ennesima volta).
Quello che si fa normalmente, invece, è usare un webserver già pronto, abbinato o a linguaggi lato server gestiti direttamente come moduli del webserver (vedi Apache con mod_php, mod_ruby, mod_mono e compagnia), o tramite CGI (quando arriva una richiesta HTTP il webserver avvia un tuo eseguibile fornendogli i dati della richiesta) o FastCGI (analogo, ma il tuo eseguibile è sempre in esecuzione e i dati arrivano dal webserver via socket locale), in modo da disaccoppiare la logica di gestione delle richieste HTTP da quella specifica della tua applicazione.