Visto en forma aislada debería funcionar
    
Código HTML:
Ver original<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> $(document).ready(function() {
    $("#btn").click(function(e){
        e.preventDefault();
        $.ajax({
            url:'ServletMensaje',
            type:'post',
            success:function(msg){
                $("#respuesta").html(msg);
            }
        });
    });
});
 
<form action="" method="post">     <input type="submit" value="leer" id="btn">  
<div id="respuesta">Contenido
</div> 
  
Por supuesto yo no sé de java ni como responde dicho archivo, para mi prueba yo solo cree un archivo de texto llamado 'ServletMensaje' y le puse un contenido, el cual fué recuperado en el div.
Probablemente debas agregar el parámetro 
      dataType: "text", a tu ajax ó 
      dataType: "html",
con lo cual está indicando que tipo de respuesta esperas (desde un php ó un html es html)pero en caso de un .java supongo que no, es decir    
Código Javascript
:
Ver original$.ajax({
            url:'ServletMensaje',
            type:'post',
            dataType: 'html',
            success:function(msg){
                $("#respuesta").html(msg);
            }
        });
  
Pero claro, no tengo forma de probarlo 
Veo que has optado por $ajax en lugar de $load ó $post, pero tampoco veo parámetros a pasar. Por lo que esto    
lo podés simplificar con
<button id="btn">Leer</button>
ó cualquier otro elemento semanticamente correcto que lleve por id "btn" 
Y detalle final, a los efectos de $ajax no creo que sea lo mismo definir la url como 
'ServletMensaje'
que como 
'ServletMensaje.java'
Pero bueno, eso ya es tu especialidad 
Saludos